MCP Tools Reference
This is the complete reference for Shopify MCP tools across official and community servers. Tools are organized by domain so you can quickly find the operation you need.
Not every tool is available in every MCP server. The Server column indicates which servers provide each tool. See Community MCP Servers for server-specific details.
- Dev = Official Shopify Dev MCP
- GeLi = shopify-mcp (GeLi2001)
- Ajackus = @ajackus/shopify-mcp-server
- Composio = Composio Shopify MCP
Products
get_products
Retrieve a list of products with optional filtering.
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | number | No | Number of products to return (default: 50, max: 250) |
title | string | No | Filter by product title (partial match) |
product_type | string | No | Filter by product type |
vendor | string | No | Filter by vendor name |
status | string | No | Filter by status: active, draft, archived |
collection_id | string | No | Filter by collection membership |
created_at_min | string | No | ISO 8601 date -- products created after this date |
updated_at_min | string | No | ISO 8601 date -- products updated after this date |
cursor | string | No | Pagination cursor for next page |
Servers: GeLi, Ajackus, Composio
Example:
Get all active products from vendor "Nike" updated in the last 7 days
get_product
Retrieve a single product by ID with full details.
| Parameter | Type | Required | Description |
|---|---|---|---|
product_id | string | Yes | Shopify product GID (e.g., gid://shopify/Product/123456) |
fields | string[] | No | Specific fields to return |
Servers: GeLi, Ajackus, Composio
Example:
Get the full details for product gid://shopify/Product/8234567890
create_product
Create a new product with optional variants and media.
| Parameter | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Product title |
description | string | No | Product description (supports HTML) |
product_type | string | No | Product type for categorization |
vendor | string | No | Vendor name |
tags | string[] | No | Array of tags |
status | string | No | active, draft, or archived (default: draft) |
variants | object[] | No | Array of variant objects |
variants[].title | string | No | Variant title |
variants[].price | string | No | Variant price |
variants[].sku | string | No | SKU code |
variants[].inventory_quantity | number | No | Initial inventory |
variants[].option1 | string | No | First option value (e.g., "Small") |
variants[].option2 | string | No | Second option value (e.g., "Red") |
variants[].option3 | string | No | Third option value |
options | object[] | No | Product options (e.g., Size, Color) |
metafields | object[] | No | Product metafields |
images | object[] | No | Image URLs to attach |
Servers: GeLi, Ajackus, Composio
Example:
Create a new draft product:
- Title: "Organic Cotton T-Shirt"
- Type: "Apparel"
- Vendor: "EcoWear"
- Tags: ["organic", "cotton", "sustainable"]
- Options: Size (S, M, L, XL), Color (White, Black, Navy)
- Base price: $29.99
update_product
Update an existing product's fields.
| Parameter | Type | Required | Description |
|---|---|---|---|
product_id | string | Yes | Shopify product GID |
title | string | No | Updated title |
description | string | No | Updated description |
product_type | string | No | Updated product type |
vendor | string | No | Updated vendor |
tags | string[] | No | Updated tags (replaces existing) |
status | string | No | Updated status |
metafields | object[] | No | Metafields to set or update |
Servers: GeLi, Ajackus, Composio
delete_product
Delete a product permanently.
| Parameter | Type | Required | Description |
|---|---|---|---|
product_id | string | Yes | Shopify product GID |
Servers: GeLi, Composio
Product deletion is permanent and cannot be undone. The AI assistant should always confirm before executing this tool.
search_products
Full-text search across product catalog.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | Search query (searches title, description, SKU, tags) |
limit | number | No | Max results (default: 25) |
Servers: GeLi, Composio
manage_product_media
Add, remove, or reorder product images and videos.
| Parameter | Type | Required | Description |
|---|---|---|---|
product_id | string | Yes | Shopify product GID |
action | string | Yes | add, remove, reorder |
media_urls | string[] | No | URLs for media to add |
media_ids | string[] | No | Media GIDs to remove or reorder |
Servers: GeLi
manage_product_metafields
Create, update, or delete product metafields.
| Parameter | Type | Required | Description |
|---|---|---|---|
product_id | string | Yes | Shopify product GID |
metafields | object[] | Yes | Array of metafield operations |
metafields[].namespace | string | Yes | Metafield namespace |
metafields[].key | string | Yes | Metafield key |
metafields[].value | string | Yes | Metafield value |
metafields[].type | string | Yes | Metafield type (single_line_text_field, number_integer, json, etc.) |
Servers: GeLi, Composio
Variants
get_variants
List variants for a product.
| Parameter | Type | Required | Description |
|---|---|---|---|
product_id | string | Yes | Shopify product GID |
Servers: GeLi, Ajackus, Composio
update_variant
Update variant details (price, SKU, weight, etc.).
| Parameter | Type | Required | Description |
|---|---|---|---|
variant_id | string | Yes | Shopify variant GID |
price | string | No | New price |
compare_at_price | string | No | Compare-at price |
sku | string | No | SKU code |
barcode | string | No | Barcode |
weight | number | No | Weight value |
weight_unit | string | No | kg, g, lb, oz |
requires_shipping | boolean | No | Whether variant requires shipping |
taxable | boolean | No | Whether variant is taxable |
Servers: GeLi, Ajackus, Composio
Orders
get_orders
Retrieve orders with filtering options.
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | number | No | Number of orders (default: 50) |
status | string | No | open, closed, cancelled, any |
financial_status | string | No | authorized, pending, paid, partially_paid, refunded, voided |
fulfillment_status | string | No | shipped, partial, unshipped, unfulfilled |
created_at_min | string | No | ISO 8601 date |
created_at_max | string | No | ISO 8601 date |
customer_id | string | No | Filter by customer |
cursor | string | No | Pagination cursor |
Servers: GeLi, Ajackus, Composio
Example:
Get all unfulfilled paid orders from the last 24 hours
get_order
Retrieve a single order with full details including line items, shipping, and payment.
| Parameter | Type | Required | Description |
|---|---|---|---|
order_id | string | Yes | Shopify order GID |
Servers: GeLi, Ajackus, Composio
create_draft_order
Create a draft order for manual processing.
| Parameter | Type | Required | Description |
|---|---|---|---|
line_items | object[] | Yes | Array of line items |
line_items[].variant_id | string | Yes | Variant GID |
line_items[].quantity | number | Yes | Quantity |
customer | object | No | Customer details |
shipping_address | object | No | Shipping address |
billing_address | object | No | Billing address |
note | string | No | Order note |
tags | string[] | No | Order tags |
discount | object | No | Order-level discount |
Servers: GeLi, Composio
fulfill_order
Create a fulfillment for an order.
| Parameter | Type | Required | Description |
|---|---|---|---|
order_id | string | Yes | Shopify order GID |
tracking_number | string | No | Carrier tracking number |
tracking_company | string | No | Carrier name |
tracking_url | string | No | Tracking URL |
notify_customer | boolean | No | Send notification email (default: true) |
line_items | object[] | No | Specific line items to fulfill (partial fulfillment) |
Servers: GeLi, Ajackus, Composio
cancel_order
Cancel an open order.
| Parameter | Type | Required | Description |
|---|---|---|---|
order_id | string | Yes | Shopify order GID |
reason | string | No | customer, fraud, inventory, declined, other |
refund | boolean | No | Whether to issue a refund |
restock | boolean | No | Whether to restock items |
notify_customer | boolean | No | Send cancellation email |
Servers: GeLi, Composio
refund_order
Create a refund for an order.
| Parameter | Type | Required | Description |
|---|---|---|---|
order_id | string | Yes | Shopify order GID |
refund_line_items | object[] | No | Specific items to refund |
shipping_refund | object | No | Shipping amount to refund |
note | string | No | Refund reason |
notify_customer | boolean | No | Send refund notification |
Servers: GeLi, Composio
Customers
get_customers
Retrieve customers with filtering.
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | number | No | Number of customers (default: 50) |
query | string | No | Search query (name, email, phone) |
created_at_min | string | No | ISO 8601 date |
tags | string | No | Filter by tag |
cursor | string | No | Pagination cursor |
Servers: GeLi, Ajackus, Composio
get_customer
Retrieve a single customer with order history.
| Parameter | Type | Required | Description |
|---|---|---|---|
customer_id | string | Yes | Shopify customer GID |
Servers: GeLi, Ajackus, Composio
create_customer
Create a new customer record.
| Parameter | Type | Required | Description |
|---|---|---|---|
first_name | string | No | First name |
last_name | string | No | Last name |
email | string | No | Email address |
phone | string | No | Phone number |
tags | string[] | No | Customer tags |
note | string | No | Internal note |
addresses | object[] | No | Customer addresses |
metafields | object[] | No | Customer metafields |
email_marketing_consent | boolean | No | Email marketing opt-in |
sms_marketing_consent | boolean | No | SMS marketing opt-in |
Servers: GeLi, Ajackus, Composio
update_customer
Update customer information.
| Parameter | Type | Required | Description |
|---|---|---|---|
customer_id | string | Yes | Shopify customer GID |
first_name | string | No | Updated first name |
last_name | string | No | Updated last name |
email | string | No | Updated email |
phone | string | No | Updated phone |
tags | string[] | No | Updated tags |
note | string | No | Updated note |
Servers: GeLi, Ajackus, Composio
search_customers
Search customers by various criteria.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | Search term |
limit | number | No | Max results |
Servers: GeLi, Composio
Inventory
get_inventory_levels
Get inventory levels across locations.
| Parameter | Type | Required | Description |
|---|---|---|---|
inventory_item_id | string | No | Specific inventory item GID |
location_id | string | No | Specific location GID |
product_id | string | No | Get all inventory for a product |
Servers: GeLi, Ajackus, Composio
Example:
Show me inventory levels for all variants of product gid://shopify/Product/123
across all warehouse locations
adjust_inventory
Adjust inventory quantities at a location.
| Parameter | Type | Required | Description |
|---|---|---|---|
inventory_item_id | string | Yes | Inventory item GID |
location_id | string | Yes | Location GID |
adjustment | number | Yes | Quantity change (positive or negative) |
reason | string | No | Reason: correction, received, damaged, shrinkage, promotion |
Servers: GeLi, Ajackus, Composio
Inventory adjustments are relative, not absolute. An adjustment of -5 removes 5 units from the current quantity. Double-check the current level before making large adjustments.
set_inventory
Set inventory to a specific quantity (absolute).
| Parameter | Type | Required | Description |
|---|---|---|---|
inventory_item_id | string | Yes | Inventory item GID |
location_id | string | Yes | Location GID |
quantity | number | Yes | New quantity |
reason | string | No | Reason for the change |
Servers: GeLi, Composio
get_locations
List all inventory locations.
| Parameter | Type | Required | Description |
|---|---|---|---|
active | boolean | No | Filter active/inactive locations |
Servers: GeLi, Ajackus, Composio
transfer_inventory
Transfer inventory between locations.
| Parameter | Type | Required | Description |
|---|---|---|---|
inventory_item_id | string | Yes | Inventory item GID |
from_location_id | string | Yes | Source location GID |
to_location_id | string | Yes | Destination location GID |
quantity | number | Yes | Quantity to transfer |
Servers: GeLi
Collections
get_collections
Retrieve collections (smart and custom).
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | number | No | Number of collections |
type | string | No | smart, custom, or all |
title | string | No | Filter by title |
Servers: GeLi, Composio
create_collection
Create a new collection.
| Parameter | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Collection title |
description | string | No | Collection description (HTML) |
type | string | Yes | smart or custom |
rules | object[] | No | Smart collection rules (required for smart type) |
rules[].column | string | Yes | Rule column: title, type, vendor, tag, price, weight, variant_title |
rules[].relation | string | Yes | equals, not_equals, greater_than, less_than, starts_with, ends_with, contains |
rules[].condition | string | Yes | Rule value |
disjunctive | boolean | No | true = any rule matches, false = all rules match |
sort_order | string | No | alpha-asc, alpha-desc, best-selling, created, created-desc, manual, price-asc, price-desc |
image | string | No | Collection image URL |
Servers: GeLi, Composio
Example:
Create a smart collection called "Summer Sale" that includes all
products tagged "summer" with price less than $50, sorted by best-selling
add_products_to_collection
Add products to a custom collection.
| Parameter | Type | Required | Description |
|---|---|---|---|
collection_id | string | Yes | Collection GID |
product_ids | string[] | Yes | Array of product GIDs to add |
Servers: GeLi, Composio
remove_products_from_collection
Remove products from a custom collection.
| Parameter | Type | Required | Description |
|---|---|---|---|
collection_id | string | Yes | Collection GID |
product_ids | string[] | Yes | Array of product GIDs to remove |
Servers: GeLi, Composio
Discounts
get_discounts
List active and scheduled discounts.
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | number | No | Number of discounts |
type | string | No | code, automatic, or all |
status | string | No | active, expired, scheduled |
Servers: GeLi, Composio
create_discount_code
Create a code-based discount.
| Parameter | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Internal discount title |
code | string | Yes | The discount code customers enter |
type | string | Yes | percentage, fixed_amount, free_shipping |
value | number | Yes | Discount value (percentage or amount) |
applies_to | string | No | all_products, specific_collections, specific_products |
collection_ids | string[] | No | Collection GIDs (when applies_to is specific_collections) |
product_ids | string[] | No | Product GIDs (when applies_to is specific_products) |
minimum_requirement | object | No | Minimum purchase amount or quantity |
usage_limit | number | No | Total number of times this discount can be used |
once_per_customer | boolean | No | Limit to one use per customer |
starts_at | string | No | ISO 8601 start date |
ends_at | string | No | ISO 8601 end date |
Servers: GeLi, Composio
Example:
Create a discount code "SPRING25" for 25% off all products in the
"Spring Collection", minimum purchase $50, limited to 500 uses,
valid March 1-31 2026
create_automatic_discount
Create an automatic discount that applies at checkout.
| Parameter | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Discount title (shown to customers) |
type | string | Yes | percentage, fixed_amount, buy_x_get_y, free_shipping |
value | number | Yes | Discount value |
minimum_requirement | object | No | Minimum purchase requirement |
starts_at | string | Yes | ISO 8601 start date |
ends_at | string | No | ISO 8601 end date |
Servers: GeLi, Composio
delete_discount
Delete a discount.
| Parameter | Type | Required | Description |
|---|---|---|---|
discount_id | string | Yes | Discount GID |
Servers: GeLi, Composio
Analytics
get_shop_info
Retrieve store information and configuration.
| Parameter | Type | Required | Description |
|---|---|---|---|
| (none) | Returns full shop details |
Servers: GeLi, Ajackus, Composio
Returns: Store name, domain, email, currency, timezone, plan, features, and more.
get_order_count
Get order counts with optional date filtering.
| Parameter | Type | Required | Description |
|---|---|---|---|
status | string | No | open, closed, cancelled, any |
financial_status | string | No | Payment status filter |
fulfillment_status | string | No | Fulfillment status filter |
created_at_min | string | No | ISO 8601 date |
created_at_max | string | No | ISO 8601 date |
Servers: GeLi, Composio
get_sales_report
Generate sales analytics for a date range.
| Parameter | Type | Required | Description |
|---|---|---|---|
start_date | string | Yes | ISO 8601 start date |
end_date | string | Yes | ISO 8601 end date |
group_by | string | No | day, week, month |
Servers: Adzviser, ShopifyPy
get_top_products
Get best-selling products by revenue or quantity.
| Parameter | Type | Required | Description |
|---|---|---|---|
start_date | string | Yes | ISO 8601 start date |
end_date | string | Yes | ISO 8601 end date |
limit | number | No | Number of products (default: 10) |
sort_by | string | No | revenue or quantity |
Servers: Adzviser, ShopifyPy
Documentation Tools (Official Dev MCP)
These tools are available exclusively through the Official Shopify Dev MCP Server:
| Tool | Description |
|---|---|
search_docs | Full-text search across all Shopify developer documentation |
explore_api_schema | Browse and explore Shopify GraphQL API schemas |
get_liquid_reference | Access Liquid template language reference |
get_function_reference | Shopify Functions API reference and scaffolding |
validate_graphql | Validate GraphQL queries against the Shopify schema |
See the Official MCP Servers page for detailed parameter documentation.
Common Tool Patterns
Bulk Operations
Many operations can be composed into bulk workflows:
1. Get all products tagged "clearance" → get_products with tag filter
2. For each product, reduce price by 50% → update_variant (loop)
3. Move products to "Sale" collection → add_products_to_collection
4. Create a "CLEARANCE50" discount code → create_discount_code
Audit Workflows
1. Get all products → get_products (paginated)
2. Check each for missing descriptions → filter in AI
3. Check inventory levels → get_inventory_levels
4. Flag products with zero stock → adjust_inventory or archive
Customer Service
1. Search customer by email → search_customers
2. Get their recent orders → get_orders with customer_id
3. Check order fulfillment status → get_order
4. Process refund if needed → refund_order
The most powerful pattern is combining the Dev MCP (for documentation) with a Store MCP (for live data). Ask Claude to look up the correct API approach in the docs, then execute it against your store -- all in one conversation.