Authenticate via OAuth 2.0 or a personal access token from the Square Developer Dashboard
Fetch the current menu catalog using POST /v2/catalog/search with object_types set to ITEM, ITEM_VARIATION, MODIFIER_LIST, and MODIFIER to retrieve all menu-relevant objects
Use the cursor field in the response to paginate through large catalogs
Upsert new or updated items using POST /v2/catalog/batch-upsert; include idempotency_key per batch to prevent duplicate writes
Subscribe to the catalog.version.updated webhook to receive real-time notifications when any catalog change is made in Square Dashboard or POS, then trigger a targeted re-sync
Use the updated_at field on CatalogObject to perform incremental syncs — only fetch and push objects modified since the last successful sync timestamp
Known gotchas
Square uses MENU_CATEGORY as a specific CategoryType when categories are created through the Square Dashboard; filter for this type when building menu hierarchies to avoid pulling unrelated category types
The Catalog API does not expose real-time inventory counts by default; use the Inventory API (POST /v2/inventory/counts/batch-retrieve) for stock-level data
Catalog versions increment on any change; always store the latest version number and include it in update requests to detect and handle concurrent modification conflicts
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