Authenticate with a client credentials token using the eats.store scope
Retrieve the current menu with GET /v2/eats/stores/{store_id}/menus to understand the existing structure before overwriting
Construct a full menu payload following the Uber Eats menu schema: catalog_reference at the top level, with categories, items, and modifier groups nested within
Submit the updated menu with PUT /v2/eats/stores/{store_id}/menus; the API replaces the entire menu, so include all categories even if only one item changed
Poll the menu status endpoint or wait for the menu.published webhook to confirm the update is live; image processing can take up to a few hours after menu acceptance
Do not make concurrent manual changes in Menu Maker for API-managed stores, as this creates conflicting versions
Known gotchas
PUT replaces the entire menu; omitting a category that was previously live will remove it from the customer-facing menu immediately
Images are the only menu element that may take up to a few hours to process; text, price, and availability changes are near-real-time
Stores managed via the Menu API should be excluded from any manual Menu Maker processes to avoid version conflicts that can corrupt menu state
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp