Skip to content

Shopify Dude Fix

Shopify Global Catalog REST API Shuts Down November 2, 2026: Migrate Agent Search to MCP

The deprecated Shopify Global Catalog REST API stops serving traffic November 2, 2026. Map search and lookup endpoints to UCP Catalog MCP before agent discovery breaks.

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/search becomes search_catalog.
  • Product or variant detail: /global/v2/p/{upid} and /global/v2/p/by-variant/{vid} become get_product, using the documented Shopify product or variant GID.
  • Batch lookup: /global/v2/lookup becomes lookup_catalog. The Global Catalog tool supports up to 50 identifiers per request.
  • Saved catalog: replace the old saved-catalog endpoint path with catalog.catalog_id in 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

  1. Inventory legacy REST requests and collect representative search, product, variant, and bulk-lookup fixtures before the deadline.
  2. Call tools/list against Global Catalog MCP with a valid agent profile and verify the three expected catalog tools are available.
  3. Run search_catalog for a known query; verify products, variant IDs, currency, availability, and pagination.
  4. Run get_product and lookup_catalog against known identifiers, including one missing ID. Handle unresolved results gracefully.
  5. Test saved-catalog scoping using catalog.catalog_id, and repeat with different buyer countries to catch incorrect regional prices.
  6. 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

Documentation checked October 22, 2026. Deadline: November 2, 2026.