Skip to main content
I fallimenti emergono a due livelli. I problemi di autenticazione, origin e rate-limit vengono rifiutati prima di MCP, come normali risposte HTTP. Tutto ciò che accade all’interno di una chiamata a uno strumento torna come risultato dello strumento MCP con isError: true.

Livello HTTP

Questi sono al di fuori dell’envelope MCP; una libreria client MCP tipicamente li solleva come errori di trasporto.

Errori dello strumento

Una chiamata fallita a uno strumento è un normale successo JSON-RPC il cui risultato ha isError: true, un singolo blocco di testo e nessun structuredContent:
Fai il parse del testo come JSON per ottenere: Nient’altro del fallimento sottostante viene esposto: nessuna stack trace, SQL, risposte upstream o ID interni. Ogni richiesta viene loggata lato server con l’x-request-id echeggiato sulla risposta HTTP; citalo quando contatti il supporto.

Codici

Retry

Le letture (readOnlyHint: true) sono sicure da riprovare dopo TIMEOUT, UPSTREAM_UNAVAILABLE o INTERNAL_ERROR, con backoff. Le scritture sono diverse. create-discount-code e create-payment-link sono marcate idempotentHint: false e non hanno un idempotency key. Un TIMEOUT viene restituito quando il budget di 30 secondi si esaurisce, il che può accadere dopo che la riga è stata committata: il codice o il link potrebbero già esistere. Prima di riprovare una scrittura:
  1. Chiama list-discount-codes e cerca il codice, oppure list-payment-links filtrato per locale e cerca il titolo/reference.
  2. Richiama la scrittura solo se è assente.
Non riprovare mai le scritture automaticamente. È per questo che retryable è false su ogni codice oggi: il server non sa se la tua scrittura è andata a buon fine, quindi non ti dice di riprovare.

Errori di validazione dal tuo client

Poiché gli errori non hanno structuredContent, i client conformi alla specifica (incluso l’SDK ufficiale TypeScript) saltano la validazione dell’output schema su di essi e mostrano l’envelope. Se il tuo client segnala invece un -32602 o “structured content does not match schema”, sta validando il testo contro l’outputSchema dello strumento; leggi direttamente il blocco di testo.