Skip to main content
Chaque appel d’outil réussi renvoie une enveloppe, livrée deux fois dans le résultat MCP : comme structuredContent, et comme texte JSON du premier bloc content. Lis celle que ton client expose ; elles sont identiques. Chaque outil publie un outputSchema correspondant, ce qui permet à un client conforme à la spec de valider structuredContent contre lui.

data

  • Les outils list renvoient data.results, un tableau.
  • Les outils detail (get-venue, get-order, get-menu, get-payment-link, get-order-stats, les deux écritures) renvoient l’enregistrement lui-même dans data.
  • get-snooze-report renvoie ensemble un résumé, une série temporelle et un tableau paginé items.
  • Les champs sont autorisés au cas par cas par ressource. Tout ce qui n’est pas dans l’outputSchema d’un outil n’est jamais envoyé, quel que soit le contenu de l’enregistrement sous-jacent.

meta

meta est strict : aucune clé non documentée n’apparaît, et les nouvelles clés arrivent avec un incrément de version.

Pagination

Les pages commencent à 1. limit est plafonné à 100 (25 pour list-top-products) et silencieusement réduit si tu demandes plus. hasMore et nextPage viennent de la récupération d’une ligne au-delà de la page, donc ils sont toujours exacts. total est null quand l’outil ne compte pas, et peut être signalé totalIsEstimate: true sur les grandes listes de commandes où un décompte exact est trop lent. Pilote les boucles à partir de hasMore, pas de total :
Les listes sont live ; un enregistrement créé entre deux pages peut décaler les pages suivantes.

Dates et fuseaux horaires

Les entrées (from, to) acceptent au choix :
  • YYYY-MM-DD : une date calendaire locale dans le fuseau horaire effectif, inclusive aux deux extrémités (to: "2026-09-18" va jusqu’à 23:59:59.999 ce jour-là) ; ou
  • un datetime ISO avec Z ou un offset numérique et au plus trois chiffres fractionnaires, par exemple 2026-09-18T14:00:00+01:00. Les datetimes sans offset sont rejetés.
Le fuseau horaire effectif est timezone s’il est fourni, sinon le fuseau horaire de l’établissement quand venueId est donné, sinon UTC. meta.timezone indique toujours lequel a été utilisé. Les plages peuvent couvrir au plus 90 dates calendaires locales ; les plages plus longues sont rejetées avec INVALID_INPUT. Chaque outil a une plage par défaut (7 ou 30 dates) et un basis (creation, fulfillment, refund ou snooze_overlap) qui indique quel horodatage la plage filtre ; voir Outils. meta.dateRange renvoie la plage résolue afin qu’un client puisse afficher exactement ce qui a été compté. Les entrées d’écriture (startDate, endDate, expiresAt) doivent être des horodatages ISO complets avec un offset. Les valeurs date-only ne sont pas acceptées pour les écritures.

Argent

Tous les montants sont des entiers en unités mineures de devise (pence, cents) et ne sont jamais convertis. La devise voyage avec les données : comme champ currency sur les venues, commandes, additions et liens, et comme meta.currencyCodes pour l’ensemble du résultat. codeAmount sur une réduction en pourcentage est en dixièmes de pour cent, pas un montant en devise. Les stats à l’échelle du compte et les requêtes top-produits sur un compte dont les établissements utilisent plus d’une devise sont refusées (INVALID_INPUT) ; passe venueId.

Images

get-payment-link-qr est le seul outil qui renvoie des données binaires. Son tableau content contient le bloc texte JSON suivi d’un bloc image natif MCP :
structuredContent porte uniquement l’URL de checkout et les métadonnées du lien ; il n’y a pas de champ base64 à l’intérieur de data.

Erreurs

Un appel qui échoue n’est pas une enveloppe. C’est un résultat isError: true dont l’unique bloc texte est un objet { error }, sans structuredContent. Voir Erreurs.