UCP Checker

Validate UCP location search

Can an agent find a store's shops? Probe location.search and location.lookup on a live store, or paste a response, and check what comes back against 32 rules from the spec: radius, filters, opening hours, lookup and the response. Nothing is stored.

for MCP, the structuredContent
Search and lookup behaviour needs a live probe.

Checking products instead? Use the Catalog Validator. The profile itself? The UCP Validator.

The 32 rules

From the spec's location pages and schemas at release 2026-08-25: location search and lookup.

Each location10 rules
  • Every location has an id and a name
  • No location appears twice across pages
  • Coordinates are real latitudes and longitudes
  • Every location gives its coordinates
  • Every location gives its address
  • Amenities are named ids with a description a buyer can read
  • Opening hours use the spec's days and 24-hour times
  • Holiday hours have dates in order and don't overlap
  • Opening hours say which time zone they are in
  • Every location gives its opening hours
Search10 rules
  • Searching a word from a shop's name finds that shop
  • A radius around a shop finds that shop
  • A radius search returns only shops inside the radius
  • A radius with no center is refused
  • A filter the store doesn't support is refused, not ignored
  • Filtering by an amenity no shop has finds nothing
  • Filtering by an amenity returns only shops that have it
  • Filtering by an item the store doesn't sell finds nothing
  • Asking for shops open now returns only shops open now
  • A refusal says why
Lookup5 rules
  • Looking a shop up by its id finds it
  • Asking for the same shop twice returns it once
  • Each looked-up shop says which requested id found it
  • An id that doesn't exist returns nothing
  • A lookup with a radius keeps shops inside it and drops the rest
Response structure7 rules
  • The response says which protocol version it follows
  • The response names the location search capability
  • Locations come back as a list
  • Over MCP, the answer is in structuredContent
  • Paging says whether there is more, with a cursor to get it
  • A search with no criteria returns one bounded page
  • Search answers within the time agents wait

Questions

What is UCP location search?
Two capabilities in the shared dev.ucp.common namespace, first published in release 2026-08-25: location.search finds a business's physical places by text, by a radius around a point, by an address they serve, or by filters (open at a time, amenities, items in stock), and location.lookup fetches places by id. It is for any vertical: retail stores for pickup, restaurants, hotels, local services.
What does it call?
The store's UCP profile, then up to 13 read-only search_locations and lookup_locations calls (MCP) or POST /locations/search and /locations/lookup (REST), each asking one question the spec answers exactly: a 1 km radius around a returned shop must find it, a filter no store supports must be refused, an id that doesn't exist must return nothing. Nothing is bought, reserved or stored.
Why does a refusal count as a pass?
Because the spec asks for one. A store that gets a filter it doesn't support must reject the request rather than ignore the filter and return more than was asked for, and a radius with no center is invalid. Elsewhere a refusal is reported as it is.
Why are some rules "Not run"?
A rule only passes when it was actually checked. A store with one shop can't show that a lookup radius drops a shop outside it; a store with no hours can't be checked against "open now". A pasted response runs only the rules about what each location carries and the response's shape.
How is distance measured?
The spec uses the shortest WGS 84 geodesic. We measure great-circle distance, which is within about half a percent of it, and allow that before calling a shop outside the radius.