Type: Developer Guide / Migration · Stage: Scale · Topic: AI Commerce / Global Catalog / MCP
On this page
Quick answer
Shopify’s deprecated Global Catalog REST API stops serving traffic on November 2, 2026. If an agent, product-discovery tool, or cross-merchant search integration still calls discover.shopifyapps.com/global/..., migrate to Global Catalog MCP at https://catalog.shopify.com/api/ucp/mcp. This is a real shutdown, not just a warning that an older endpoint will receive fewer updates.
What breaks on November 2
The old Global Catalog REST API was deprecated in April 2026. Shopify says that after November 2 the REST endpoints stop serving traffic, including saved-catalog requests. A storefront’s own Admin API, Storefront API, and single-store catalog are separate surfaces; do not mistake this for a shutdown of every Shopify product API.
Search code for these legacy calls:
GET /global/v2/search
GET /global/v2/p/{upid}
GET /global/v2/p/by-variant/{vid}
POST /global/v2/lookup
These endpoints are especially easy to miss when a proof-of-concept agent became a production service without a formal API inventory. Search scheduled jobs, proxy services, mobile clients, and saved catalog integrations, not just the main repository.
Map each REST operation to its MCP replacement
- Search:
/global/v2/searchbecomessearch_catalog. - Product or variant detail:
/global/v2/p/{upid}and/global/v2/p/by-variant/{vid}becomeget_product, using the documented Shopify product or variant GID. - Batch lookup:
/global/v2/lookupbecomeslookup_catalog. The Global Catalog tool supports up to 50 identifiers per request. - Saved catalog: replace the old saved-catalog endpoint path with
catalog.catalog_idin the request.
Global Catalog MCP implements the Universal Commerce Protocol (UCP) Catalog capability. The names and request/response envelopes are different from REST. This is not a find-and-replace URL change.
Send a UCP-aware MCP request
The MCP endpoint accepts JSON-RPC tool calls. Every request must identify the agent using meta.ucp-agent.profile. The agent profile must advertise the relevant base UCP catalog capabilities; Shopify’s Global Catalog extension adds Shopify-specific fields. The following is an illustrative search payload based on Shopify’s documented tool shape:
POST https://catalog.shopify.com/api/ucp/mcp
Content-Type: application/json
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search_catalog",
"arguments": {
"meta": {
"ucp-agent": {
"profile": "https://YOUR-AGENT.example/ucp-profile.json"
}
},
"catalog": {
"query": "trail running shoes",
"context": { "address_country": "US" },
"pagination": { "limit": 10 }
}
}
}
}
Replace the profile URL with your publicly reachable, valid UCP agent profile. Use the credentials and authentication tier appropriate to your integration. Shopify says existing Dev Dashboard client-credential bearer-token generation can continue. Do not put those tokens in storefront JavaScript or public logs.
Update the response adapter, not just the transport
Normalize the new products response into the shape your application expects. Preserve variant IDs, buyer-context price and currency, availability, merchant identity, and checkout URLs where returned. Catalog price objects use minor currency units; do not treat 8999 as $8,999. The newer optional list_price field represents an eligible buyer-visible compare-at price, not a guaranteed MSRP field. It may be absent for a legitimate reason.
Respect result pagination and rate limits. Shopify notes that some catalog metadata is inferred rather than merchant-authored, so do not silently treat generated attributes as verified product facts. If you previously cached catalog responses, recheck the current catalog usage restrictions instead of assuming old caching behavior is still allowed.
Common misunderstanding
“Our saved catalog URL will continue working.” The old REST paths stop serving traffic, including saved catalogs. “MCP means we need to rebuild checkout.” This change concerns Global Catalog product discovery; checkout is a separate capability. “An MCP search result is a final price quote.” Buyer context, availability, currency, and merchant settings still matter when displaying products and preparing checkout.
How to test this
- Inventory legacy REST requests and collect representative search, product, variant, and bulk-lookup fixtures before the deadline.
- Call
tools/listagainst Global Catalog MCP with a valid agent profile and verify the three expected catalog tools are available. - Run
search_catalogfor a known query; verify products, variant IDs, currency, availability, and pagination. - Run
get_productandlookup_catalogagainst known identifiers, including one missing ID. Handle unresolved results gracefully. - Test saved-catalog scoping using
catalog.catalog_id, and repeat with different buyer countries to catch incorrect regional prices. - Exercise authentication failures, throttling, and an empty result set. Switch production traffic only after comparing the new adapter against the legacy fixtures.
Sources and further reading
- Shopify changelog: Global Catalog REST shutdown (October 9, 2026)
- Shopify: Global Catalog MCP reference
- Shopify: About Catalogs and MCP tools
- Shopify: Catalog compare-at prices as list_price (October 9, 2026)
Documentation checked October 22, 2026. Deadline: November 2, 2026.

