MCP App Store
Productivity
Shopify icon

Shopify

by Shopify

Overview

Shopify for Claude makes store management as easy as having a conversation. Effortlessly connect your existing store and simply chat to add products, adjust inventory across locations, create discount codes, browse recent orders, view customer details, or pull analytics on your store's performance.

Tools

add-to-collection

ChatGPT
Add one or more products to a collection in the connected Shopify store. Use this when the user wants to organize products into a collection. IMPORTANT: This tool already presents the primary data in a visual widget the user can see. Do not restate it in text. Use your response only for interpretation, caveats, or next steps. Always list out some potential next actions for the user to take.

bulk-update-product-status

ChatGPT
Update the status of multiple products at once. Accepts a list of product IDs or a collectionId and a target status (ACTIVE, DRAFT, or ARCHIVED). Each product is updated individually so partial failures are possible. When using collectionId, only the first 50 products in the collection will be updated. IMPORTANT: This tool already presents the primary data in a visual widget the user can see. Do not restate it in text. Use your response only for interpretation, caveats, or next steps. Always list out some potential next actions for the user to take.

claim-storefront-preview

ChatGPT
Signal that the user clicked a storefront preview's signup link. Revokes the current shop token (if any) so the next tool call prompts a fresh OAuth for the newly claimed store. Called only by the get-new-store-previews tool's widget — never invoke directly from the model.

create-collection

