curl --request POST \
--url https://app.stockshift.io/mcp \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "<string>"
}
'import requests
url = "https://app.stockshift.io/mcp"
payload = {
"jsonrpc": "2.0",
"method": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.stockshift.io/mcp",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'jsonrpc' => '2.0',
'method' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.stockshift.io/mcp"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"jsonrpc": "2.0",
"method": "<string>",
"id": "<unknown>",
"params": {}
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "<string>",
"detail": "<string>",
"errors": {},
"feature": "<string>",
"reason": "<string>",
"attempts_left": 123,
"rule_ids": [
"<string>"
],
"witness": "<string>",
"blind_recount": true,
"flags": [
{
"flag": "<string>",
"facts": {},
"choices": [
"<string>"
]
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "<string>",
"detail": "<string>",
"errors": {},
"feature": "<string>",
"reason": "<string>",
"attempts_left": 123,
"rule_ids": [
"<string>"
],
"witness": "<string>",
"blind_recount": true,
"flags": [
{
"flag": "<string>",
"facts": {},
"choices": [
"<string>"
]
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "<string>",
"detail": "<string>",
"errors": {},
"feature": "<string>",
"reason": "<string>",
"attempts_left": 123,
"rule_ids": [
"<string>"
],
"witness": "<string>",
"blind_recount": true,
"flags": [
{
"flag": "<string>",
"facts": {},
"choices": [
"<string>"
]
}
]
}Appeler le serveur MCP
Pointez un client MCP, comme un assistant IA, vers cette adresse et il pourra travailler dans StockShift par HTTP Streamable. Le client se connecte avec OAuth (le schéma oauth2) et chaque outil s’exécute en tant que le membre qui l’a connecté, avec seulement les portées qu’il a approuvées. Un outil fait exactement ce que fait le même bouton dans l’application, de sorte que les autorisations, les limites du forfait et la piste d’audit s’appliquent comme elles le feraient au membre. Un échec revient sous forme d’erreur d’outil avec les mêmes détails du problème que cette API envoie. Le forfait de l’organisation doit inclure la fonctionnalité developer.mcp. Appelez tools/list pour voir ce que le membre peut utiliser; ce sont tous les outils du serveur.
| Outil | Ce qu’il fait |
|---|---|
catalog_show_item | Consulter un article |
insights_run_saved_report | Exécuter un rapport |
inventory_change_stock_status | Changer le statut du stock |
inventory_create_stock_transfer | Créer un transfert de stock |
inventory_show_stock | Consulter les niveaux de stock |
manufacturing_release_build | Lancer un ordre de fabrication |
manufacturing_show_build | Consulter un ordre de fabrication |
purchasing_create_purchase_order | Créer un bon de commande |
purchasing_send_purchase_order | Envoyer un bon de commande au fournisseur |
purchasing_show_purchase_order | Consulter un bon de commande |
sales_confirm_sales_order | Confirmer une commande client |
sales_reserve_sales_order | Réserver du stock pour une commande client |
sales_send_invoice | Envoyer une facture par courriel au client |
sales_show_sales_order | Consulter une commande client |
curl --request POST \
--url https://app.stockshift.io/mcp \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "<string>"
}
'import requests
url = "https://app.stockshift.io/mcp"
payload = {
"jsonrpc": "2.0",
"method": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.stockshift.io/mcp",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'jsonrpc' => '2.0',
'method' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.stockshift.io/mcp"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"jsonrpc": "2.0",
"method": "<string>",
"id": "<unknown>",
"params": {}
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "<string>",
"detail": "<string>",
"errors": {},
"feature": "<string>",
"reason": "<string>",
"attempts_left": 123,
"rule_ids": [
"<string>"
],
"witness": "<string>",
"blind_recount": true,
"flags": [
{
"flag": "<string>",
"facts": {},
"choices": [
"<string>"
]
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "<string>",
"detail": "<string>",
"errors": {},
"feature": "<string>",
"reason": "<string>",
"attempts_left": 123,
"rule_ids": [
"<string>"
],
"witness": "<string>",
"blind_recount": true,
"flags": [
{
"flag": "<string>",
"facts": {},
"choices": [
"<string>"
]
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "<string>",
"detail": "<string>",
"errors": {},
"feature": "<string>",
"reason": "<string>",
"attempts_left": 123,
"rule_ids": [
"<string>"
],
"witness": "<string>",
"blind_recount": true,
"flags": [
{
"flag": "<string>",
"facts": {},
"choices": [
"<string>"
]
}
]
}Autorisations
Pour les applications que d'autres personnes connectent à leur compte StockShift. Utilisez le flux du code d'autorisation OAuth 2.1 avec PKCE (S256); il n'y a pas de secret client. Découvrez les points de terminaison à /.well-known/oauth-authorization-server (RFC 8414) et enregistrez votre application à POST /oauth/register (RFC 7591). Le membre choisit l'organisation et approuve les portées sur la page de consentement, et le jeton ne peut jamais faire plus que ce que le membre pourrait faire. Envoyez-le sous la forme Authorization: Bearer <token>, comme vous le feriez avec une clé d'API. Les jetons d'accès durent une heure; chaque actualisation renvoie un nouveau jeton d'actualisation, alors conservez-le.
Corps
Un message JSON-RPC 2.0 du Model Context Protocol : une requête, une notification ou une réponse.
La version de JSON-RPC. Toujours 2.0.
2.0 La méthode MCP à appeler, par exemple initialize, tools/list ou tools/call.
L'id de la requête, un nombre ou une chaîne, que la réponse répète. Absent dans une notification.
Les paramètres de la méthode. Un appel d'outil nomme l'outil et ses arguments.
Réponse
La réponse JSON-RPC, en JSON ou en flux d'événements envoyés par le serveur.
Un message JSON-RPC 2.0 du Model Context Protocol : une requête, une notification ou une réponse.
La version de JSON-RPC. Toujours 2.0.
2.0 La méthode MCP à appeler, par exemple initialize, tools/list ou tools/call.
L'id de la requête, un nombre ou une chaîne, que la réponse répète. Absent dans une notification.
Les paramètres de la méthode. Un appel d'outil nomme l'outil et ses arguments.
Cette page vous a-t-elle été utile ?