Endpoints
There are two scopes, and both are reached on the store’s own ordering host:{host} is the domain the store’s ordering pages are served from, such as order.storekit.com. Both endpoints are scoped by that host, so a brand on its own domain can only ever answer for its own venues.
Use the brand endpoint when the customer has not said which branch they want: find_venues returns the slug every other tool then takes as its venue argument. Use the venue endpoint when the location is already settled.
A GET or HEAD on either endpoint returns 200 and a line saying what the endpoint is, so a client can probe it before opening a session.
Protocol
JSON-RPC 2.0 over HTTP, one message perPOST. The methods implemented are initialize, ping, tools/list and tools/call; MCP revisions 2025-06-18, 2025-03-26 and 2024-11-05 are all answered in the revision the client asks for.
structuredContent for clients that read it. The endpoint is stateless: initialize returns no session id and nothing is remembered between requests, so a conversation carries the venue slug and the cart id rather than a session.
Errors split by who can act on them. A malformed argument is a JSON-RPC -32602 naming the parameter; anything the assistant could recover from — no such category, no match, a venue that stopped accepting orders — comes back as a tool result with isError: true whose text says what to do next.
Read Tools
On the brand endpoint every tool except
find_venues takes an extra venue argument, and a slug that does not belong to that brand is refused with the brand’s own list rather than answered from another brand’s menu.
Reads carry readOnlyHint, so a client can call them without asking the customer first. Prices are formatted strings in the venue’s currency, descriptions are stripped and truncated, and every list is capped.
Fulfillment methods are reported from what the venue payload proves: Delivery, Pickup and InStore. Catering is not offered over MCP.
Cart Tools
The cart capability follows the UCP cart MCP binding exactly, so a UCP client needs no mapping table.
What the binding means in practice:
- Every call carries
meta["ucp-agent"]with your agent profile. A call without it is rejected. - The cart id is a top-level
id, never nested insidecart. - Amounts are integer minor units (
450is £4.50). - A business problem is a successful result carrying
messages[]— a line that stopped being sellable is reported there rather than vanishing. - Lines are named by item id with options in brackets,
BURGER(CHEESE;BACON:2), the same grammar the basket prefill links use.
Related
UCP discovery
The profile that advertises these endpoints and the cart capability.
WebMCP tools
The separate tool set an agent calls inside the customer’s browser.