Shopify MCP Server
Provides tools for managing products, inventory, orders, customers, media, and abandonments in a Shopify store. Also includes GraphQL capabilities for custom queries and mutations against the Shopify Admin API.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Shopify MCP Serverwhat are my top 5 selling products?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Shopify MCP Server for Claude Desktop
This is a simple Model Context Protocol (MCP) server that connects your Shopify store data to Claude Desktop, allowing Claude to access your store information.
Setup
Install dependencies:
npm installCreate a
.envfile with your Shopify credentials:SHOPIFY_STORE_NAME=your-store-name SHOPIFY_API_ACCESS_TOKEN=your-access-tokenBuild the TypeScript code:
npm run buildRun the MCP server:
npm startIn Claude Desktop, set the MCP server to point to this server. You should now be able to access your Shopify data.
Related MCP server: Shopify MCP Server
Features
This server provides access to the following Shopify functionality through MCP tools:
Product Tools
create_product: This tool creates a product structure with options (e.g., Color, Size) in DRAFT status. It handles product title, description, vendor, type, tags, and options configuration, but does not create variants with prices. Use this as the first step in product creation.browse_products: This tool retrieves a list of products with optional inventory information. It supports pagination and provides key product details like title, description, images, variants, and inventory levels. When provided with a specific product_id, it returns detailed information for that single product.update_variant_price: This tool updates the price and/or compare-at price of a specific product variant. It can set a new regular price, add/update a compare-at price, or remove a compare-at price by passing null or an empty string.
Inventory Tools
list_inventory_items: This tool retrieves a list of inventory items with optional filtering by SKU. It supports pagination and provides inventory details like available quantities, costs, and locations where items are stocked.get_inventory_item: This tool retrieves detailed information about a specific inventory item by ID or SKU. It returns comprehensive inventory data including tracked status, available quantities across all locations, and associated variant information.update_inventory_quantity: This tool updates the available quantity of an inventory item at a specific location. It accepts inventory item ID, location ID, and the new available quantity, returning the updated inventory level after adjustment.
Order Tools
browse_orders: This tool retrieves Shopify orders with powerful filtering options. It supports filtering by status, date range, customer email, financial status, fulfillment status, and allows searching by order number or customer details. When provided with a specific order_id, it returns detailed information for that single order.
Customer Tools
browse_customers: This tool retrieves customer information with spending data and advanced filtering options. It supports sorting by multiple fields, filtering by minimum/maximum spend, and returns detailed customer profiles. When provided with a specific customer_id, it returns comprehensive information for that single customer.
Media Tools
upload_image_from_url: This tool uploads an image from a public URL to the Shopify CDN Files section. It handles the transfer of image data to Shopify's servers, allowing you to specify alt text and optional filename for the uploaded image.
Abandonment Tools
get_abandonment: This tool retrieves detailed information about cart or checkout abandonments by ID. It returns data about abandoned carts including items, prices, customer information (if available), and abandonment timing. You can customize which fields are returned in the response.
GraphQL Tools
query_shopify: This tool executes custom GraphQL queries or mutations against the Shopify Admin API. It allows for complete flexibility to access any Shopify Admin API endpoint not covered by the specialized tools, with options to pass variables and enable mutation operations.introspect_admin_schema: This tool introspects and returns the portion of the Shopify Admin API GraphQL schema relevant to the user prompt. Only use this for the Shopify Admin API, and not any other APIs like the Shopify Storefront API or the Shopify Functions API. It accepts search terms to filter schema elements by name and provides options to focus on specific sections like types, queries, or mutations.
License
MIT
Available Tools
15 toolsadd_product_variantB
Adds a new variant (combination of options like color/size) with its price to an existing product.
| Name | Required | Description | Default |
|---|---|---|---|
| sku | No | Optional Stock Keeping Unit (SKU) for this variant. | |
| price | Yes | The price for this new variant. | |
| product_id | Yes | The Global ID (GID) of the product to add the variant to (e.g., 'gid://shopify/Product/12345') | |
| option_values | Yes | Comma-separated list of the option values for this specific variant, **in the exact order** they appear on the product (e.g., 'Red,Small' for options Color then Size). | |
| compare_at_price | No | Optional compare-at price for this variant. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the additive action and does not mention required permissions, error behavior (e.g., if the product is missing), idempotency, reversal effects, or what response is returned. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, tightly written sentence communicates the core action and key attributes, with no filler or redundant phrases. Every part of the sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero annotations, no output schema, and a mutation operation, the description is too sparse. It does not address crucial behavioral context like what happens after creation, prerequisite checks, or failure modes. The schema covers parameters fully, but the operation context remains incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no new parameter information beyond what the schema already documents (e.g., the exact order requirement for option_values is already in the schema). It only offers a high-level summary without deepening parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Adds'), a clear resource ('new variant to an existing product'), and the key attributes (combination of options like color/size, price). It distinguishes itself from sibling tools by emphasizing 'new'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for adding variants to products that already exist, which gives some context. However, it does not explicitly state when to use this tool versus alternatives like update_variant_price or create_product, nor does it provide exclusions or prerequisites beyond 'existing product'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browse_customersB
This tool retrieves customer information with spending data and advanced filtering options. It supports sorting by multiple fields, filtering by minimum/maximum spend, and returns detailed customer profiles. When provided with a specific customer_id, it returns comprehensive information for that single customer.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of customers to retrieve (default: 10) | |
| sort_by | No | Sort customers by: CREATED_AT (creation date), ID, LOCATION, NAME, RELEVANCE (for search), or UPDATED_AT (last update) | CREATED_AT |
| max_spend | No | Maximum total spend to filter customers (in store currency) | |
| min_spend | No | Minimum total spend to filter customers (in store currency) | |
| sort_order | No | Sort order: asc (ascending) or desc (descending) | desc |
| customer_id | No | ID of a specific customer to view (overrides limit) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must indicate side effects; it does so only by using the verb 'retrieves,' implying a read operation. It adds that results can be sorted/filtered and that customer_id returns a single comprehensive profile, but it does not describe pagination, returned fields, or any prerequisites or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose, followed by capabilities and the customer_id special case. There is minor redundancy between 'advanced filtering options' and 'filtering by minimum/maximum spend,' but no unnecessary filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read tool with six optional parameters and no output schema, the description gives a reasonable overview but leaves gaps: the return format is only vaguely described as 'detailed customer profiles,' and no pagination or ordering default behavior is stated. The schema covers parameters, but tool selection would benefit from sibling-distinguishing context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all six parameters in detail. The description adds only general context (advanced filtering, min/max spend, comprehensive detail for customer_id) without introducing new parameter semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('retrieves customer information'), the resource (customers), and notable capabilities ('spending data', 'advanced filtering options', 'sorting by multiple fields'). It does not explicitly differentiate from sibling tools like get_customer_contacts, but the mention of spending data and filtering narrows the scope clearly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use browse_customers versus alternatives such as get_customer_contacts or browse_orders. The only usage note, 'When provided with a specific customer_id, it returns comprehensive information for that single customer,' is parameter-level rather than tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browse_ordersA
This tool retrieves Shopify orders with powerful filtering options. It supports filtering by status, date range, customer email, financial status, fulfillment status, and allows searching by order number or customer details. When provided with a specific order_id, it returns detailed information for that single order.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of orders to retrieve (default: 10) | |
| search | No | Search orders by order number, customer name, or email | |
| status | No | Filter orders by status (default: any) | |
| reverse | No | Reverse the order of results (newest first if true) | |
| order_id | No | ID of a specific order to view (overrides other parameters) | |
| sort_key | No | Sort orders by this key | |
| created_at_max | No | Maximum creation date (ISO format, e.g., 2023-12-31) | |
| created_at_min | No | Minimum creation date (ISO format, e.g., 2023-01-01) | |
| customer_email | No | Filter orders by customer email | |
| financial_status | No | Filter by financial status | |
| fulfillment_status | No | Filter by fulfillment status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral burden. It accurately signals read-only retrieval and highlights that order_id returns detailed single-order information. However, it does not disclose pagination, default limit behavior, list-mode return shape, or how filters interact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences front-load the core purpose, then compactly list filtering capabilities and the special order_id behavior. There is no meaningful filler; 'powerful filtering options' is slightly promotional but does not harm clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 11 parameters and no annotations or output schema, the description provides a useful overview but is incomplete. It does not explain list-mode return structure, pagination, default limit, sort behavior, or whether filters combine additively, so an agent would still need to infer several execution details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 11 parameters; the baseline is 3. The description adds slight value by grouping filters and connecting order_id to detailed output, but it mostly restates schema information rather than deepening it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence uses a specific verb ('retrieves') and resource ('Shopify orders'), clearly distinguishing this from sibling tools like browse_products and browse_customers. The final sentence adds a distinct single-order mode via order_id, making the tool's dual behavior explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for order retrieval and filtering, and it enumerates filter categories, but it does not explicitly say when to choose this over query_shopify, browse_customers, or other siblings. There are no exclusions or alternative routing cues beyond the word 'orders'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browse_productsA
This tool retrieves a list of products with optional inventory information. It supports pagination and provides key product details like title, description, images, variants, and inventory levels. When provided with a specific product_id, it returns detailed information for that single product.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of products to retrieve (default: 10) | |
| product_id | No | ID of a specific product to view (overrides limit) | |
| include_inventory | No | Whether to include detailed inventory information (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses that the tool retrieves/reads data, supports pagination, and returns product details, but it does not explain how pagination is controlled given only a limit parameter, nor does it describe response format or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences with no filler or repetition. It front-loads the core purpose, then adds pagination and parameter-specific behavior efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple browse/read tool, especially with fully described schema parameters. However, there is no output schema, and the description does not clarify pagination mechanics or response structure, leaving a noticeable gap for an agent trying to use all features effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all three parameters with descriptions, so the baseline is 3. The description adds minimal value: product_id is said to return detailed info for a single product, but limit and include_inventory are not meaningfully expanded beyond their schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a list of products and can optionally retrieve a single product by ID. This is a specific verb+resource combination that is distinct from siblings like browse_orders, browse_customers, and create_product.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use it to browse products, and use product_id to get one product's detail. However, it does not explicitly differentiate from sibling tools such as list_inventory_items, which is relevant because inventory information is optional here but inventory-specific tools exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_productA
This tool creates a product structure with options (e.g., Color, Size) in DRAFT status. It handles product title, description, vendor, type, tags, and options configuration, but does not create variants with prices. Use this as the first step in product creation.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The name (title) of the product | |
| tags | No | Comma-separated list of tags for the product | |
| vendor | No | Product vendor name | |
| options | No | Product options formatted as "OptionName1:Value1,Value2;OptionName2:ValueA,ValueB" | |
| media_url | No | URL of the primary image for the product | |
| description | No | Product description (HTML is supported) | |
| product_type | No | The category or type of the product |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full behavioral disclosure. It clearly indicates that the product is created in DRAFT status, handles a defined set of fields, and explicitly states that variants with prices are not created. This is meaningful behavioral context beyond what the parameter names alone would convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The first sentence covers the core purpose and status; the second adds the critical limitation and usage guidance. Every part contributes to the agent's understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, status, and boundary conditions well, and parameter coverage is complete. However, there is no output schema and the description does not mention what the tool returns (e.g., the created product ID), which is important for 'first step' workflows followed by variant creation. That gap lowers completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds little parameter-level meaning beyond grouping them as 'product title, description, vendor, type, tags, and options configuration,' which duplicates the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('creates') and resource ('product structure with options'), specifies the DRAFT status, and explicitly differentiates itself from variant creation by noting it 'does not create variants with prices.' This allows an agent to distinguish it from sibling tools like add_product_variant without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: 'Use this as the first step in product creation.' It also defines an implicit boundary—no variants or prices—which helps agent know when not to use this tool in favor of add_product_variant. However, it does not explicitly name the alternative tool, so an agent must infer that add_product_variant is the follow-up.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_abandonmentA
This tool retrieves detailed information about cart or checkout abandonments by ID. It returns data about abandoned carts including items, prices, customer information (if available), and abandonment timing. You can customize which fields are returned in the response.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The ID of the abandonment to retrieve | |
| fields | No | Optional. Specific fields to retrieve. If not provided, default fields will be fetched. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the burden of disclosing behavior. It does so by stating that the tool returns items, prices, customer info, and abandonment timing, and by noting that the fields returned can be customized. It does not mention error handling or missing-ID behavior, but it clearly communicates the read-only, data-returning nature of the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. It leads with the core purpose, then lists the returned data categories, then mentions the customization option. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple by-ID retrieval tool, the description covers the main purpose and return content well. However, the fields parameter is not explained in terms of acceptable values, and with no output schema, the agent does not know the exact default response structure or how to request specific fields beyond the vague 'customize' wording.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds some meaning by confirming that the 'fields' parameter controls which fields are returned, but it does not enumerate possible field names or explain how to structure the fields object, which remains opaque due to additionalProperties being true.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('retrieves') and names the exact resource ('cart or checkout abandonments') with a clear lookup mechanism (by ID). It clearly distinguishes itself from the sibling tools, none of which target abandonment records.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when you have an abandonment ID and need its details, but it does not explicitly state when to prefer this tool over alternatives or call out any other tool. No exclusions or alternative routing are provided, leaving usage somewhat implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_customer_contactsD
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of orders to retrieve (default: 10) | |
| search | No | Search by customer name or email | |
| created_at_max | No | Maximum creation date (ISO format, e.g., 2023-12-31) | |
| created_at_min | No | Minimum creation date (ISO format, e.g., 2023-01-01) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_customer_phoneD
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | No | ID of a specific order to get customer phone from | |
| customer_email | No | Email address of the customer to get phone from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_inventory_itemA
This tool retrieves detailed information about a specific inventory item by ID or SKU. It returns comprehensive inventory data including tracked status, available quantities across all locations, and associated variant information.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | The ID of the inventory item (e.g., "gid://shopify/InventoryItem/12345") | |
| sku | No | The SKU of the inventory item (e.g., "XYZ-12345") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It clearly characterizes the operation as a read/retrieval and adds useful behavioral detail about scope, such as 'available quantities across all locations.' It does not discuss errors or permissions, but this is a low-risk read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it states the action, the lookup keys, and the kind of data returned in two sentences. Every clause contributes useful information with minimal filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with no output schema and no annotations, the description covers purpose, lookup parameters, and return contents well. The main gap is that the need for at least one of id/sku is left implicit despite the schema marking both as optional, but the core invocation path is still clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are already fully described in the schema with examples, so schema_description_coverage is 100%. The description adds little beyond echoing 'by ID or SKU' and does not clarify whether at least one is required or what happens if both are supplied, but it is not required to compensate for schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'retrieves detailed information about a specific inventory item by ID or SKU.' It also enumerates return contents, distinguishing this singular lookup from sibling tools like list_inventory_items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool's context is clearly implied: use it when you have an ID or SKU and need detailed single-item data. It does not explicitly name alternatives or exclusions, but the 'specific item' wording makes the intended selection reasonably obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
introspect_admin_schemaA
This tool introspects and returns the portion of the Shopify Admin API GraphQL schema relevant to the user prompt. Only use this for the Shopify Admin API, and not any other APIs like the Shopify Storefront API or the Shopify Functions API.
It takes two arguments: query and filter. The query argument is the string search term to filter schema elements by name. The filter argument is an array of strings to filter results to show specific sections.| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search term to filter schema elements by name. Only pass simple terms like 'product', 'discountProduct', etc. | |
| filter | No | Filter results to show specific sections. Can include 'types', 'queries', 'mutations', or 'all' (default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does explain the tool's basic behavior: it introspects and returns schema sections, filtered by query and filter. It does not disclose output structure, size limits, or whether the operation is strictly read-only, though 'introspects' strongly implies a safe read action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the core purpose before listing arguments. It avoids excessive detail, though the second sentence partly duplicates schema information and the phrase 'relevant to the user prompt' adds unnecessary ambiguity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has only two well-documented parameters, and no output schema, so the description gives enough to start a call. However, because there is no output schema and no annotations, the description would be stronger if it clarified what the returned schema data looks like and how to interpret the filter options in practice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description largely restates what the input schema already documents: query filters schema elements by name, and filter selects sections. It adds no meaningful parameter semantics beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as introspecting and returning a portion of the Shopify Admin API GraphQL schema, which is a specific verb+resource. However, it mentions returning schema 'relevant to the user prompt' even though the actual parameters are query and filter, introducing slight ambiguity about how the prompt maps to the tool call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly restricts usage to the Shopify Admin API and warns against using it for Storefront or Functions APIs, which provides clear when/not-to-use guidance. It does not, however, contrast this tool with sibling alternatives such as query_shopify, so the differentiation from tools that execute GraphQL queries is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_inventory_itemsA
This tool retrieves a list of inventory items with optional filtering by SKU. It supports pagination and provides inventory details like available quantities, costs, and locations where items are stocked.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of inventory items to retrieve (default: 10, max: 50) | |
| cursor | No | Pagination cursor for retrieving next set of results | |
| sku_filter | No | Filter inventory items by SKU or partial SKU (e.g., "XYZ-12345") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The verb 'retrieves' signals a read-only operation, and it adds useful behavioral context: optional filtering, pagination, and the kinds of inventory details returned. It does not mention ordering, end-of-pagination behavior, or explicitly state that no mutation occurs, but it is adequate for a simple list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no waste: the first sentence front-loads the main action and filtering capability, and the second adds pagination and returned detail types. It does not repeat parameter names or schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with three optional parameters and no output schema, the description provides the essential context: what it retrieves, filtering, pagination, and output content. It does not describe the exact response shape (since none is provided) or explicitly state the default/max limit values, which are in the schema. Overall, it is complete enough for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description mentions SKU filtering and pagination, which loosely correspond to sku_filter, limit, and cursor, but it adds no meaning beyond the schema's own descriptions. The schema already documents defaults, max values, and filter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'retrieves a list of inventory items' with optional SKU filtering and pagination, and it clarifies what data is returned (quantities, costs, locations). The plural 'list' and its scope distinguish it from the sibling get_inventory_item, even though it does not name the alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly implies when to use the tool: when you need a list of inventory items, possibly filtered by SKU, with pagination support. However, it does not explicitly contrast with alternatives such as get_inventory_item for a single item or browse_products for product browsing, leaving the selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_shopifyA
This tool executes custom GraphQL queries or mutations against the Shopify Admin API. It allows for complete flexibility to access any Shopify Admin API endpoint not covered by the specialized tools, with options to pass variables and enable mutation operations.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The GraphQL query or mutation to execute | |
| variables | No | Optional: Variables for the GraphQL query | |
| allow_mutations | No | Optional: Set to true to allow mutation operations |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It does mention mutation capability and the need to 'enable mutation operations', which signals potential write effects. However, it does not elaborate on consequences of mutations (e.g., irreversibility, permission requirements, rate limits) or error behavior. Adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero fluff. The core purpose and distinguishing scope are front-loaded, and the 'options' clause covers the additional parameters efficiently. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a flexible catch-all with three well-documented parameters and no output schema, the description is mostly complete. It covers purpose, scope, and the mutation gate. A minor gap is that it doesn't mention how to discover available endpoints, though the sibling `introspect_admin_schema` tool exists for that purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all three parameters. The description adds marginal interpretive value by framing `query` as custom GraphQL and mentioning that variables and mutation-enabling are options, but it does not provide syntax, formatting, or deeper semantic guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('executes'), a clear resource ('custom GraphQL queries or mutations against the Shopify Admin API'), and differentiates the tool from siblings by framing it as a flexible fallback for endpoints 'not covered by the specialized tools'. This is immediately distinguishable from the specialized sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool: when you need an endpoint 'not covered by the specialized tools'. It does not list specific sibling tools or give explicit 'do not use when' examples, but the condition is clear enough for an agent to route appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_inventory_quantityA
This tool updates the available quantity of an inventory item at a specific location. It accepts inventory item ID, location ID, and the new available quantity, returning the updated inventory level after adjustment.
| Name | Required | Description | Default |
|---|---|---|---|
| available | Yes | The new available quantity for the inventory item at this location | |
| location_id | Yes | The ID of the location (e.g., "gid://shopify/Location/12345") | |
| inventory_item_id | Yes | The ID of the inventory item (e.g., "gid://shopify/InventoryItem/12345") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does reveal that the tool mutates state ('updates the available quantity') and states the return value ('returning the updated inventory level after adjustment'), but it does not mention permissions, validation rules, reversibility, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficiently structured sentence that front-loads the action ('updates') and directly specifies the resource, inputs, and output. There is no filler or redundant repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with three scalar parameters, no nested objects, and no output schema, the description covers the core purpose, inputs, and return value ('updated inventory level'). It is adequate for selecting and calling the tool, but it omits details about error conditions or permission requirements, though those are not critical for this simple update.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the schema already fully explains all three parameters. The description only lists the parameter names without adding further semantic detail, such as constraints or relationships, beyond what the schema states. A baseline of 3 is appropriate here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'updates the available quantity of an inventory item at a specific location,' and it lists all three inputs and the output. It is clear and unambiguous, but it does not explicitly differentiate from sibling tools such as update_variant_price or add_product_variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool by naming the operation, but it gives no explicit guidance about when to choose it over sibling tools or any exclusions. There is no mention of alternatives or non-use cases, leaving the agent to infer usage from the stated purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_variant_priceA
This tool updates the price and/or compare-at price of a specific product variant. It can set a new regular price, add/update a compare-at price, or remove a compare-at price by passing null or an empty string.
| Name | Required | Description | Default |
|---|---|---|---|
| new_price | No | The new price for the variant. If omitted, price is unchanged. | |
| variant_id | Yes | The Global ID (GID) of the product variant to update (e.g., 'gid://shopify/ProductVariant/98765') | |
| new_compare_at_price | No | The new compare-at price. Send null or empty string to remove it. If omitted, compare-at price is unchanged. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It transparently explains the mutation semantics, including null/empty-string removal of compare-at price, but doesn't mention side effects, persistence, permissions, or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load the core operation and then describe the three supported price actions without filler. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter mutation with full schema coverage, the description plus schema provides enough information to call the tool correctly. It lacks only minor guidance on return/error behavior, and there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already fully documented in the schema. The description mostly restates the schema's semantics (e.g., null/empty removes compare-at) without adding new meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it 'updates the price and/or compare-at price of a specific product variant,' with explicit sub-actions (set price, add/update compare-at, remove compare-at). This separates it from sibling tools like add_product_variant or update_inventory_quantity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage whenever a variant's price fields need to change, but it doesn't explicitly state when not to use it or name a preferred alternative. No exclusion guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_image_from_urlA
This tool uploads an image from a public URL to the Shopify CDN Files section. It handles the transfer of image data to Shopify's servers, allowing you to specify alt text and optional filename for the uploaded image.
| Name | Required | Description | Default |
|---|---|---|---|
| alt_text | No | Descriptive alt text for the image. | |
| filename | No | Optional filename for the uploaded image in Shopify Files. | |
| image_url | Yes | The public URL of the image to upload. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It only says the tool 'handles the transfer of image data to Shopify's servers', which is vague. It does not disclose whether authentication is required, what side effects may occur, how failures (like an invalid URL) are handled, or what the response contains. This is a significant gap for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the core purpose in the first sentence. The second sentence, however, adds little value with the phrase 'It handles the transfer of image data to Shopify's servers', which is redundant with the first sentence. Overall it is concise but has one redundant clause that prevents a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but with no output schema, the description should at least hint at the return value (e.g., uploaded image URL or ID) or constraints like supported image formats. It only mentions alt text and filename, leaving an agent uncertain about how to verify success or use the result. The lack of annotation support makes this incompleteness more damaging.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (`image_url`, `alt_text`, `filename`) is already documented in the schema. The description adds minor context by confirming the image comes from a public URL and that the filename is optional, but it does not significantly enhance parameter meaning beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action 'uploads an image' and the target resource 'Shopify CDN Files section', making the tool's purpose unambiguous. It also mentions the ability to set alt text and filename, which distinguishes it from any other image-related operation. No sibling tool overlaps with this upload functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying this is for uploading from a public URL to Shopify CDN Files. It does not explicitly name alternatives or list when-not-to-use conditions, but the lack of any similar sibling tools makes the intended use clear. The phrase 'public URL' also sets a prerequisite that tells the agent when this tool is applicable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
15 tool updates
v1.0.0- First observed
add_product_variant - First observed
browse_customers - First observed
browse_orders - First observed
browse_products - First observed
create_product - First observed
get_abandonment - First observed
get_customer_contacts - First observed
get_customer_phone - First observed
get_inventory_item - First observed
introspect_admin_schema - First observed
list_inventory_items - First observed
query_shopify - First observed
update_inventory_quantity - First observed
update_variant_price - First observed
upload_image_from_url
TDQS
Most tools target distinct resources and actions, but browse_customers, get_customer_phone, and get_customer_contacts overlap on customer data, and the latter two have no descriptions, making selection ambiguous. There is also mild overlap between browse_products and inventory tools since products can include inventory information.
The naming is readable but inconsistent: read operations are split between browse_*, list_*, and get_*, while creation uses both create_product and add_product_variant. The verbs are not chaotic, but the set does not follow one predictable convention.
15 tools is on the upper edge of a well-scoped set, and most tools serve a distinct Shopify Admin area such as products, inventory, orders, or customers. A few questionable additions like get_customer_phone and get_customer_contacts make it feel slightly padded, but the count is still appropriate for the broad domain.
The product and inventory workflows are reasonably covered, but orders are browse-only, customers lack create/update operations, and there are no product update/delete tools. The generic query_shopify and introspect_admin_schema tools provide an escape hatch, but the specialized surface has notable lifecycle gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connect Amazon Seller Central to Claude or ChatGPT via MCP. Orders, inventory, pricing, fees, FBA.
Connect Claude, Cursor, or ChatGPT to your business data. Ask questions, get answers.
Ask questions across Shopify, Klaviyo, GA4 and 20+ e-commerce sources in plain English.
Ask Claude about your ads: Meta, Google, TikTok, LinkedIn, GA4 & Shopify. No AI credits.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Shopify store data (products, customers, orders) via GraphQL, providing comprehensive tools for store management through Claude.963MIT
- AlicenseCqualityNot gradedmaintenanceEnables interaction with Shopify store data via the GraphQL Admin API for managing products, customers, and orders. It allows users to search, retrieve, create, and update store records through natural language commands.91,192-
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to access and manage Shopify store data including products, orders, inventory, and analytics through the Model Context Protocol. It allows users to query store performance and customer details using natural language.-
- AlicenseNot gradedqualityDmaintenanceEnables querying Shopify store data (products, customers, orders) via GraphQL API using read-only tools. Works with Claude Desktop via npx command.22MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/codeyogi911/shopify-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server