A compatibility check at checkout
Agents buy through checkout protocols such as the Universal Commerce Protocol (UCP) and the Agentic Commerce Protocol (ACP). Neither says whether the items will work with what the customer already owns. Send us the checkout session right before payment; we return a decision per line item, the action to take, and a signed receipt, in a shape that can travel with the checkout as com.tetheredtrust.shopping.compatibility.
| Claim | Status |
|---|---|
| Checkout check for UCP checkouts, ACP CheckoutSessions and plain line items | Implemented tested against the published shapes (UCP line_items[].item.title; ACP ids plus your feed) |
com.tetheredtrust.shopping.compatibility extension and JSON Schema | Published named {reverse-domain}.{service}.{capability}; the schema is served from tetheredtrust.com, the namespace authority |
| Adopted by UCP or ACP clients, merchants or platforms | Not yet publishing an extension doesn't make anyone use it |
| Endorsed by the UCP or ACP maintainers | No a third-party extension by Chimes In LLC, not part of either core specification |
| Part of ChatGPT Instant Checkout | No reading ACP sessions doesn't make us an approved checkout partner |
Version 2026-10-14. Each result carries a cart_fingerprint: if the line items, quantities or the owned list change, check again.
1. Call it before payment
POST https://tetheredtrust.com/v1/checkout/check (MCP tool check_cart_before_checkout). Accepts a UCP checkout, an ACP CheckoutSession, or plain line_items. Free during early access; /v1/paid/checkout charges $0.25 per completed decision and nothing for insufficient_evidence.
{
"checkout": {
"ucp": {
"version": "2026-08-25"
},
"id": "chk_123",
"line_items": [
{
"id": "li_1",
"item": {
"id": "sku_vlt7",
"title": "Sanus VLT7 tilting TV mount",
"price": 12999
},
"quantity": 1
},
{
"id": "li_2",
"item": {
"id": "sku_hdmi",
"title": "Ultra High Speed HDMI cable 2 m",
"price": 1999
},
"quantity": 1
}
]
},
"owned": [
"TCL 65QM8K"
]
}
ACP line items carry only ids, so add a products map from your feed:
{
"checkout": {
"id": "cs_123",
"line_items": [
{
"id": "li_1",
"item": {
"id": "sku_vlt7",
"quantity": 1
}
}
]
},
"products": {
"sku_vlt7": {
"title": "Sanus VLT7 tilting TV mount"
}
},
"owned": [
"TCL 65QM8K"
]
}2. Act on action
| decision | action | What the agent does |
|---|---|---|
supported | proceed | Complete the checkout. |
conditional | resolve_conditions | Add the named adapter or hub (required_accessories) or confirm the verify items with the customer, then check again. |
incompatible | do_not_checkout | Remove or replace the item (see substitutions) and check again. |
insufficient_evidence | ask_customer | Ask the returned questions. Never complete the checkout on a guess. |
The whole cart takes its worst line: one incompatible item makes the checkout do_not_checkout.
3. Attach the result to the checkout
The response's extension object is ready to place at the checkout's top level, so the merchant, a payment handler or a later dispute can see what was checked:
{
"com.tetheredtrust.shopping.compatibility": {
"version": "2026-10-14",
"decision": "supported",
"safe_to_checkout": true,
"checked_at": "2026-10-14T15:02:11Z",
"line_items": [
{
"line_item_id": "li_1",
"decision": "supported"
},
{
"line_item_id": "li_2",
"decision": "supported"
}
],
"receipt_id": "rcpt_...",
"valid_until": "2026-11-13T15:02:11Z",
"verify_url": "https://tetheredtrust.com/v1/receipts/verify",
"spec": "https://tetheredtrust.com/ucp"
}
}
Machine-readable definition: /ucp/com.tetheredtrust.shopping.compatibility.json (JSON Schema 2020-12).
4. For merchants: declare it
A business that wants agents to run the check can list the extension among its UCP capabilities:
{
"capabilities": {
"com.tetheredtrust.shopping.compatibility": [
{
"version": "2026-10-14",
"spec": "https://tetheredtrust.com/ucp",
"schema": "https://tetheredtrust.com/ucp/com.tetheredtrust.shopping.compatibility.json",
"extends": "dev.ucp.shopping.checkout"
}
]
}
}
Agents that don't know the extension ignore it, as UCP intends for unknown capabilities.
Rules the decision follows
- We never return "works" to help a purchase complete. Unknown or unsupported items return
insufficient_evidence. - Products read by AI from a manufacturer's page are unreviewed: a "works" on them comes back
conditionalwith averifycondition. - A receipt proves what we said and when (EdDSA JWS, public keys); it isn't a guarantee. See Trust.