Enveloppe de réponse
Les outils renvoient un court texte lisible et des données structurées :request_id pour signaler un problème. Les arguments MCP, textes de messages client, recherches de transcription et clés d’idempotence ne sont jamais envoyés aux logs applicatifs ni à Sentry.
Pagination et limites
- Les listes renvoient 20 éléments par défaut, 50 maximum.
- Les curseurs sont opaques. Ne les analysez pas, ne les modifiez pas et ne les réutilisez pas avec d’autres filtres.
- Le détail d’une conversation accepte 100 messages maximum.
- Les analytics acceptent huit métriques et 366 jours maximum.
- La sortie structurée est limitée à 128 Kio, le résumé texte à 4 Kio.
- Chaque outil de lecture accepte 1 000 appels par minute et par couple client/utilisateur OAuth ; chaque outil d’écriture en accepte 500.
- Les lectures standard expirent après 15 secondes, les analytics après 30 secondes et les mutations restaurant après 20 secondes.
meta.next_cursor est présent, transmettez-le inchangé au même outil avec les mêmes filtres.
Préconditions d’écriture optimiste
Les outils qui modifient un état exigent la valeur précédemment observée. Exemple :MCP_EXPECTED_STATE_MISMATCH ou ORDER_STATUS_PRECONDITION_FAILED. Rechargez la ressource, réévaluez le changement, puis seulement ensuite réessayez.
Idempotence
Les outils externes de message, d’instruction, de création d’organisation et de création de restaurant exigent uneidempotency_key de 8 à 255 caractères. La clé est scoped par client OAuth, utilisateur délégué et outil.
- La même clé avec les mêmes arguments rejoue le résultat conservé pendant 24 heures.
- La même clé avec d’autres arguments renvoie
MCP_IDEMPOTENCY_MISMATCH. - Un doublon concurrent renvoie
MCP_OPERATION_IN_PROGRESSavec un délai conseillé. - Les clés brutes sont hashées avant stockage Redis et ne sont jamais loggées.
Contrat d’erreur
Les erreurs d’outil définissentisError: true et renvoient :
validation, authentication, authorization, not_found, conflict, rate_limit, timeout, dependency et internal.