> ## Documentation Index
> Fetch the complete documentation index at: https://storekit.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Format de réponse

> L'enveloppe data-et-meta du MCP marchand : comment les résultats, la pagination, les plages de dates, fuseaux, devises et images sont renvoyés et parsés.

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.

```json theme={null}
{
  "data": {
    "results": [
      { "id": 42, "name": "Soho", "timezone": "Europe/London", "currency": "GBP" }
    ]
  },
  "meta": {
    "schemaVersion": 2,
    "timezone": "Europe/London",
    "dateRange": {
      "from": "2026-09-11T23:00:00.000Z",
      "to": "2026-09-18T22:59:59.999Z",
      "basis": "fulfillment",
      "endInclusive": true
    },
    "pagination": {
      "page": 1,
      "limit": 50,
      "returned": 50,
      "total": 1240,
      "totalIsEstimate": true,
      "hasMore": true,
      "nextPage": 2,
      "truncated": true
    },
    "warnings": [],
    "currencyCodes": ["GBP"]
  }
}
```

## `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`

| Champ | Type | Signification |
| - | - | - |
| `schemaVersion` | `2` | Incrémenté à chaque changement cassant de l'enveloppe ou de la forme d'une ressource |
| `timezone` | Nom IANA ou `null` | Le fuseau horaire dans lequel la plage de dates a été interprétée |
| `dateRange` | objet ou `null` | La plage inclusive résolue effectivement appliquée, sous forme d'instants UTC, plus son `basis` |
| `pagination` | objet ou `null` | Présent sur les résultats paginés |
| `warnings` | `string[]` | Avertissements lisibles par un humain, par exemple que les stats sont brutes de remboursements |
| `currencyCodes` | `string[]`, optionnel | Codes ISO 4217 distincts présents dans le résultat |

`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` :

```javascript theme={null}
let page = 1;
do {
  const { data, meta } = await call("list-orders", { venueId, from, to, page, limit: 100 });
  process(data.results);
  page = meta.pagination.nextPage;
} while (page !== null);
```

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](/docs/fr/developers/mcp/tools). `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 :

```json theme={null}
{
  "type": "image",
  "mimeType": "image/png",
  "data": "<base64 PNG>"
}
```

`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](/docs/fr/developers/mcp/errors).


## Related topics

- [Aperçu du MCP marchand](/docs/fr/developers/mcp/overview.md)
- [Trouver et partager l'URL de votre magasin storekit](/docs/fr/guides/store-settings/store-url.md)
- [Pré-remplissage du panier via URL](/docs/fr/developers/basket-prefill.md)
- [Endpoints de polling](/docs/fr/developers/webhooks/advanced/polling-endpoints.md)
- [Format du payload](/docs/fr/developers/webhooks/payload-format.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.