Validate your Universal Commerce Protocol profile against the live spec — entirely in your browser, no data leaves your machine.
/.well-known/ucp JSON is retrieved — nothing else on the domain is accessed or stored.
Validating your UCP profile…
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.
| Code | Severity | Meaning |
|---|---|---|
| UCP_MISSING_ROOT | Error | Document is not valid JSON or missing a ucp object |
| UCP_MISSING_VERSION | Error | ucp.version field is missing |
| UCP_INVALID_VERSION_FORMAT | Error | version is not in YYYY-MM-DD format |
| UCP_UNKNOWN_VERSION | Warning | version does not match any known UCP spec release |
| UCP_OUTDATED_VERSION | Warning | version is valid but not the latest spec release |
| UCP_MISSING_SIGNING_KEYS | Warning | No signing_keys published for RFC 9421 support |
| UCP_SIGNING_KEYS_WRONG_LOCATION | Warning | signing_keys found in the wrong location for this spec version |
| UCP_MISSING_SERVICES | Error | ucp.services object is missing or malformed |
| UCP_INVALID_SERVICE_KEY | Error | Service key doesn't follow reverse-domain format |
| UCP_SERVICE_MISSING_TRANSPORT | Error | A service entry is missing its transport type |
| UCP_MISSING_CAPABILITIES | Error | ucp.capabilities object is missing or malformed |
| UCP_NAMESPACE_MISMATCH | Error | dev.ucp.* capability spec/schema URL isn't hosted on ucp.dev |
| UCP_MISSING_PAYMENT_CONFIG | Error | payment_handlers object is missing (required) |
| UCP_FETCH_BLOCKED | Error | Manifest couldn't be fetched — likely CORS or unreachable endpoint |
Document is not valid JSON or missing a ucp object
ucp.version field is missing
version is not in YYYY-MM-DD format
version does not match any known UCP spec release
version is valid but not the latest spec release
No signing_keys published for RFC 9421 support
signing_keys found in the wrong location for this spec version
ucp.services object is missing or malformed
Service key doesn't follow reverse-domain format
A service entry is missing its transport type
ucp.capabilities object is missing or malformed
dev.ucp.* capability spec/schema URL isn't hosted on ucp.dev
payment_handlers object is missing (required)
Manifest couldn't be fetched — likely CORS or unreachable endpoint
Common questions about UCP compliance and how this validator works.
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.
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.
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.
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.
No. All validation logic runs entirely in your browser. No manifest data, domain names, or pasted JSON is transmitted to any server.