Shopify MCP
Query and (on request) write to your own Shopify store through the CDP MCP — read-only by default, with a gated, audited write path.
The Shopify suite is a set of four tools on the CDP MCP server that let an AI client like Claude read from — and, once enabled, safely write to — your own connected Shopify store. Three of them wrap Shopify's official developer tooling so your client learns the real Admin API and validates GraphQL offline; the fourth executes a validated Admin GraphQL operation against your store.
They run on the same endpoint as the rest of the CDP MCP (https://cdp-mcp.vyg.app/mcp) and share its authentication and brand scoping. There is nothing extra to connect.
The four tools
| Tool | What it does | Access |
|---|---|---|
learn_shopify_api | Load Shopify API documentation context. Call this first. | Read-only |
search_docs_chunks | Search Shopify developer documentation for relevant chunks. | Read-only |
validate_graphql_codeblocks | Validate Admin GraphQL against the bundled schema — offline, no store call. | Read-only |
shopify_admin_graphql | Execute a validated Admin GraphQL operation against your store. | Reads open · writes gated |
The first three never touch your store: learn_shopify_api and validate_graphql_codeblocks run against Shopify's bundled instructions and schemas offline, while search_docs_chunks queries Shopify's live developer-documentation service. Only shopify_admin_graphql reaches your store, and it pre-validates every operation before spending any Shopify API budget.
Read by default, write by request
The execute tool, shopify_admin_graphql, enforces a two-tier model:
- Reads are open to every brand entitled to the CDP MCP. Any GraphQL query runs against your store — orders, products, customers, inventory, and so on — with no extra flag.
- Writes are dark by default. A GraphQL mutation runs only for a brand that holds writes enablement. Without it, a mutation is refused with a clear message — and your reads keep working. The check is fail-closed: any error looking up the flag denies the write.
- Subscriptions are always rejected, even with writes enabled.
To turn on writes for your brand, contact the LiveRecover account team and request writes enablement. It is enabled per brand, on request.
Every write is audited
When writes are enabled, each mutation is recorded to an audit trail before it runs. The tool reserves a pending audit row — capturing the brand, operation, and variables — and only then calls Shopify; if the audit write fails, the mutation is blocked and never executes. There are no unaudited writes. After execution the row is finalized with the real outcome (success / error). Secret-shaped variable values (tokens, passwords, and the like) are redacted before the variables are stored.
A typical session
The four tools chain into a learn → search → validate → execute flow. In practice you just describe the goal and let the client walk the chain:
Load the Shopify Admin API docs, then find the 10 most recent orders in my storeUnder the hood a well-behaved client will:
learn_shopify_apiwithapi: "admin"to load the Admin API context (and mint aconversationId).search_docs_chunksto find the right query shape for recent orders.validate_graphql_codeblocksto confirm the drafted query is valid against the bundled Admin schema — offline.shopify_admin_graphqlto run the validated query against your store and return the data.
A write follows the same chain, ending in a mutation — which runs only if your brand holds writes enablement:
Draft a mutation to add the tag "vip" to customer 12345, validate it, then run itAccess requirements
- CDP entitlement. The Shopify tools live on the CDP MCP server, so they require your brand's CDP entitlement — the same gate as every other CDP tool. If CDP is not enabled, every tool returns a clear access-denied error. Contact your LiveRecover account team to enable it.
- A connected Shopify store.
shopify_admin_graphqlresolves your store domain and access token server-side from your brand's connected Shopify integration. If Shopify is not connected for your brand, the execute tool returns a clear not-connected message. (The documentation and validation tools work regardless — none of them touch your store.) - The writes flag (mutations only). writes enablement, enabled per brand on request.
Good to know
- Your store only. The brand is taken from your authenticated session, never a tool parameter.
shopify_admin_graphqlcan only ever reach the store connected to your own brand — one brand can never touch another's store or audit rows. - Pre-validation saves budget. Every operation is parsed and validated against the bundled Admin schema before any Shopify call, so a hallucinated field is caught locally and never spends your Shopify API budget.
- Structured errors. Shopify throttling surfaces as a structured error with retry-after guidance; a missing scope names the exact scope to grant.
- Bounded responses. A large result is truncated with an explicit marker so it can't overflow the MCP channel — narrow the query or paginate for complete data.
- Your access token is never exposed. It never appears in tool output, errors, logs, or the audit trail.