Validate a UCP catalogue
What does a store's catalogue actually send a UCP agent? Probe catalog.search and catalog.lookup on a live store, or paste a response, and audit it against 39 rules. Nothing is stored.
Checking the profile itself? Use the UCP Validator.
The 39 rules
The same rules the free report runs, by the same code, from the spec's catalogue schemas at release 2026-08-25.
Variants7 rules
- Products with several variants say which option each one is
- Each option is its own entry (not "Red / Large" in one)
- Sibling variants use the same option names
- Every variant gives an availability status, not only in stock yes or no
- Every variant option has a name and a label
- Every product option lists at least one value
- Product options match what the variants carry
Product details19 rules
- Every product has the fields the spec requires
- Every variant has the fields the spec requires
- Every product has at least one variant
- Descriptions are in the spec's structured form
- Every description has text in at least one format
- Every product has a plain-text description
- Every product has a formatted (HTML) description
- Descriptive details are kept as details, not as one-choice options
- Every product has at least one image
- Every media item has a type and a URL
- Media links use https
- Videos and 3D models have a preview still
- A media item's sources include its own file
- 3D models have no pixel size
- External videos link to an https player
- Media sizes and lengths are whole numbers above zero
- Every product links to its page with a full URL
- Every product has at least one category
- Every category has a value
Prices6 rules
- Every price has an amount and a currency
- Prices are whole numbers of the smallest currency unit (cents)
- Currencies use standard three-letter codes (USD, EUR)
- Each price range runs from low to high
- One currency across a product and its variants
- Variant prices sit inside the product's price range
Response structure4 rules
- The response says which protocol version it follows
- That protocol version is a published one
- Search answers identify themselves as UCP catalogue search results
- Products come back as a list
Across calls3 rules
- Looking a product up by its id returns the same product
- The same search returns the same products
- Search answers within the time agents wait
What does it call?
With a domain: the store's UCP profile, then
catalog.search for your query, the same search again, and catalog.lookup for the first product, over the transport the profile declares (MCP or REST). Read-only calls; nothing is added to a cart. With a pasted response: nothing at all.Why are some rules "Not run"?
A rule only passes when it was actually checked. Pasting one response can't show whether search is repeatable, lookup returns the same product or the answer came back in time: those need a live probe. A rule also says Not run when the response has nothing for it to check.
Your product data or the catalogue's format?
The first group is what the store enters (option names, images, categories, descriptions), the store's to fix on any platform. The second is the shape of the response, which a hosted store platform controls. The free report splits them the same way.
Is this the same as the free report?
Yes: the same 39 rules, run by the same code. The UCP Validator checks the profile itself.
