Starting with UCP 2026-08-25, Shopify storefront MCP endpoints offer search_locations / lookup_locations two tools. Agents can filter a merchant's physical stores by name, city, distance, and products carried. This is an optional new feature, so no action is needed if you don't use it.
dev.ucp.common.location.search / dev.ucp.common.location.lookup).These two tools weren't available, so agents using UCP couldn't look up a merchant's physical store information.
The storefront MCP endpoint now exposes search_locations and lookup_locations . This is an optional new feature, so no changes are needed if you don't use it.
https://{storedomain}/api/ucp/mcp.
pagination.limit allows up to 250pagination.cursor valuegid://shopify/Location/123batch_limit_applied message| Item | Spec | Notes |
|---|---|---|
| Search result count | Default 10 pagination.limit , up to 250 via |
Next page via pagination.cursor |
| Lookup ID count | Max 10(after deduplication) | If exceeded, batch_limit_applied is returned, so split into multiple requests |
| filters.items | Max 10 Product variant IDs | Stores that carry all variantsare the only ones that match (AND condition) |
| distance | Explicit center + maximum radius (meters) | The center point must be a location shared by the buyer. Shopify does not infer it from context or IP. |
| query | Matches store name and city | — |
| What a product match means | Follows the existing store availability rules | Not inventory quantity Not a pickup guarantee or reservation either |
Filtering by business hours.
Filtering by store amenities.
Your own filter criteria.
Relations other than distance.
invalid_input they return an error. Also,pickup checkout at the selected store is not supported.Platforms/agents that use the Storefront MCP endpoint with UCP 2026-08-25 and negotiate either location capability.
Shops without retail locations (neither the capability nor the tools are listed). Integrations that don't declare the capability, or that negotiate on an earlier UCP version.
dev.ucp.common.location.search and .lookup declared at version 2026-08-25.
Only call the location tools when they're listed in the shop's profile.
distance.center is sent only from a location the buyer chose to share.
Treat product matches as provisional. Confirm inventory and delivery method before telling buyers an item is "ready."
Shops without retail locations expose neither the capability nor the tools./.well-known/ucp — check that profile and call the tools only when they're listed.
hours / amenities / custom filters / serves arenot ignored—they cause an error invalid_inputIf you reuse a generic UCP client, strip these before sending requests to Shopify.
search defaults to 10 results (max 250), with cursors for further pages. lookup accepts up to 10 IDs after deduplication; for overflow, check batch_limit_applied and resend in smaller batches.
distance.center comes only from a location the buyer chose to share. Shopify also doesn't infer a center point from context or IP. Treat this as a baseline privacy-design assumption.
It's an AND condition across up to 10 variants and follows existing store inventory display rules.It is not an inventory count, a pickup guarantee, or a reservation. Pickup checkout at the selected store also isn't supported, so keep agent responses to "stores likely to have it in stock" and confirm in cart/checkout.
search_locations , pass distance (a center point plus a radius in meters) to surface nearby stores with names and addresses.filters.items and search. Only stores that carry every variant are returned.search_locations with pagination.limit 250 plus a cursor to fetch everything. After that, re-fetch saved IDs with lookup_locations .batch_limit_applied . geo is only present if the merchant has set it, so tolerate missing values.