ChatGPT
Create a new collection in the connected Shopify store and publish it to the Online Store. Use this when the user wants to organize products into a new group. COLLECTION TYPES: - Manual collection: pass productIds to add specific products. - Smart collection: pass ruleSet with conditions to auto-populate products. - productIds and ruleSet are mutually exclusive — provide one or neither. SMART COLLECTION RULES: - Common rule columns: TAG, VENDOR, TYPE, TITLE, VARIANT_PRICE. - Common relations: EQUALS, NOT_EQUALS, CONTAINS, NOT_CONTAINS, STARTS_WITH, ENDS_WITH, GREATER_THAN, LESS_THAN. - appliedDisjunctively: true means products matching ANY rule are included (OR logic). - appliedDisjunctively: false means products must match ALL rules (AND logic). IMAGE REQUIREMENTS: - Images must be publicly accessible HTTPS URLs (e.g. https://example.com/photo.jpg). - Local file paths (e.g. /mnt/data/..., file://...) are NOT supported and will fail. - If you have a local file, generated image, or external URL: call the upload-image tool FIRST to get a permanent Shopify CDN URL, then pass that URL here. - Avoid placeholder or non-deterministic image URLs (e.g. picsum.photos) for real collections. IMPORTANT: This tool already presents the primary data in a visual widget the user can see. Do not restate it in text. Use your response only for interpretation, caveats, or next steps. Always list out some potential next actions for the user to take.

create-discount

ChatGPT
Create a percentage-based discount code for the connected Shopify store. Use this when the merchant wants to set up a new discount code with a specific percentage off. Supports scoping to a specific collection, and optional minimum purchase or quantity requirements. The discount will be immediately active unless a future startsAt date is provided, in which case it will be scheduled. Always confirm with the merchant whether they want the discount active right away or scheduled for a specific date before creating it. IMPORTANT: This tool already presents the primary data in a visual widget the user can see. Do not restate it in text. Use your response only for interpretation, caveats, or next steps. Always list out some potential next actions for the user to take.

create-product

ChatGPT
Create a new product in the connected Shopify store. Use this when the user wants to add a product with a title, description, variants, images, or other product details. VARIANTS & OPTIONS: - When providing variants, you MUST also provide the options field as a string array of option names. - Example: for a single default variant use options: ['Title'], for Size/Color variants use options: ['Size', 'Color']. - The options field must be an array of strings (e.g. ['Size', 'Color']), NOT an array of objects. - Each variant's optionValues must reference option names declared in the options array. INVENTORY TRACKING: - To enable inventory tracking on variants, set inventoryItem: { tracked: true } on each variant. - If omitted, inventory defaults to untracked and set-inventory will not work as expected. IMAGE REQUIREMENTS: - Images must be publicly accessible HTTPS URLs (e.g. https://example.com/photo.jpg). - Local file paths (e.g. /mnt/data/..., file://...) are NOT supported and will fail. - If you have a local file, generated image, or external URL: call the upload-image tool FIRST to get a permanent Shopify CDN URL, then pass that URL here. - Avoid placeholder or non-deterministic image URLs (e.g. picsum.photos) for real products. - The first image provided becomes the product's featured image. COLLECTION: - Optionally pass collectionId to add the product to a collection after creation. - To add to multiple collections, use add-to-collection afterward. IMPORTANT: This tool already presents the primary data in a visual widget the user can see. Do not restate it in text. Use your response only for interpretation, caveats, or next steps. Always list out some potential next actions for the user to take.

get-collection

ChatGPT
Retrieve detailed information about a specific Shopify collection by its GID, including title, description, image, products, and rules (for smart collections). MUST be called whenever the user refers to a collection they own or previously created — regardless of phrasing. Trigger phrases include: "my collection", "that collection", "the collection", "show me my collection", "get my collection", or any reference to a previously created or known collection. "Show" and "get" mean the same thing here: always fetch live data from Shopify. Do NOT rely on memory or prior responses — always call this tool for the source of truth. IMPORTANT: This tool already presents the primary data in a visual widget the user can see. Do not restate it in text. Use your response only for interpretation, caveats, or next steps. Always list out some potential next actions for the user to take.

get-inventory-levels

ChatGPT
Retrieve inventory levels for all variants of a product across locations. Use this when the user asks about stock quantities, inventory availability, or wants to see how much inventory is at each location for a given product. IMPORTANT: This tool already presents the primary data in a visual widget the user can see. Do not restate it in text. Use your response only for interpretation, caveats, or next steps. Always list out some potential next actions for the user to take.

get-new-store-previews

ChatGPT
Generate a new Shopify shop based on three short fields describing the store, plus an explicit attestation that the user wants a brand-new store. WHEN TO USE: - User wants to create a new storefront - User wants to generate a store design - User wants to preview a store layout WHEN NOT TO USE: - User wants to edit or modify an existing theme — this tool cannot edit themes - User wants to add a generated theme to a store they already own — previews can only be claimed as brand-new stores - User wants to customize a live storefront's design IMPORTANT: This tool takes FOUR required fields — productOrService, targetAudience, brandStyle (each compressed from what the user said), and userUnderstandsNewStoreOnly. See the userUnderstandsNewStoreOnly field's own description for the rules on when to set it silently versus when to confirm with the user first; do not invent a confirmation step when none of those rules apply. Do NOT invent values for the descriptive fields. If the user has not told you what they sell, who their customers are, or what visual style they want, ASK THEM before calling this tool. Make sure you have enough concrete detail from the user that there's something meaningful to compress — at least varieties or specifics for the product, real audience traits, and concrete visual cues. The previews are much better when each field is grounded in something the user actually said. Each descriptive field (productOrService, targetAudience, brandStyle) is a comma-delimited keyword phrase (max 78 characters), compressed from what the user said — no synonyms, no inferred attributes, no full conversation history. Drop filler words and keep nouns and concrete descriptors. Returns up to 3 storefront previews. Generation typically takes about 3 minutes. After calling this tool, let the user know their previews are on the way and may take a few minutes. Remind them that the previews can only be claimed as brand-new stores; they cannot be applied to an existing storefront or used to edit an existing theme. Keep the conversation going while they wait. IMPORTANT: This tool already presents the primary data in a visual widget the user can see. Do not restate it in text. Use your response only for interpretation, caveats, or next steps. Always list out some potential next actions for the user to take.

get-order

ChatGPT
Retrieve detailed information about a specific Shopify order including line items, fulfillment status, shipping address, and tracking. Use this when the user asks about a particular order's details or status. IMPORTANT: This tool already presents the primary data in a visual widget the user can see. Do not restate it in text. Use your response only for interpretation, caveats, or next steps. Always list out some potential next actions for the user to take.

get-product

ChatGPT
Retrieve detailed information about a specific Shopify product by its GID, including title, status, vendor, variants, images, tags, and inventory. MUST be called whenever the user refers to a product they own or previously created — regardless of phrasing. Trigger phrases include: "my product", "that product", "the product", "show me my product", "get my product", "pull up the product", "open my product", or any reference to a previously created or known product. "Show" and "get" mean the same thing here: always fetch live data from Shopify. Do NOT rely on memory or prior responses — always call this tool for the source of truth. IMPORTANT: This tool already presents the primary data in a visual widget the user can see. Do not restate it in text. Use your response only for interpretation, caveats, or next steps. Always list out some potential next actions for the user to take.

get-shop-info

ChatGPT
Retrieve basic information about the connected Shopify store including name, domain, email, plan, currency, timezone, and country. Use this when you need store context to tailor advice (e.g. plan limitations, currency for pricing, timezone for scheduling), when the user asks about their store details, or to verify which store is connected. IMPORTANT: This tool already presents the primary data in a visual widget the user can see. Do not restate it in text. Use your response only for interpretation, caveats, or next steps. Always list out some potential next actions for the user to take.

get-storefront-generation

ChatGPT
Get the current state of a storefront generation. Used by the widget to poll for preview completion.

graphql_mutation

ChatGPT
Execute a GraphQL mutation against the Shopify Admin API. The Shopify Admin API supports hundreds of mutations. Built-in tools cover common write operations, but when the user asks to modify a resource that has no dedicated tool (e.g. metafields, metaobjects, pages, blogs, translations, publications, etc.), use this tool. Note: Some dangerous mutations are blocked for safety (e.g. refunds, gift card writes, staff management, theme deletion, theme publishing). Theme file writes (themeFilesCopy, themeFilesUpsert) are allowed on unpublished themes only — writes that target the live/MAIN theme are blocked. If a mutation is blocked, inform the user and suggest they perform the action in Shopify admin. The host app will prompt the user for confirmation before executing. Before calling this tool, follow the GraphQL Workflow: 1. Use graphql_schema to look up the exact mutation name (type_name='Mutation') and input type fields — do NOT guess. 2. You can also use search_docs_chunks to find mutation examples in Shopify documentation. 3. Construct the operation. 4. Call validate_graphql_codeblocks to verify the operation — do NOT skip validation. 5. Only then call this tool to execute the mutation. IMPORTANT: After executing, present the results clearly to the user. Do NOT dump raw JSON — summarize what changed in a helpful, readable way.

graphql_query

ChatGPT
Execute a read-only GraphQL query against the Shopify Admin API. The Shopify Admin API exposes hundreds of resources. Built-in tools cover common operations, but when the user asks about a resource that has no dedicated tool (e.g. gift cards, metafields, metaobjects, pages, blogs, markets, translations, publications, etc.), use this tool to fetch the data. Before calling this tool, follow the GraphQL Workflow: 1. Use graphql_schema or search_docs_chunks to discover the correct types and fields — do NOT guess field names. 2. Construct the operation. 3. Call validate_graphql_codeblocks to verify the operation — do NOT skip validation. 4. Only then call this tool to execute the query. Pagination: include pageInfo { hasNextPage endCursor } in your query. Pass the endCursor value as the after variable for the next page. IMPORTANT: After calling this tool, present the results clearly to the user. Do NOT dump raw JSON — summarize the key information in a helpful, readable way.

graphql_schema

ChatGPT
Explore the Shopify Admin GraphQL schema to discover types, fields, and arguments. You MUST use this tool before calling graphql_mutation to look up the exact mutation name and input type fields. Pass a type name to inspect. Common starting points: - 'Mutation' — list all available mutations (search here first for mutations) - 'QueryRoot' — list all available queries - 'Product', 'Order', 'Customer' — inspect entity fields for queries - 'ProductInput', 'ProductVariantInput' — inspect mutation input types Workflow for mutations: graphql_schema('Mutation') → find the mutation → graphql_schema('InputTypeName') → construct the mutation → validate_graphql_codeblocks → graphql_mutation. Workflow for queries: graphql_schema('QueryRoot') → find the query → graphql_schema('TypeName') → construct the query → validate_graphql_codeblocks → graphql_query. You can also use search_docs_chunks to find examples in Shopify documentation.

list-customers

ChatGPT
Retrieve a list of customers from the connected Shopify store, including name, email, phone, order count, and total spent. Use this when the user asks about their customers, wants to look up a specific customer, or needs customer data for analysis. SEARCH SYNTAX: When the user is looking for a specific customer (by name, email, tag, etc.), ALWAYS pass a structured query using Shopify's customer search syntax. Do NOT pass a bare free-text term like Smith for a name search — Shopify's default fields match addresses, tags, company names, and notes, which returns unrelated customers. Field filters use field:value. Combine with AND / OR / NOT; parenthesize subqueries. Ranges use :<, :<=, :>, :>= on numeric / date fields. Name lookups should query BOTH first and last name, e.g. for "customers named Smith" use first_name:Smith OR last_name:Smith. Supported filter fields: - Name: first_name, last_name - Contact: email, phone - Location: country (full name or code, e.g. Canada / CA) - Account state: state (enabled | invited | disabled | declined) - Marketing: accepts_marketing (boolean), email_marketing_state (subscribed | not_subscribed | pending | invalid | redacted) - Tags: tag, tag_not - Numeric (support ranges): orders_count, total_spent, id - Date (support ranges): created_at, updated_at — use ISO 8601 in quotes, e.g. created_at:>'2024-01-01' Examples: - Find customers named Smithfirst_name:Smith OR last_name:Smith - Customers with gmail addressesemail:*@gmail.com - Customers with more than 5 ordersorders_count:>5 - Customers from Canadacountry:Canada - VIP customerstag:vip - Subscribed to emailemail_marketing_state:subscribed IMPORTANT — invalid field names are silently ignored and return everything. Only use the fields listed above. Do NOT invent fields like name:, full_name:, customer_name:, or city:. IMPORTANT: This tool already presents the primary data in a visual widget the user can see. Do not restate it in text. Use your response only for interpretation, caveats, or next steps. Always list out some potential next actions for the user to take.

list-orders

ChatGPT
Retrieve recent orders from the connected Shopify store. Returns order name, customer, totals, financial and fulfillment status. Use this when the user asks about their orders, wants an overview of recent sales, or needs to find a specific order. IMPORTANT: This tool already presents the primary data in a visual widget the user can see. Do not restate it in text. Use your response only for interpretation, caveats, or next steps. Always list out some potential next actions for the user to take.

run-analytics-query

ChatGPT
Run a ShopifyQL analytics query. Returns tabular results with automatic chart visualization. IMPORTANT: Always use FROM...SHOW syntax. Use TIMESERIES for time charts, GROUP BY for categories. Sales & Revenue - FROM sales SHOW gross_sales TIMESERIES day SINCE -30d UNTIL today - FROM sales SHOW orders, gross_sales, discounts, returns, net_sales, shipping_charges, taxes, total_sales TIMESERIES day SINCE -30d UNTIL today - FROM sales SHOW total_sales TIMESERIES day SINCE -30d UNTIL today COMPARE TO previous_period - FROM sales SHOW gross_sales, discounts, returns, net_sales, shipping_charges, taxes, total_sales - FROM sales SHOW average_order_value TIMESERIES day SINCE -30d UNTIL today Orders - FROM sales SHOW orders TIMESERIES day SINCE -7d UNTIL today - FROM fulfillments SHOW orders_fulfilled, orders_shipped, orders_delivered TIMESERIES day SINCE -30d UNTIL today Products - FROM sales SHOW gross_sales, net_sales, orders GROUP BY product_title ORDER BY gross_sales DESC LIMIT 10 - FROM inventory SHOW starting_inventory_units, ending_inventory_units, inventory_units_sold, sell_through_rate GROUP BY product_title, product_variant_title Customers - FROM sales SHOW returning_customers, customers, returning_customer_rate TIMESERIES day SINCE -30d UNTIL today - FROM customers SHOW new_customers, returning_customers TIMESERIES day SINCE -30d UNTIL today Sessions & Conversion - FROM sessions SHOW sessions, online_store_visitors TIMESERIES day SINCE -30d UNTIL today - FROM sessions SHOW sessions, sessions_with_cart_additions, sessions_that_reached_checkout, sessions_that_completed_checkout, conversion_rate TIMESERIES day SINCE -30d UNTIL today - FROM sessions SHOW sessions GROUP BY session_device_type SINCE -30d UNTIL today - FROM sessions SHOW sessions GROUP BY session_country SINCE -30d UNTIL today Marketing & Referrals - FROM sales SHOW orders, total_sales GROUP BY order_referrer_source, order_referrer_name SINCE -30d UNTIL today - FROM sessions SHOW sessions WHERE referrer_source = 'social' GROUP BY referrer_name SINCE -30d UNTIL today Tables: sales, orders, sessions, customers, fulfillments, inventory, payments Time grouping: TIMESERIES day/week/month. Category grouping: GROUP BY column Comparison: COMPARE TO previous_period. Aggregates: WITH TOTALS, PERCENT_CHANGE IMPORTANT: This tool already presents the primary data in a visual widget the user can see. Do not restate it in text. Use your response only for interpretation, caveats, or next steps. Always list out some potential next actions for the user to take.

search_collections

ChatGPT
Search and browse collections on a Shopify store. Use this whenever the user wants to see, find, or look at collections in their store. Trigger phrases include: 'show me my collections', 'what collections do I have', 'list my collections', 'find a collection', 'search collections', or any reference to viewing multiple collections. 'Show' and 'get' mean the same thing: always fetch live data from Shopify. Do NOT summarize from memory. Use this when the user wants to: - list or search collections - find a collection by name - check what collections exist in their store - find a collection GID to use with add-to-collection or create-product Returns collection data from the connected store via the Shopify Admin API. Results are capped at 50 per call. When pageInfo.hasNextPage is true, more matches exist than were returned. Tell the user you are showing the first N results and offer two paths: (a) load more via after: pageInfo.endCursor, or (b) refine the search with a stricter query. Only act on one of those paths when the user asks; do not auto-paginate. SEARCH SYNTAX: Free text matches across default fields (e.g. summer, "new arrivals"). Field filters use field:value. Combine with AND / OR / NOT; parenthesize subqueries. Ranges use :<, :<=, :>, :>= on numeric/date fields. Example: collection_type:smart AND title:sale*. IMPORTANT — invalid field names are silently ignored and return everything. Only use the fields listed below, as flat names. Do NOT invent dotted paths like collection.title or rules.column. Supported filter fields: - Text / exact: title, handle, collection_type (custom|smart) - Numeric (support ranges): id - Date (support ranges): updated_at, published_at — use ISO 8601 in quotes, e.g. updated_at:>'2024-01-01' - ID: product_id (collections containing the given product) - Publication: published_status (e.g. published, unpublished, online_store_channel) Note: there is no server-side filter for product count, rules, or sort order. For those, filter by collection_type and inspect the returned productsCount / sortOrder fields client-side, or narrow with title: / handle:. IMPORTANT: This tool already presents the primary data in a visual widget the user can see. Do not restate it in text. Use your response only for interpretation, caveats, or next steps. Always list out some potential next actions for the user to take.

search_docs_chunks

ChatGPT
This tool will take in the user prompt, search shopify.dev, and return relevant documentation and code examples that will help answer the user's question.

search_products

ChatGPT
Search and browse products on a Shopify store. MUST be called whenever the user wants to see, find, or look at products in their store. Trigger phrases include: 'show me my products', 'what products do I have', 'list my products', 'browse my catalog', 'find a product', 'search for', or any reference to viewing multiple products. 'Show' and 'get' mean the same thing: always fetch live data from Shopify. Do NOT summarize from memory. Use this when the user wants to: - list or search products - look up a specific product by ID or handle - check product status or details - browse what's in their catalog Returns product data from the connected store via the Shopify Admin API. Results are capped at 50 per call. When pageInfo.hasNextPage is true, more matches exist than were returned. Tell the user you are showing the first N results and offer two paths: (a) load more via after: pageInfo.endCursor, or (b) refine the search with a stricter query. Only act on one of those paths when the user asks; do not auto-paginate. SEARCH SYNTAX: Free text matches across default fields (e.g. shoes, "green hoodie"). Field filters use field:value. Combine with AND / OR / NOT; parenthesize subqueries. Ranges use :<, :<=, :>, :>= on numeric/date fields. Example: price:<=25 AND status:active. IMPORTANT — invalid field names are silently ignored and return everything. Only use the fields listed below, as flat names. Do NOT invent dotted paths like variants.price, product.tag, or variant.sku. Supported filter fields: - Text / exact: title, vendor, product_type, handle, sku, barcode, variant_title, tag, tag_not, status (active|archived|draft) - Numeric (support ranges): price (matches products with ANY variant whose price satisfies the condition), inventory_total, id, variant_id - Date (support ranges): created_at, updated_at, published_at — use ISO 8601 in quotes, e.g. created_at:>'2024-01-01' - Boolean: gift_card, bundles, is_price_reduced, out_of_stock_somewhere, tracks_inventory, has_only_default_variant - ID: collection_id, category_id Price examples (cross-variant semantics): - price:<=25 — products with at least one variant priced $25 or less - price:>100 price:<=500 — products with at least one variant in $100–$500 - price:25 — products with at least one variant priced exactly $25 For a min/max of every variant or a product-wide price band, this tool cannot express it server-side; tell the user and suggest narrowing with price: plus another filter (e.g. product_type:, vendor:, tag:). IMPORTANT: This tool already presents the primary data in a visual widget the user can see. Do not restate it in text. Use your response only for interpretation, caveats, or next steps. Always list out some potential next actions for the user to take.

set-inventory

ChatGPT
Set the available inventory quantity for a specific inventory item at a given location. Always call get-inventory-levels first to get the inventoryItemId, locationId, and current available quantity. Pass the current quantity as compareQuantity so the update fails safely if stock changed since you read it. IMPORTANT: This tool already presents the primary data in a visual widget the user can see. Do not restate it in text. Use your response only for interpretation, caveats, or next steps. Always list out some potential next actions for the user to take.

switch-shop

ChatGPT
Switch to a different Shopify store. Call this tool whenever the user wants to work with a different store — including when they ask to fetch data, manage products, or perform any action on another shop. Revokes the current store's access token so the next tool call will prompt authorization for a new store. IMPORTANT: You must always make a follow-up tool call after this tool returns. If the user requested a specific action (e.g. fetch products), call that tool next. Otherwise, you MUST call get-shop-info to complete the shop switch.

update-collection

ChatGPT
Update an existing collection's title, description, image, sort order, or rules. Use this when the user wants to modify, change, or edit collection details. Trigger phrases include: "update my collection", "change the collection", "edit the collection", "rename the collection". IMAGE REQUIREMENTS: - Images must be publicly accessible HTTPS URLs (e.g. https://example.com/photo.jpg). - Local file paths (e.g. /mnt/data/..., file://...) are NOT supported and will fail. - If you have a local file, generated image, or external URL: call the upload-image tool FIRST to get a permanent Shopify CDN URL, then pass that URL here. - Avoid placeholder or non-deterministic image URLs (e.g. picsum.photos) for real collections. SMART COLLECTION RULES: - Pass ruleSet to update the rules for a smart collection. - Common rule columns: TAG, VENDOR, TYPE, TITLE, VARIANT_PRICE. - Common relations: EQUALS, NOT_EQUALS, CONTAINS, NOT_CONTAINS, STARTS_WITH, ENDS_WITH, GREATER_THAN, LESS_THAN. - Passing ruleSet replaces all existing rules. Omitting it leaves rules unchanged. IMPORTANT: This tool already presents the primary data in a visual widget the user can see. Do not restate it in text. Use your response only for interpretation, caveats, or next steps. Always list out some potential next actions for the user to take.

update-product

ChatGPT
Update an existing product's title, description, status, images, variant pricing, or variant option values (e.g. color, size names). Use this when the user wants to modify, change, or edit product details — including status, variant prices, option values, or images. Trigger phrases include: 'update my product', 'change the price', 'edit the product', 'modify my product', 'rename the variant', 'change the color name'. IMAGE REQUIREMENTS: - Images must be publicly accessible HTTPS URLs (e.g. https://example.com/photo.jpg). - Local file paths (e.g. /mnt/data/..., file://...) are NOT supported and will fail. - If you have a local file, generated image, or external URL: call the upload-image tool FIRST to get a permanent Shopify CDN URL, then pass that URL here. - Avoid placeholder or non-deterministic image URLs (e.g. picsum.photos) for real products. REPLACING IMAGES: - To replace specific images, first use get-product to find the mediaId of the image(s) to remove. - Pass those mediaId values in removeMediaIds, and provide the new images in the images array. - To remove images without adding new ones, pass removeMediaIds without images. IMPORTANT: This tool already presents the primary data in a visual widget the user can see. Do not restate it in text. Use your response only for interpretation, caveats, or next steps. Always list out some potential next actions for the user to take.

upload-image

ChatGPT
Upload an image, photo, or media file to Shopify and get a permanent CDN URL. ALWAYS use this tool before create-product or update-product when you have a local file, generated image, or external URL that needs to be hosted on Shopify. This is the ONLY way to attach, host, or store images on Shopify — create-product and update-product cannot accept local file paths directly. WHEN TO USE: - You generated an image or the user pasted/uploaded one — pass it via the 'image' parameter. - You have an external HTTPS image URL and want a stable Shopify-hosted copy — use sourceUrl. - The user says: 'upload', 'attach', 'add image', 'add photo', 'host image', 'store image', 'upload file', 'upload media', 'add a picture', or similar. - Another tool (create-product, update-product) rejected a local file path — call this tool first to get a CDN URL. INPUT (provide exactly one of image or sourceUrl): - image: A file reference (e.g. local file path like /mnt/data/image.png). The host app transforms this into a downloadable URL automatically. THIS IS THE PREFERRED METHOD for generated or uploaded images. Pass the bare file reference — do not construct or echo a file object yourself. - sourceUrl: A publicly accessible HTTPS URL of the image to re-upload to Shopify. Must be reachable by Shopify's servers; private, signed, or host-internal URLs (e.g. presigned blob URLs from your own runtime) are not supported — use the 'image' parameter for those. OUTPUT: - A permanent Shopify CDN URL that can be passed to create-product or update-product image fields. WORKFLOW: 1. Call upload-image with the file or URL. 2. Use the returned CDN URL in create-product or update-product image fields.

validate_graphql_codeblocks

ChatGPT
Validates GraphQL operations against the Shopify schema to catch hallucinated fields, incorrect types, or invalid syntax BEFORE executing them. Supports the Shopify Admin GraphQL API. Pass each GraphQL operation as a codeblock with raw GraphQL content (NOT markdown-formatted). After validation succeeds, execute the operation with graphql_query (for queries) or graphql_mutation (for mutations). If validation fails, fix the errors and re-validate before executing.

add-to-collection

Claude

bulk-update-product-status

Claude

create-collection

Claude

create-discount

Claude

create-product

Claude

get-collection

Claude

get-inventory-levels

Claude

get-order

Claude

get-product

Claude

get-shop-info

Claude

graphql_mutation

Claude

graphql_query

Claude

graphql_schema

Claude

list-customers

Claude

list-orders

Claude

run-analytics-query

Claude

search_collections

Claude

search_docs_chunks

Claude

search_products

Claude

set-inventory

Claude

switch-shop

Claude

update-collection

Claude

update-product

Claude

upload-image

Claude

validate_graphql_codeblocks

Claude

App Stats

53

Tools

3

Prompts

Apr 29, 2026

First seen

ChatGPT, Claude

Platforms

Works with

ChatGPT
Claude

Data refreshed daily