isError: true.
Op HTTP-niveau
Deze vallen buiten de MCP-envelop; een MCP-clientbibliotheek verheft ze doorgaans tot transportfouten.
Tool-errors
Een mislukte toolcall is een normale JSON-RPC-success waarvan het resultaatisError: true, één tekstblok en geen structuredContent heeft:
Er wordt niets anders van de onderliggende fout blootgelegd: geen stacktraces, SQL, upstream-responses of interne IDs. Elk verzoek wordt server-side gelogd met de
x-request-id die op de HTTP-response wordt geëchood; noem die als je contact opneemt met support.
Codes
Retries
Reads (readOnlyHint: true) zijn veilig om opnieuw te proberen na TIMEOUT, UPSTREAM_UNAVAILABLE of INTERNAL_ERROR, met backoff.
Writes liggen anders. create-discount-code en create-payment-link zijn gemarkeerd als idempotentHint: false en hebben geen idempotency key. Een TIMEOUT wordt teruggegeven als de 30-secondenbegroting op is, wat kan gebeuren nadat de rij is gecommit — de code of link bestaat mogelijk al. Voordat je een write opnieuw probeert:
list-discount-codesen zoek naar de code, oflist-payment-linksgefilterd op filiaal en zoek naar de titel/referentie.- Roep de write alleen opnieuw aan als hij afwezig is.
retryable vandaag op elke code false: de server weet niet of jouw write is doorgekomen, dus zegt hij je niet om opnieuw te proberen.
Validatiefouten van je client
Omdat errors geenstructuredContent dragen, slaan spec-compliant clients (waaronder de officiële TypeScript SDK) output-schema-validatie op hen over en tonen ze de envelop. Als je client in plaats daarvan een -32602 of “structured content does not match schema”-fout meldt, valideert hij de tekst tegen de outputSchema van de tool; lees het tekstblok direct.