Model a Square for Restaurants menu using MENU_CATEGORY objects without breaking the REGULAR_CATEGORY structures that drive reporting and kitchen printer routing
domain: developer.squareup.com · 5 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Recognize that a Square 'menu' is not a separate object type from the catalog — it's built from CatalogItem/CatalogItemVariation objects organized under categories with category_type MENU_CATEGORY
Keep REGULAR_CATEGORY objects intact even if you add MENU_CATEGORY groupings for menu presentation, since REGULAR_CATEGORY still drives sales reporting and kitchen printer routing
When syncing menu changes from an external system, write item/variation data via the Catalog API's batch upsert, then separately manage MENU_CATEGORY membership for display grouping
Use CatalogModifierList and modifier overrides at the item level to represent item-specific modifier pricing rather than duplicating items per modifier combination
Query catalog objects with the appropriate object types filter to distinguish menu-presentation categories from operational (regular) categories when building sync logic
Known gotchas
Treating MENU_CATEGORY as a replacement for REGULAR_CATEGORY (deleting or repurposing the latter) can silently break kitchen printer routing and sales reports that key off REGULAR_CATEGORY
Menus built manually in the Square Dashboard auto-generate MENU_CATEGORY objects — API-driven syncs need to reconcile against these rather than assuming a clean slate
There isn't a single 'get the menu' endpoint distinct from the catalog — you assemble the menu view yourself from catalog objects and category types
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?