Skip to main content
Für wen das ist: eine Assistenten- oder Agenten-App, die im Auftrag des Kunden außerhalb seines Browsers handelt. Wenn der Assistent für das Restaurant handelt, brauchen Sie stattdessen das Merchant MCP unter mcp.storekit.com. Jeder storekit-Bestell-Host ist auch ein Remote-MCP-Server. Ein Assistent, der nirgendwo in der Nähe des Kunden-Browsers ist — ChatGPT, Claude, eine Agenten-App, eine IDE — kann sich damit verbinden, das Menü einer Filiale lesen, einen Preis nennen und einen Warenkorb bauen, den der Kunde dann öffnet, um zu bezahlen.

Endpoints

Es gibt zwei Scopes, und beide sind auf dem eigenen Bestell-Host des Stores erreichbar: {host} ist die Domain, von der die Bestellseiten des Stores ausgeliefert werden, zum Beispiel order.storekit.com. Beide Endpoints sind auf diesen Host beschränkt, sodass eine Marke auf ihrer eigenen Domain ausschließlich für ihre eigenen Filialen antworten kann. Verwenden Sie den Marken-Endpoint, wenn der Kunde noch nicht gesagt hat, welche Filiale er möchte: find_venues gibt den Slug zurück, den jedes andere Tool dann als venue-Argument annimmt. Verwenden Sie den Filial-Endpoint, wenn der Standort bereits geklärt ist. Ein GET oder HEAD auf beide Endpoints gibt 200 zurück und eine Zeile, die sagt, was der Endpoint ist, damit ein Client ihn testen kann, bevor er eine Session öffnet.

Protokoll

JSON-RPC 2.0 über HTTP, eine Nachricht pro POST. Die implementierten Methoden sind initialize, ping, tools/list und tools/call; die MCP-Revisionen 2025-06-18, 2025-03-26 und 2024-11-05 werden alle in der Revision beantwortet, die der Client anfragt.
Jedes Ergebnis ist JSON in einem Text-Content-Block, wiederholt als structuredContent für Clients, die ihn lesen. Der Endpoint ist zustandslos: initialize gibt keine Session-ID zurück, und zwischen Anfragen wird nichts gespeichert, sodass eine Konversation den Filial-Slug und die Cart-ID trägt statt einer Session. Fehler teilen sich nach dem auf, der darauf reagieren kann. Ein fehlerhaftes Argument ist ein JSON-RPC -32602, das den Parameter benennt; alles, wovon der Assistent sich erholen könnte — keine solche Kategorie, keine Übereinstimmung, eine Filiale, die keine Bestellungen mehr annimmt — kommt als Tool-Ergebnis mit isError: true zurück, dessen Text sagt, was als Nächstes zu tun ist.

Read-Tools

get_menu und search_menu nehmen beide optional Listen excludeAllergens und diets entgegen. excludeAllergens nennt beliebige der 14 UK-Allergene (celery, gluten, crustaceans, fish, eggs, lupin, milk, molluscs, mustard, nuts, peanuts, sesame, soya, sulphites) und lässt jeden Artikel weg, der eines davon enthält oder enthalten kann; ein Artikel ohne Allergen-Angaben bleibt drin, denn ohne Kennzeichnung ist nicht dasselbe wie frei davon. diets nennt beliebige von halal, kosher, vegan, vegetarian, gluten free und dairy free und behält nur Artikel, die für jede davon gekennzeichnet sind. Das sind dieselben Regeln, die die Bestellseite für ihre eigenen Allergen- und Diät-Filter anwendet, und das Ergebnis gibt die angewendeten Filter unter filters zurück. Auf dem Marken-Endpoint nimmt jedes Tool außer find_venues ein zusätzliches venue-Argument, und ein Slug, der nicht zu dieser Marke gehört, wird mit der eigenen Liste der Marke abgelehnt statt aus dem Menü einer anderen Marke beantwortet. Reads tragen readOnlyHint, sodass ein Client sie aufrufen kann, ohne den Kunden vorher zu fragen. Preise sind formatierte Strings in der Währung der Filiale, Beschreibungen sind bereinigt und gekürzt, und jede Liste ist gekappt.
Bestellmethoden werden aus dem gemeldet, was das Filial-Payload belegt: Delivery, Pickup und InStore. Catering wird über MCP nicht angeboten.

Cart-Tools

Die Cart-Capability folgt exakt dem UCP-Cart-MCP-Binding, sodass ein UCP-Client keine Mapping-Tabelle braucht. Was das Binding in der Praxis bedeutet:
  • Jeder Aufruf trägt meta["ucp-agent"] mit Ihrem Agenten-Profil. Ein Aufruf ohne wird abgelehnt.
  • Die Cart-ID ist eine id auf oberster Ebene, niemals verschachtelt in cart.
  • Beträge sind ganzzahlige Minor Units (450 sind £4.50).
  • Ein Geschäftsproblem ist ein erfolgreiches Ergebnis mit messages[] — eine Zeile, die nicht mehr verkäuflich ist, wird dort gemeldet, statt zu verschwinden.
  • Zeilen werden nach Artikel-ID mit Optionen in Klammern benannt, BURGER(CHEESE;BACON:2), dieselbe Grammatik, die die Basket-Prefill-Links verwenden.
Ein Warenkorb hält Intent, keine Preise: Jede Operation löst ihn gegen das aktuelle Menü neu auf und bepreist ihn neu, sodass ein gespeicherter Warenkorb keinen Betrag nennen kann, dem die Filialseite widerspräche. Warenkörbe verfallen 24 Stunden nach dem letzten Schreibvorgang, und es wird nichts Kundenbezogenes darin gespeichert.
Ein Warenkorb ist keine Bestellung, und diese Tools sprechen nur für die Seite des Kunden. Nichts hier liest die Bestellwarteschlange eines Stores, bearbeitet ein Menü oder ändert eine Einstellung. Die Tools geben eine continue_url zurück, die der Kunde öffnet, um den Warenkorb zu prüfen und auf der Filialseite zu bezahlen — es gibt kein Checkout-, Zahlungs- oder Rabatt-Tool, und es wird keine Bestellung aufgegeben, bis er dort fertig ist.

Verwandt

UCP-Discovery

Das Profil, das diese Endpoints und die Cart-Capability bewirbt.

WebMCP-Tools

Das separate Tool-Set, das ein Agent im Browser des Kunden aufruft.