Reference note
UCP Catalog: Search, Lookup, and stable product IDs
How to expose a UCP catalog with Search and Lookup, stabilize identifiers, and connect product discovery to Checkout.
Published . Part of catalog readability for AI agents.
The UCP Catalog capability separates two needs. Search discovers products from a query and filters. Lookup resolves identifiers the platform already knows. This prevents every catalog access from becoming an approximate search.
Key takeaways
- Catalog has 2 negotiable capabilities: Search and Lookup.
- A product groups one or more purchasable variants.
- Catalog prices inform discovery; Checkout remains transactionally authoritative.
This note follows release 2026-08-25. That release keeps Search and Lookup separate
and extends Catalog with fractional sale units, product-level policies, and
extension-defined actions.
What does Catalog cover?
The Catalog specification covers free-text search, category browsing, filtering, batch retrieval, and price comparison across variants. It uses shared entities for context, signals, and attribution.
A Product carries its title, description, media, and variants. A Variant is a
purchasable combination with selected options, price, and availability. Amounts use the
currency’s minor unit and always include an ISO 4217 currency code.
As of release 2026-08-25, variants[].quantity_unit can also declare the sale unit,
scale, and increment. When it is absent, the variant is sold by each. This distinction
matters for products sold by weight, volume, length, or time.
When should Search be used?
Search answers an intent such as “waterproof shoes under 120 euros.” The platform sends query text, market context, and filters. The merchant remains responsible for ranking and interpreting those criteria.
An empty search is not necessarily a transport error. A valid response can contain an empty product list and explanatory messages. The agent must distinguish no results from an unavailable catalog.
Quality depends on exposed data: discriminating titles, normalized variants, explicit prices, current availability, and usable media. The GEO-readable catalog guide explains that semantic base.
When should Lookup be used?
Lookup provides two operations. lookup_catalog receives an ids[] array and returns
matching products. get_product receives one known identifier and returns the detail
needed for a decision, including variant selection.
Implementations must accept product and variant IDs. They may also support SKU, handle, or URL when the returned object exposes the same field. Duplicate inputs must be deduplicated, and the same product must appear only once.
| Need | Operation |
|---|---|
| resolve several identifiers | lookup_catalog |
| render a compact list | lookup_catalog |
| load full product detail | get_product |
| choose a variant | get_product |
How does Catalog connect to Checkout?
The variant ID returned by Catalog should match checkout.line_items[].item.id. This
contract removes an implicit translation layer between discovery and transaction.
Catalog prices and availability reflect current terms for the request, but they are not transactional commitments. They may be session-specific and should not be reused without validation. Checkout remains authoritative at purchase time.
Design mistakes to avoid
- Running Search to resolve an exact SKU.
- Exposing different IDs in Catalog and Checkout.
- Mixing product and variant in an untyped identifier field.
- Caching a search price as if it were guaranteed.
- Omitting currency or the minor-unit convention.
- Returning partial results without messages for unresolved IDs.
Catalog quality checklist
- advertise Search and Lookup separately;
- assign stable, purchasable variant IDs;
- apply filters after identifier resolution;
- return price, currency, and availability;
- declare
quantity_unitand its increment for non-each sales; - report unknown IDs without discarding valid matches;
- revalidate the final price in Checkout.
These contracts fit into the broader UCP implementation guide.
Sources
Back to catalog readability for AI agents · All notes · Lire en français