28goods.com
verified_user Multi-version UCP compliance, backward compatibility & transport audit
schedule Last scanned 5/4/2026
Conformance
91%Capability
100%Coverage
59%Backward Compat
60%Negative
100%Transport
86%Latency
95%Audit Details
Cache-Control max-age is within recommended bounds
No Cache-Control header — clients may re-fetch every request
Profile response advertises cache headers
Discovery response has no Cache-Control header
Profile declares at least the checkout capability
Completed in 102ms
Capability version strings are valid ISO dates
Completed in 91ms
Profile response Content-Type is application/json
Completed in 94ms
Discovery endpoint exposes CORS headers
Completed in 85ms
Profile is served over HTTPS
Completed in 39ms
Two consecutive profile fetches return identical bodies
Completed in 195ms
Signing JWKs use only allowed kty/crv values
Profile declares no signing_keys array — the field is optional per the UCP spec, but agents cannot verify signed payloads from this merchant
No duplicate capability entries (same name + version)
Completed in 96ms
OpenAPI servers[] URL is reachable
Profile has no loadable service-level OpenAPI document
Business profile has a valid structure
Completed in 94ms
Merchant responses are signed with the published signing_keys
Profile declares no signing_keys; nothing to verify against. DISC-0002 tracks absence separately.
robots.txt allows AI agents to read the UCP profile
Completed in 149ms
All declared schema URLs use HTTPS
Completed in 136ms
Signing keys are importable via Web Crypto
Profile declares no signing_keys array — the field is optional per the UCP spec, but agents cannot verify signed payloads from this merchant
Profile advertises well-formed signing keys
Profile declares no signing_keys array — the field is optional per the UCP spec, but agents cannot verify signed payloads from this merchant
Service binding transports are in the allowed set
Completed in 109ms
Profile declares a ucp.version string
Completed in 93ms
Profile ucp.version is one the grader recognizes
Completed in 94ms
Profile is served at the canonical .well-known/ucp path
Completed in 100ms
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
9 of 68 referenced schema document(s) failed to load
All declared schema URLs return 200
Discovery profile matches the published JSON Schema
Completed in 106ms
Get a product by id
Expected 200 or 404, got 200
Search products returns a products array
Expected 2xx for query "shirt", got 200
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
Merchant gates checkout creation behind authentication (HTTP 403); cannot probe further without credentials
Cancel a checkout session
Merchant gates checkout creation behind authentication (HTTP 403); cannot probe further without credentials
Create checkout session with defaults
Merchant gates checkout creation behind authentication (HTTP 403); cannot probe further without credentials
Repeated createSession with same idempotency key returns same session
Merchant gates checkout creation behind authentication (HTTP 403); cannot probe further without credentials
Create session then set shipping address
Merchant gates checkout creation behind authentication (HTTP 403); cannot probe further without credentials
Retrieve a checkout session by id
Merchant gates checkout creation behind authentication (HTTP 403); cannot probe further without credentials
Reusing an Idempotency-Key with a different body must be rejected
Merchant gates checkout creation behind authentication (HTTP 403); cannot probe further without credentials
update_checkout is idempotent on replay and rejects conflicting replays
Merchant gates checkout creation behind authentication (HTTP 403); cannot probe further without credentials
Select a shipping method on a checkout session
Merchant gates checkout creation behind authentication (HTTP 403); cannot probe further without credentials
Shipping methods are returned after setting an address
Merchant gates checkout creation behind authentication (HTTP 403); cannot probe further without credentials
Catalog capability advertised for product lookup
Catalog capability is declared
Checkout capability is declared and reachable
Completed in 135ms