Catalog MCP
The Catalog MCP server enables AI agents to search and discover products across the global Shopify ecosystem, helping buyers find products from multiple merchants and retrieve detailed product information.
Anchor to How it worksHow it works
The Catalog MCP server lets your AI agent help buyers discover products:
- Search globally for products across all Shopify merchants based on buyer preferences and criteria.
- Get detailed information about specific products including variants, pricing, and availability.
- Filter results by price, location, product options, and other buyer preferences.
For usage guidelines, see About Catalog. For the UCP protocol overview, see Core concepts.
Anchor to AuthenticateAuthenticate
Obtain your client credentials (client ID and secret) from the Catalog section of Dev Dashboard.
Then use those credentials to retrieve a token for subsequent requests.
All requests require the Authorization: Bearer {token} header.
https://api.shopify.com/auth/access_token
The response contains:
access_token: A JWT access token that can be used to interact with the MCP server.scope: The list of access scopes that were granted to your API key.expires_in: The number of seconds until the access token expires.
JWT tokens created from Dev Dashboard credentials have a 60-minute TTL. You can use a JWT decoder tool like jwt.io to investigate more details related to how Shopify issues this token.
{} Response
All requests follow the JSON-RPC 2.0 protocol. Send
Learn more about building agentic commerce experiences.
https://discover.shopifyapps.com/global/mcp
Anchor to Available toolsAvailable tools
Catalog MCP provides core tools for product discovery across all of Shopify:
search_global_products: Search for products across all Shopify merchants based on buyer queries and preferences.get_global_product_details: Retrieve detailed information about a specific product using its Universal Product ID (UPID) or a variant ID.
Anchor to [object Object]search_global_products
search_global_productsSearch for products across the global Shopify catalog based on buyer queries and preferences.
Use this tool when buyers are searching for products without specifying a particular shop. The tool searches across all Shopify merchants and returns relevant products based on the query, price range, shipping preferences, and other criteria.
When to use:
- "I'm looking for a pair of shoes"
- "Could you find me some blue jeans?"
- "I need a new dress, I'm a size 10 and I like the color blue"
The search_global_products tool wraps the Search endpoint of Catalog API, which can also be used depending on your use case.
The search_global_products tool wraps the Search endpoint of Catalog API, which can also be used depending on your use case.
Anchor to ParametersParameters
Additional information about the request such as user demographics, mood, location, or other relevant details that could help tailor the response.
The search query to find related products. For example, "shoes", "blue jeans".
When true, include only products available for sale.
When false, include unavailable items if they are a good match for the query.
When true, include secondhand products in the results.
Maximum number of products to return (1-300).
Maximum price the buyer is willing to pay (without currency unit).
Minimum price the buyer is willing to pay (without currency unit).
The maximum number of products to return per universal product (1-10).
When true, include only subscription products. When false, include only non-subscription products.
The slug of a catalog saved through Dev Dashboard. While parameters set upon calling the search_global_products tool are applied, filters in the saved catalog always take precedence when a slug is provided.
Filter by shipping origin (ISO country code).
Filter by shipping destination (ISO country code).
Array of shop IDs to filter by specific shops.
https://discover.shopifyapps.com/global/mcp
{} Response
Anchor to ExamplesExamples
Anchor to Use price and shipping filtersUse price and shipping filters
Narrow results by combining price range and shipping destination filters. This example searches for wireless headphones within a $50–$200 budget, only returning in-stock products that ship to the US.
https://discover.shopifyapps.com/global/mcp
Anchor to Subscription productsSubscription products
Filter for products that require a selling plan to surface subscription-only offerings. This example finds coffee beans available as recurring subscriptions that ship to Canada.
https://discover.shopifyapps.com/global/mcp
Anchor to Secondhand productsSecondhand products
Include pre-owned and vintage items by enabling the secondhand filter. This example searches for leather jackets under $150, expanding results to include sustainable, secondhand options.
https://discover.shopifyapps.com/global/mcp
Anchor to [object Object]get_global_product_details
get_global_product_detailsRetrieve detailed information about a specific product using its Universal Product ID (UPID) or a variant ID.
You must provide exactly one of upid or variant_id. Providing both returns an error.
You must provide exactly one of upid or variant_id. Providing both returns an error.
Use this tool when a buyer is asking about a specific product and you have either the product ID or a variant ID. This tool returns comprehensive product information including all variants, detailed pricing, availability, and shop details.
When to use:
- A buyer asks "Tell me more about this product" with a product link or ID.
- You need to look up detailed information for a specific product.
- You need to show variant options, pricing, and availability for a specific product.
- You have a variant ID and need to find the Universal Product it belongs to.
The get_global_product_details tool wraps the Lookup and Lookup by variant endpoints of Catalog API, which can also be used depending on your use case.
The get_global_product_details tool wraps the Lookup and Lookup by variant endpoints of Catalog API, which can also be used depending on your use case.
Anchor to ParametersParameters
The Universal Product ID (in Base62 encoded format). Required if variant_id isn't provided.
A Shopify variant ID. Required if upid isn't provided. Returns the Universal Product that the variant belongs to, with that variant ranked first in results.
Reference to the Global Search that generated the URL.
When true, include only products available for sale.
When false, include unavailable items if they're a good match for the query.
Additional information about the request.
When true, include secondhand products in the result. This doesn't mean that only secondhand products will appear in the results.
Maximum number of offers to return for the product (1-100).
Comma-separated list of option names ranked by importance (for example, "Color,Size,Material"). Filters are relaxed starting with the least important option.
Pins this product to the first position in results, regardless of relevance ranking.
Filter by product options such as color or size. Each item has key (option name) and values (array of option values).
Additional keyword search within the product.
Filter by shipping origin (ISO country code).
Filter by shipping destination (ISO country code).
Filter by specific shop (numeric ID or Shop GID).
https://discover.shopifyapps.com/global/mcp
{} Response
Anchor to ExamplesExamples
Anchor to Lookup by variant IDLookup by variant ID
When you have a variant ID instead of a UPID, pass it directly. The response returns the Universal Product containing that variant, with the specified variant ranked first.
https://discover.shopifyapps.com/global/mcp
Anchor to Filter by product optionsFilter by product options
Narrow results to specific colors or sizes by passing an array of option key-value pairs. This example requests Blue or Navy in Medium or Large, with context about the buyer's preferences.
https://discover.shopifyapps.com/global/mcp
Anchor to Option preferences for flexible matchingOption preferences for flexible matching
Rank option importance so filters relax gracefully when exact matches aren't available. Here, color takes priority over size. If red isn't in stock, size is relaxed first.
https://discover.shopifyapps.com/global/mcp
Anchor to Pin a specific shop and variantPin a specific shop and variant
Use shop_id and variant_id to force a particular offer to the top of results.
https://discover.shopifyapps.com/global/mcp
Anchor to Workflow exampleWorkflow example
A typical workflow combines both tools: search first, then look up details.
Anchor to Step 1: Search for productsStep 1: Search for products
Start by searching the global catalog with the buyer's query and preferences. The response includes product variants with UPIDs you can use for detailed lookups.
https://discover.shopifyapps.com/global/mcp
Anchor to Step 2: Get details for a specific productStep 2: Get details for a specific product
Use the UPID from search results to retrieve full product information. Add option filters to narrow down to the buyer's preferred variants.
https://discover.shopifyapps.com/global/mcp
Anchor to Best practicesBest practices
- Context is key: Always provide detailed context about the buyer's needs and preferences to get better results.
- Price ranges: Use
min_priceandmax_priceinsearch_global_productsto filter results within buyer budgets. - Shipping: Include
ships_tofor accurate shipping options and regional pricing. - Product options: When filtering by options, use
option_preferencesto specify which options are most important. - Availability: Set
available_for_saletotrueto avoid showing out-of-stock items. - Limit wisely: Start with reasonable limits (10-20) and increase only if needed.
- Error handling: Check response status and provide helpful feedback to buyers.