Is your store agent-ready?

Validate your Universal Commerce Protocol profile against the live spec — entirely in your browser, no data leaves your machine.

3Spec versions
30+Compliance checks
0Data collected

Checks /.well-known/ucp — no ".json" extension, per spec

Fetched server-side via our proxy, so CORS restrictions on the target site won't block validation. Only the raw /.well-known/ucp JSON is retrieved — nothing else on the domain is accessed or stored.

Paste your full /.well-known/ucp response, including root-level signing_keys

Validating your UCP profile…

Reference docs — not your scan results

Error code documentation

Reference list of every possible code our validator can return — not results from a scan. Run a scan above to see which of these apply to your domain.

CodeSeverityMeaning
UCP_MISSING_ROOTErrorDocument is not valid JSON or missing a ucp object
UCP_MISSING_VERSIONErrorucp.version field is missing
UCP_INVALID_VERSION_FORMATErrorversion is not in YYYY-MM-DD format
UCP_UNKNOWN_VERSIONWarningversion does not match any known UCP spec release
UCP_OUTDATED_VERSIONWarningversion is valid but not the latest spec release
UCP_MISSING_SIGNING_KEYSWarningNo signing_keys published for RFC 9421 support
UCP_SIGNING_KEYS_WRONG_LOCATIONWarningsigning_keys found in the wrong location for this spec version
UCP_MISSING_SERVICESErrorucp.services object is missing or malformed
UCP_INVALID_SERVICE_KEYErrorService key doesn't follow reverse-domain format
UCP_SERVICE_MISSING_TRANSPORTErrorA service entry is missing its transport type
UCP_MISSING_CAPABILITIESErrorucp.capabilities object is missing or malformed
UCP_NAMESPACE_MISMATCHErrordev.ucp.* capability spec/schema URL isn't hosted on ucp.dev
UCP_MISSING_PAYMENT_CONFIGErrorpayment_handlers object is missing (required)
UCP_FETCH_BLOCKEDErrorManifest couldn't be fetched — likely CORS or unreachable endpoint
UCP_MISSING_ROOTError

Document is not valid JSON or missing a ucp object

UCP_MISSING_VERSIONError

ucp.version field is missing

UCP_INVALID_VERSION_FORMATError

version is not in YYYY-MM-DD format

UCP_UNKNOWN_VERSIONWarning

version does not match any known UCP spec release

UCP_OUTDATED_VERSIONWarning

version is valid but not the latest spec release

UCP_MISSING_SIGNING_KEYSWarning

No signing_keys published for RFC 9421 support

UCP_SIGNING_KEYS_WRONG_LOCATIONWarning

signing_keys found in the wrong location for this spec version

UCP_MISSING_SERVICESError

ucp.services object is missing or malformed

UCP_INVALID_SERVICE_KEYError

Service key doesn't follow reverse-domain format

UCP_SERVICE_MISSING_TRANSPORTError

A service entry is missing its transport type

UCP_MISSING_CAPABILITIESError

ucp.capabilities object is missing or malformed

UCP_NAMESPACE_MISMATCHError

dev.ucp.* capability spec/schema URL isn't hosted on ucp.dev

UCP_MISSING_PAYMENT_CONFIGError

payment_handlers object is missing (required)

UCP_FETCH_BLOCKEDError

Manifest couldn't be fetched — likely CORS or unreachable endpoint

Frequently asked questions

Common questions about UCP compliance and how this validator works.

What is a UCP validator?

A UCP validator checks whether a website's Universal Commerce Protocol manifest, published at /.well-known/ucp, correctly follows the UCP specification so AI shopping agents can discover and transact with the store.

Where should my UCP manifest be hosted?

At /.well-known/ucp on your domain root — no file extension. It must be served as JSON with a Cache-Control: public, max-age=60 (or higher) header, and must not redirect.

Is payment_handlers required in a UCP profile?

Yes. A profile without at least one declared payment handler fails validation with UCP_MISSING_PAYMENT_CONFIG, since agents need this to know how to complete a purchase.

Where do signing_keys belong?

This is version-dependent. For spec 2026-04-08 and later, signing_keys must sit at the document root, as a sibling of ucp. For earlier versions, it's nested inside the ucp object.

Does this validator send my data anywhere?

No. All validation logic runs entirely in your browser. No manifest data, domain names, or pasted JSON is transmitted to any server.