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 dansdata. get-snooze-reportrenvoie 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’
outputSchemad’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 :
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.999ce jour-là) ; ou- un datetime ISO avec
Zou un offset numérique et au plus trois chiffres fractionnaires, par exemple2026-09-18T14:00:00+01:00. Les datetimes sans offset sont rejetés.
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 champcurrency 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ésultatisError: true dont l’unique bloc texte est un objet { error }, sans structuredContent. Voir Erreurs.