demo.ucphub.ai
verified_user Multi-version UCP compliance, backward compatibility & transport audit
schedule Last scanned 5/4/2026
Conformance
49%Capability
100%Coverage
45%Backward Compat
0%Negative
47%Transport
100%Latency
90%Audit Details
Cache-Control max-age is within recommended bounds
Cache-Control "no-cache, must-revalidate, max-age=0, no-store, private" disables caching — agents will re-fetch on every request
Profile response advertises cache headers
Completed in 565ms
Profile declares at least the checkout capability
Completed in 555ms
Capability version strings are valid ISO dates
Completed in 556ms
Profile response Content-Type is application/json
Completed in 632ms
Discovery endpoint exposes CORS headers
Completed in 619ms
Profile is served over HTTPS
Completed in 201ms
Two consecutive profile fetches return identical bodies
Completed in 1043ms
Signing JWKs use only allowed kty/crv values
Completed in 578ms
No duplicate capability entries (same name + version)
Completed in 542ms
OpenAPI servers[] URL is reachable
Profile has no loadable service-level OpenAPI document
Business profile has a valid structure
Business profile failed schema validation
Merchant responses are signed with the published signing_keys
Merchant publishes signing_keys but did not sign this response (no X-UCP-Signature / RFC 9421 / body JWS). Signing is recommended so agents can verify response authenticity.
robots.txt allows AI agents to read the UCP profile
Completed in 396ms
All declared schema URLs use HTTPS
(bindings ?? []) is not iterable
Signing keys are importable via Web Crypto
Completed in 526ms
Profile advertises well-formed signing keys
Completed in 627ms
Service binding transports are in the allowed set
(bindings ?? []) is not iterable
Profile declares a ucp.version string
Completed in 533ms
Profile ucp.version is one the grader recognizes
Completed in 570ms
Profile is served at the canonical .well-known/ucp path
Completed in 524ms
Declared capabilities match operations in the OpenAPI
No OpenAPI operations available to cross-check
Capability JSON Schemas declare a modern $schema draft
Capability-level JSON Schemas are well-formed
OpenAPI components.schemas has no orphans
Profile has no loadable service-level OpenAPI document
Service-level OpenAPI document is valid OpenAPI 3.x
No service-level OpenAPI schema was loaded
Every OpenAPI operation declares a 2xx JSON response schema
Profile has no loadable service-level OpenAPI document
Every $ref referenced schema document is reachable
Completed in 5660ms
All declared schema URLs return 200
1 of 7 schema URLs failed to load: [service] https://ucp.dev/services/shopping/rest.openapi.json → http_404
Cancel session response matches the OpenAPI schema
Could not create session: 400
Create session response matches the OpenAPI schema
Expected 2xx, got 400
Discovery profile matches the published JSON Schema
Completed in 525ms
Get product response matches the OpenAPI schema
Expected 200 or 404, got 400
Get session response matches the OpenAPI schema
Could not create session: 400
Search products response matches the OpenAPI schema
Expected 2xx, got 400
Update session response matches the OpenAPI schema
Could not create session: 400
Get a product by id
Expected 200 or 404, got 400
Search products returns a products array
Expected 2xx for query "shirt", got 400
Selected options filter variants in product detail
No product with options/variants found in catalog
Canceling a session twice with the same idempotency key is idempotent
createSession returned status=400
Cancel a checkout session
createSession returned 400
Create checkout session with defaults
createSession returned status=400
Repeated createSession with same idempotency key returns same session
First create failed: 400
Create session then set shipping address
createSession returned 400
Retrieve a checkout session by id
createSession returned 400
Reusing an Idempotency-Key with a different body must be rejected
First createSession returned status=400
update_checkout is idempotent on replay and rejects conflicting replays
createSession returned status=400
Select a shipping method on a checkout session
createSession returned 400
Shipping methods are returned after setting an address
createSession returned 400
Catalog capability advertised for product lookup
Catalog capability is declared
Checkout capability is declared and reachable
Completed in 236ms