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

# Response-Format

> Der Data-and-Meta-Envelope des Merchant MCP: wie Ergebnisse, Paginierung, Datumsbereiche, Zeitzonen, Währungen und Bilder geparst werden.

Jeder erfolgreiche Tool-Aufruf gibt einen Envelope zurück, doppelt geliefert im MCP-Ergebnis: als `structuredContent` und als JSON-Text des ersten `content`-Blocks. Lesen Sie, was auch immer Ihr Client offenlegt; sie sind identisch. Jedes Tool veröffentlicht ein passendes `outputSchema`, sodass ein spec-konformer Client `structuredContent` dagegen validiert.

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

* **List-Tools** geben `data.results` zurück, ein Array.
* **Detail-Tools** (`get-venue`, `get-order`, `get-menu`, `get-payment-link`, `get-order-stats`, die beiden Writes) geben den Datensatz selbst in `data` zurück.
* `get-snooze-report` gibt eine Zusammenfassung, eine Zeitreihe und ein paginiertes `items`-Array zusammen zurück.
* Felder sind pro Ressource explizit erlaubt. Alles, was nicht im `outputSchema` eines Tools steht, wird nie gesendet, egal was der zugrundeliegende Datensatz enthält.

## `meta`

| Feld | Typ | Bedeutung |
| - | - | - |
| `schemaVersion` | `2` | Wird bei jeder Breaking Change am Envelope oder an einer Ressourcen-Form erhöht |
| `timezone` | IANA-Name oder `null` | Die Zeitzone, in der der Datumsbereich interpretiert wurde |
| `dateRange` | Objekt oder `null` | Der aufgelöste, inklusive Bereich, der tatsächlich angewendet wurde, als UTC-Zeitpunkte, plus seine `basis` |
| `pagination` | Objekt oder `null` | Vorhanden bei paginierten Ergebnissen |
| `warnings` | `string[]` | Menschlich lesbare Vorbehalte, zum Beispiel dass Statistiken vor Rückerstattungen sind |
| `currencyCodes` | `string[]`, optional | Unterschiedliche ISO-4217-Codes im Ergebnis |

`meta` ist strikt: Keine undokumentierten Keys tauchen auf, und neue Keys kommen mit einer Versionserhöhung.

## Paginierung

Seiten beginnen bei **1**. `limit` ist auf 100 gekappt (25 für `list-top-products`) und wird stillschweigend reduziert, wenn Sie mehr anfordern.

`hasMore` und `nextPage` kommen daher, dass eine Zeile über die Seite hinaus geholt wird, sodass sie immer exakt sind. `total` ist `null`, wenn das Tool nicht zählt, und kann bei großen Bestelllisten, bei denen eine exakte Zählung zu langsam ist, mit `totalIsEstimate: true` markiert sein. Steuern Sie Schleifen über `hasMore`, nicht über `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);
```

Listen sind live; ein Datensatz, der zwischen Seiten erstellt wird, kann nachfolgende Seiten verschieben.

## Datumsangaben und Zeitzonen

**Inputs** (`from`, `to`) akzeptieren entweder:

* `YYYY-MM-DD` — ein lokales Kalenderdatum in der effektiven Zeitzone, an beiden Enden inklusive (`to: "2026-09-18"` läuft bis `23:59:59.999` an diesem Tag); oder
* eine ISO-Datumzeit mit `Z` oder einem numerischen Offset und höchstens drei Nachkommastellen, z. B. `2026-09-18T14:00:00+01:00`. Datumzeiten ohne Offset werden abgelehnt.

Die **effektive Zeitzone** ist `timezone`, falls angegeben, sonst die Zeitzone der Filiale, wenn `venueId` angegeben ist, sonst `UTC`. `meta.timezone` gibt immer an, welche verwendet wurde.

Bereiche dürfen höchstens **90 lokale Kalendertage** umspannen; längere Bereiche werden mit `INVALID_INPUT` abgelehnt. Jedes Tool hat einen Default-Bereich (7 oder 30 Tage) und eine `basis` — `creation`, `fulfillment`, `refund` oder `snooze_overlap` — die angibt, welchen Zeitstempel der Bereich filtert; siehe [Tools](/docs/de/developers/mcp/tools). `meta.dateRange` gibt den aufgelösten Bereich wieder, sodass ein Client genau anzeigen kann, was gezählt wurde.

**Write-Inputs** (`startDate`, `endDate`, `expiresAt`) müssen vollständige ISO-Zeitstempel mit Offset sein. Reine Datumswerte werden für Writes nicht akzeptiert.

## Geld

Alle Beträge sind Ganzzahlen in **Minor Currency Units** (Pence, Cents) und werden nie umgerechnet. Die Währung wandert mit den Daten — als `currency`-Feld auf Filialen, Bestellungen, Rechnungen und Links und als `meta.currencyCodes` für das Ergebnis insgesamt. `codeAmount` bei einem prozentualen Rabatt ist in Zehnteln eines Prozents, kein Währungsbetrag.

Kontoweite Statistiken und Top-Product-Abfragen auf einem Konto, dessen Filialen mehr als eine Währung verwenden, werden abgelehnt (`INVALID_INPUT`); geben Sie `venueId` an.

## Bilder

`get-payment-link-qr` ist das einzige Tool, das Binärdaten zurückgibt. Sein `content`-Array enthält den JSON-Text-Block, gefolgt von einem nativen MCP-Bild-Block:

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

`structuredContent` trägt nur die Checkout-URL und die Link-Metadaten; es gibt kein base64-Feld innerhalb von `data`.

## Fehler

Ein fehlgeschlagener Aufruf ist **kein** Envelope. Es ist ein `isError: true`-Ergebnis, dessen einzelner Text-Block ein `{ error }`-Objekt ist, ohne `structuredContent`. Siehe [Fehler](/docs/de/developers/mcp/errors).


## Related topics

- [Merchant-MCP-Übersicht](/docs/de/developers/mcp/overview.md)
- [Payload-Format](/docs/de/developers/webhooks/payload-format.md)
- [Bildspezifikationen](/docs/de/guides/store-settings/image-specifications.md)
- [Ihre storekit-Store-URL finden und teilen](/docs/de/guides/store-settings/store-url.md)
- [Warenkorb per URL vorbefüllen](/docs/de/developers/basket-prefill.md)


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