UNIVERSAL COMMERCE PROTOCOL

Test Your UCP Implementation

An honest, capability-scoped conformance checker for the Universal Commerce Protocol. Every check is proven to catch the bug it's for — no false greens. Run it from the browser, pip, or your CI, across REST and MCP.

37+
Kill-rate-validated checks
2
Transports (REST + MCP)
3
Spec versions
What is UCP?

The Universal Commerce Protocol (UCP) is an open standard for agentic and headless commerce. It enables AI agents, publishers, and any digital surface to discover products, create checkout sessions, and complete purchases through a unified API.

UCP defines a standard discovery profile, catalog search, checkout lifecycle (create, update, complete, cancel), fulfillment handling, payment processing via Google Pay, and order management.

Any commerce platform can implement UCP to make their merchants' products purchasable from anywhere — LLMs, publishers, shoppable media, and more.

The UCP protocol is maintained by Google's UCP team at ucp.dev. This tool is an independent, unofficial project — not affiliated with, endorsed by, or a substitute for the official UCP conformance suite. A pass here reflects only the checks run, not certified compliance.
Supported Spec Versions
This tool can test against any published version of the UCP specification. Select the version when running tests, or use auto-detect.

2026-04-08

Released April 9, 2026

Adds catalog search/lookup, cart capability, request/response signing, eligibility claims, formalized totals contract. Major release with breaking changes.

2026-01-23

Released January 23, 2026

Fulfillment groups, shipping option selection, discount capability, buyer consent, order webhooks. Targeted by the official conformance suite.

2026-01-11

Released January 11, 2026

Initial public release. Core checkout lifecycle: discovery, create, update, complete, cancel. Google Pay handler. Basic fulfillment.

What We Test
Capability-adaptive: it discovers what your server declares and runs only the checks that apply — so a lean-but-correct server isn't penalized. Anything it can't test is reported not-tested, never silently passed.
1

Discovery & profile

Dated version, reverse-domain capabilities, service transports, and the whole /.well-known/ucp validated against the official schema

2

Checkout lifecycle

Create, get, update, cancel, complete→order, required fields, terminal-state immutability

3

Order

Full order retrieval, required fields, line-item shape after completion

4

Validation & errors

Out-of-stock, nonexistent product, missing UCP-Agent, structured error bodies

5

Idempotency & payment

Idempotency-key conflict → 409; failing token → 402; credentials never echoed back

6

Discounts

Apply, accept-both, accept-one-reject-one, clear, applied-fields

7

Catalog & cart

Search, empty-search, lookup by product/variant, cart shape, line-item shape

8

Totals invariants

Exactly one subtotal + one total; additive types non-negative — the prose-only rules the schema doesn't enforce

9

MCP transport

The same catalog checks over JSON-RPC tools/call — reach the transport real production merchants use

10

Fulfillment

Method and option shape (id, type, title, totals)

Why you can trust a pass
A checker that can't catch bugs is worse than none. So every check is kill-rate tested — we inject the exact defect it should catch, and if it still passes, it's blocked from release. Checks are anchored to the official ucp-schema validator and cite a verbatim spec clause, and the whole suite self-validates in CI and goes red if any check loses its ability to catch defects. No green unless it's earned.
Three ways to run it
1

In the browser

Paste your server URL at spck.dev/check for an instant discovery + profile check — no install. The result URL is shareable, and you get an embeddable conformance badge.

2

From your terminal

pip install spck-conformance, then --init scaffolds a config for your server and it runs the full suite. Deviations show expected vs your actual response, so you can fix them directly.

3

In your CI

Drop in the GitHub Action — it fails the build on any MUST deviation and writes a JUnit report. Every push stays honest.

Run From Your Terminal or CI
The spck-conformance CLI runs the full suite from your shell or CI. Stdlib-light, one dependency, no account required.

1 Install

Python 3.9+. Published on PyPI.

terminal
$ pip install spck-conformance

2 Scaffold & run

--init probes your server and writes a config tailored to its capabilities; fill the placeholders, then run.

terminal
$ spck-conformance --server https://api.example.com --init merchant.json $ spck-conformance --server https://api.example.com --config merchant.json VERDICT: INCOMPLETE — 21/98 applicable MUSTs (21%), 0 deviations [21 passed · 0 deviations · 5 not-tested · 8 not-applicable] ✓ PASSED (21) ... on a deviation you get: expected <requirement> vs observed <your response>

3 In CI (GitHub Action)

Fails the build on any MUST deviation and writes a JUnit report.

.github/workflows/ucp.yml
- uses: vishkaty/ucp-conformance@main with: server: https://api.example.com config: merchant.json # optional
Common options
--serverUCP server base URL (required)
--init [FILE]Probe the server and scaffold a config, then exit
--config FILEMerchant config (product id, discount codes, payment tokens…) to unlock data-dependent checks
--jsonFull JSON report (each check cites its spec clause + observed response)
--junit FILEJUnit XML report for CI dashboards
--insecureSkip TLS verification (testing only)
Exit codes
0 clean · 2 a MUST deviated · 1 couldn't run. Partial coverage is not a failure.

On PyPI — pypi.org/project/spck-conformance

Ready to check your UCP server?

Paste a URL for an instant check — or pip install spck-conformance. Free, open source, unofficial.

Check your server →