The UCP Checker & Validator
for agentic commerce
Check any store's Universal Commerce Protocol readiness, validate profiles against the spec, and see what a UCP agent finds when it reads your store's UCP profile.
Free, read-only, no account. Not live yet? Paste the profile into the validator.
About 20,000 stores in our directory publish a valid UCP profile. Checked against release 2026-08-25. Browse the directory
Every store gets a score.
A score from 0 to 100 for how well your store's UCP profile follows the spec and what it lets a UCP agent do: three weighted parts in one number, with the fixes that raise it.
969295Grade bands A 85+ B 70+ C 50+ D 30+ F 0
The live state of the UCP market
We check about 25,000 stores: a public record of who publishes a UCP profile and how well it follows the spec. The methodology is public.
We don't just read the profile. We test what an agent actually does.
Most checks stop at the profile. We look at both sides: what a store declares, and what happened when an agent used it in our runs. Where the two differ is what's worth fixing.
What the store declares
"ucp": {
"version": "2026-08-25",
"services": { "dev.ucp.shopping": [ mcp, rest ] },
"capabilities": { "…checkout": […], "…cart": […] }
}
Fetched from /.well-known/ucp and validated against the release it names, across every store we check.
What an agent could do
search_catalogansweredget_productansweredcreate_cartansweredcreate_checkouthanded to the buyer
A real model shops the store over UCP. Open UCP Playground ↗
The protocol agents use to shop
The Universal Commerce Protocol turns a store into something an agent can read and use: find products, build a cart, check out. UCP Checker reads about 25,000 stores, so you can see what works, what breaks, and what's next.
One JSON file at /.well-known/ucp
A store publishes one UCP profile: its services, capabilities, transports and payment handlers. The guide
Read first by UCP agents
A UCP agent fetches the profile before anything else to learn what the store offers and how to buy from it. Without one, it has nothing to go on.
Compliance is not binary
A profile can parse and still not work. We look at conformance, capability coverage and response time, not just whether the file is valid JSON.
An agent shopping our sandbox store over UCP, end to end. The requests and answers are recorded from the store.
Everything you need to ship UCP
From the first check to a test with a real agent: free tools for your whole UCP surface.
Check
Measure
From a URL to a status page in three steps
No SDK, no code changes. Enter a domain and UCP Checker fetches, validates and publishes what it found.
- Step 1
We fetch your profile
We request
/.well-known/ucpthe way an agent would, with TLS checks and a short timeout, and read robots.txt for which bots it lets in. - Step 2
We validate it against the spec
Against the release your profile declares: required fields, capabilities, transports and payment handlers, then we call the endpoints it names.
- Step 3
We publish the result
Your store gets a status page and a score page with what to fix, and the result counts towards the public stats.
See agentic readiness on every store you visit
A free Chrome extension that reads /.well-known/ucp on the store you're on: its release, capabilities, payment handlers and ways in, and which bots its robots.txt lets in.
- Green dot: the store publishes a valid UCP profile.
- Reads only
/.well-known/ucpand robots.txt, never your cookies, history or the page. - Share what it finds: sends the store's domain and its UCP profile to UCP Checker, nothing about you.
What a store's catalogue tells an agent
The Catalog Validator searches a store over UCP, looks each product up again, and checks every field against the spec: prices, variants, availability, images. Here it is on our sandbox flower shop.
search_catalog "roses", 3 of 24 shownMCP · 702ms
bouquet_roses as the agent received it
{
"id": "bouquet_roses",
"title": "Bouquet of Red Roses",
"description": {
"plain": "A classic dozen of long-stem red roses."
},
"handle": "bouquet_roses",
"url": "https://flowers.ucpsandbox.com/products/bouquet_roses",
"price_range": {
"min": {
"amount": 3500,
"currency": "USD"
},
"max": {
"amount": 3500,
"currency": "USD"
}
},
"categories": [
{
"value": "Bouquets"
}
],
"tags": [
"roses",
"red",
"classic",
"romance"
],
"variants": [
{
"id": "bouquet_roses",
"title": "Bouquet of Red Roses",
"description": {
"plain": "A classic dozen of long-stem red roses."
},
"sku": "BOUQUET_ROSES",
"url": "https://flowers.ucpsandbox.com/products/bouquet_roses",
"price": {
"amount": 3500,
"currency": "USD"
},
"availability": {
"available": true,
"status": "in_stock"
},
"media": [
{
"type": "image",
"url": "https://flowers.ucpsandbox.com/images/flowers/bouquet_roses.webp",
"alt_text": "Bouquet of Red Roses"
}
],
"fulfillment": {
"methods": [
{
"type": "shipping",
"availability": {
"available": true
}
},
{
"type": "pickup",
"description": {
"plain": "Free. Collect from one of our shops, usually ready within two hours of opening."
},
"availability": {
"available": true
}
}
]
}
}
],
"media": [
{
"type": "image",
"url": "https://flowers.ucpsandbox.com/images/flowers/bouquet_roses.webp",
"alt_text": "Bouquet of Red Roses",
"width": 600,
"height": 600
}
]
}
set_anniversary_red as the agent received it
{
"id": "set_anniversary_red",
"title": "Anniversary Reds",
"description": {
"plain": "Twelve red roses, chocolates and a card."
},
"handle": "set_anniversary_red",
"url": "https://flowers.ucpsandbox.com/products/set_anniversary_red",
"price_range": {
"min": {
"amount": 5200,
"currency": "USD"
},
"max": {
"amount": 5200,
"currency": "USD"
}
},
"categories": [
{
"value": "Occasions"
}
],
"tags": [
"anniversary",
"roses",
"gift"
],
"variants": [
{
"id": "set_anniversary_red",
"title": "Anniversary Reds",
"description": {
"plain": "Twelve red roses, chocolates and a card."
},
"sku": "SET_ANNIVERSARY_RED",
"url": "https://flowers.ucpsandbox.com/products/set_anniversary_red",
"price": {
"amount": 5200,
"currency": "USD"
},
"availability": {
"available": true,
"status": "in_stock"
},
"media": [
{
"type": "image",
"url": "https://flowers.ucpsandbox.com/images/flowers/set_anniversary_red.webp",
"alt_text": "Anniversary Reds"
}
],
"fulfillment": {
"methods": [
{
"type": "shipping",
"availability": {
"available": true
}
},
{
"type": "pickup",
"description": {
"plain": "Free. Collect from one of our shops, usually ready within two hours of opening."
},
"availability": {
"available": true
}
}
]
}
}
],
"media": [
{
"type": "image",
"url": "https://flowers.ucpsandbox.com/images/flowers/set_anniversary_red.webp",
"alt_text": "Anniversary Reds",
"width": 600,
"height": 600
}
]
}
preserved_roses_box as the agent received it
{
"id": "preserved_roses_box",
"title": "Preserved Roses Box",
"description": {
"plain": "Nine preserved red roses in a black box, last a year without water."
},
"handle": "preserved_roses_box",
"url": "https://flowers.ucpsandbox.com/products/preserved_roses_box",
"price_range": {
"min": {
"amount": 8900,
"currency": "USD"
},
"max": {
"amount": 8900,
"currency": "USD"
}
},
"categories": [
{
"value": "Dried & Preserved"
}
],
"tags": [
"preserved",
"roses",
"gift"
],
"variants": [
{
"id": "preserved_roses_box",
"title": "Preserved Roses Box",
"description": {
"plain": "Nine preserved red roses in a black box, last a year without water."
},
"sku": "PRESERVED_ROSES_BOX",
"url": "https://flowers.ucpsandbox.com/products/preserved_roses_box",
"price": {
"amount": 8900,
"currency": "USD"
},
"availability": {
"available": true,
"status": "in_stock"
},
"media": [
{
"type": "image",
"url": "https://flowers.ucpsandbox.com/images/flowers/preserved_roses_box.webp",
"alt_text": "Preserved Roses Box"
}
],
"fulfillment": {
"methods": [
{
"type": "shipping",
"availability": {
"available": true
}
},
{
"type": "pickup",
"description": {
"plain": "Free. Collect from one of our shops, usually ready within two hours of opening."
},
"availability": {
"available": true
}
}
]
}
}
],
"media": [
{
"type": "image",
"url": "https://flowers.ucpsandbox.com/images/flowers/preserved_roses_box.webp",
"alt_text": "Preserved Roses Box",
"width": 600,
"height": 600
}
]
}
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "search_catalog",
"arguments": {
"meta": {
"ucp-agent": {
"profile": "https://ucpchecker.com/.well-known/ucp"
}
},
"catalog": {
"query": "roses"
}
}
}
}200 · MCP tools/call
{
"ucp": {
"version": "2026-08-25",
"capabilities": {
"dev.ucp.shopping.catalog.search": [
{
"version": "2026-08-25"
}
],
"dev.ucp.shopping.catalog.lookup": [
{
"version": "2026-08-25"
}
],
"dev.ucp.shopping.fulfillment": [
{
"version": "2026-08-25"
}
]
}
},
"products": [
"bouquet_roses · Bouquet of Red Roses",
"bouquet_pink_roses · Pink Roses Bouquet",
"preserved_roses_box · Preserved Roses Box",
"arr_hatbox_roses · Roses in a Hat Box",
"bouquet_white_roses · White Roses Bouquet",
"bouquet_yellow_roses · Yellow Roses Bouquet",
"plant_rose_bush · Potted Rose Bush",
"arr_buttonhole · Rose Buttonhole",
"set_anniversary_red · Anniversary Reds",
"set_valentines_dozen · Valentine's Dozen",
"arr_vase_white · All-White Vase Arrangement",
"set_birthday_bright · Birthday Brights",
"arr_bridal_bouquet · Bridal Bouquet",
"arr_bridesmaid · Bridesmaid Bouquet",
"set_christmas_table · Christmas Table Centre",
"arr_flower_crown · Flower Crown",
"arr_table_runner · Foliage Table Runner",
"arr_hatbox_mixed · Garden Hat Box",
"plant_herb_box · Kitchen Herb Box",
"bouquet_lisianthus · Lisianthus Bouquet",
"arr_low_table · Low Table Centrepiece",
"set_new_baby_blue · New Baby, Blue",
"set_new_baby_pink · New Baby, Pink",
"arr_sympathy_heart · Sympathy Heart"
],
"pagination": {
"has_next_page": true,
"cursor": "24",
"total_count": 27
}
}flowers.ucpsandbox.com24 products checked
Every product has a formatted (HTML) description24 products give plain text only. Agents that show rich text have nothing to format.
- Reads
description.html- Found
{ "plain": "A classic dozen of long-stem red roses." }- Across
- 0 of 24 products
Every price has an amount and a currency, in cents
- Reads
variants[].price- Found
{ "amount": 3500, "currency": "USD" }- Across
- 32 of 32 variants
Every variant gives an availability status
- Reads
variants[].availability.status- Found
"in_stock"- Across
- 32 of 32 variants
Variant prices sit inside the product's price range
- Reads
price_range.min ≤ variants[].price ≤ price_range.max- Found
3500 ≤ 3500 ≤ 3500- Across
- 32 of 32 variants
Every product has at least one image, with a type and URL
- Reads
media[].type, media[].url- Found
"image", https://flowers.ucpsandbox.com/images/flowers/bouquet_roses.webp- Across
- 24 of 24 products
Looking a product up by its id returns the same product
- Reads
lookup_catalog { ids: ["bouquet_roses"] }- Found
same id, title, prices and media; lookup adds inputs[] as the spec says- Across
- 1 lookup
The same search returns the same products
- Reads
search_catalog { query: "roses" }, twice- Found
the same 24 ids in the same order- Across
- 2 searches
and 26 more checks, each with the field it reads. Run them on a store
Get the agentic commerce digest every Monday
What changed in the spec and across the stores we check, in one short email. See a sample
Latest from the UCP Checker blog
All posts
UCP in the Agent Chain of Trust: What the GoDaddy, Infoblox, Google and Cloudflare Demo Checks
UCP for B2B: A Procurement Council Charter, Quotes and Price on Request
UCP Business Directory and Business Identity: Amazon's Three RFCs Explained
UCP Local Services: What the Charter for a Booking Council Proposes
Personal Agent Protocol (Poppy) v0.1: What the Spec Says and How It Fits With UCP
Google's UCP Integration Hub in Merchant Center: How to Get Your Store In
Questions about UCP Checker
What is a UCP checker?
/.well-known/ucp, validates it against the Universal Commerce Protocol release it declares, and shows what an agent could do there. UCP Checker also calls the endpoints the profile names and publishes the result on a status page.What is the Universal Commerce Protocol?
How is the UCP Score worked out?
What is the difference between the UCP Checker and the UCP Validator?
How do I publish a UCP profile for my store?
/.well-known/ucp; the /.well-known/ucp guide walks through every field. Then check your store here.