tools/call over
POST /shopify/mcp. The connector talks only to Shopify’s Admin GraphQL API
(version 2026-04) and is connected through OAuth on your own store (see
Forbind Shopify).
Endpoint:
https://mcp.consile.ai/shopify/mcp. Shopify is its own named
connector with only its own tools. Tool names are namespaced shopify__<tool>
in Claude/ChatGPT; the bare names are used here for readability.Write safety: guardrail model
The ten write tools share a connector-local guardrail (the same model the Meta Ads connector established). The platform’sreadOnly flag is a hint only; the safety
lives in the tool handlers.
- New products are created
DRAFT(CREATE_DEFAULT_STATUS = "DRAFT"). A draft product is not visible in any sales channel until explicitly published/activated. confirm: trueis required for any write that makes something LIVE (publish/unpublish, or status →ACTIVE), isARCHIVED, changes a PRICE (variantprice/compareAtPrice), changes INVENTORY (set/adjust stock), or is DESTRUCTIVE (delete variants).- Without confirmation you get a
WritePreviewdry-run and no Shopify call is made. Re-run the identical call withconfirm: trueto apply. - Failed mutations never look like success: a mutation that returns non-empty
userErrorsraisesShopifyUserError.
graphql_query escape
hatch rejects any mutation/subscription document.
This is a designed-in safety default (connector-local logic), not an unbreakable
platform gate. See
Handlinger & guardrails for the full
cross-connector policy.
WritePreview shape
When a write requires confirmation butconfirm is omitted or false, the tool
returns this instead of calling Shopify:
Shared parameters
Ids
All id arguments accept either a bare numeric id or a full GID (gid://shopify/<Type>/<n>). The connector normalises before calling the API.
Money
Money is ShopifyMoneyV2 ({ amount, currencyCode }); amounts are decimal
strings in the shop currency.
Pagination
integer
default:"50"
Maximum rows to return (max
250). The client cursor-paginates a single page at
100 and follows cursors up to 25 pages / 250 rows.string
Shopify search-query syntax, e.g.
status:active, vendor:Acme, sku:ABC-1,
financial_status:paid, email:a@b.com, country:DK.Read tools (40)
All read tools arereadOnly: true.
Shop & policies
Products & variants
Collections
Publications (sales channels)
Inventory
Orders & fulfillment
Draft orders
Customers & B2B companies
Customer and order records can carry personal data (name, email, phone, address).
Accessing real-merchant PII requires Shopify’s Protected Customer Data
approval for the app; the platform is read-through and never persists it.
Discounts
Checkouts, shipping & analytics
Write tools (10 guardrailed)
create_product
Create a product. CreatedDRAFT by default.
string
required
string
default:"DRAFT"
ACTIVE (live) or ARCHIVED requires confirm: true; DRAFT is free.string
string
string
string[]
boolean
status is ACTIVE or ARCHIVED.
update_product
Update a product’s fields.string
required
string
string
string
string
string[]
string
boolean
status → ACTIVE or ARCHIVED.
set_product_status
Set a product’s status.string
required
string
required
ACTIVE, DRAFT, or ARCHIVED.boolean
ACTIVE (live) and ARCHIVED; DRAFT is free.
create_product_variant
Add variants to an existing product.string
required
object[]
required
Each:
optionValues, price?, compareAtPrice?, sku?, barcode?,
taxable?, inventoryPolicy?.boolean
update_product_variant
Update existing variants (each entry needs anid).
string
required
object[]
required
Each must include
id; may set price, compareAtPrice, sku, barcode, etc.boolean
price/compareAtPrice);
otherwise free.
delete_product_variant
Delete variants from a product.string
required
string[]
required
boolean
required
Must be
true to apply.publish_product
Publish a product to one or more sales channels (makes it live).string
required
string[]
required
Publication ids from
list_publications.boolean
required
Must be
true to apply.unpublish_product
Remove a product from one or more sales channels.string
required
string[]
required
boolean
required
Must be
true to apply.set_inventory_quantity
Set an absolute stock quantity at a location.string
required
string
required
integer
required
string
default:"available"
available or on_hand.string
default:"correction"
boolean
required
Must be
true to apply.adjust_inventory_quantity
Adjust stock by a relative delta at a location.string
required
string
required
integer
required
Positive or negative.
string
default:"available"
string
default:"correction"
boolean
required
Must be
true to apply.Code examples
Shopify rate limits are cost-based (a leaky bucket). A throttled call returns
HTTP 200 with a
THROTTLED error; the client retries a bounded number of times,
waiting for the bucket to refill. Per-request timeout is 20s. Some tools
(list_inventory_transfers, get_inventory_transfer, get_inventory_shipment,
run_analytics_query) are best-effort against the 2026-04 schema and may need a
field tweak; the graphql_query escape hatch covers any gap. See
Errors & limits.