Skip to main content

UCP Discovery Document

Endpoint: GET /.well-known/ucp Auth: None — public discovery document Cache: Cache-Control: public, max-age=3600

Live & Public

Try it right now, no API key needed:

curl https://ainative-browser-builder.up.railway.app/.well-known/ucp

What it's for​

UCP (Universal Commerce Protocol) is a .well-known discovery convention that lets an agent or a commerce-aware crawler ask one question — "how can I pay you?" — and get back a single machine-readable document instead of having to probe individual endpoints. AINative's /.well-known/ucp document lists every payment capability the platform actually supports today: Stripe subscriptions, x402 crypto micropayments, and AP2 mandate verification.

It follows the same discipline as the platform's other /.well-known/* discovery documents (/.well-known/x402, /.well-known/provisioning): every entry describes a real, working path, never a planned or aspirational one. The subscription plan names are read directly from the same STRIPE_PRICE_IDS map that the real checkout flow (plan_catalog_service.py) uses, so this document can't advertise a plan that doesn't actually exist. The x402 network/asset fields are read from the same x402_subscription_service.py settings that back the live /.well-known/x402 document, so the two stay consistent with each other and with what a real payment attempt observes.

Response shape​

GET /.well-known/ucp

Returns 200 OK with a JSON body shaped like this:

FieldTypeDescription
versionstringDocument version, formatted as an ISO date (YYYY-MM-DD) of the last revision.
capabilitiesarrayList of payment capability objects. Each entry's type determines which other fields are present (see below).

capabilities[] — common field​

FieldTypeDescription
typestringOne of "subscription", "x402", or "ap2".
descriptionstringHuman-readable summary of the capability.

type: "subscription"​

Real Stripe-backed subscription plans — the same plan catalog the platform's checkout flow uses.

FieldTypeDescription
plansarray of {name: string}Every subscription plan currently sold, by display name.

type: "x402"​

HTTP 402-based crypto micropayments. Mirrors the platform's dedicated /.well-known/x402 discovery document.

FieldTypeDescription
assetstringSettlement asset, currently "USDC".
networkstringSettlement network (e.g. "circle" for USDC via Circle). Configurable via X402_SETTLEMENT_NETWORK.

type: "ap2"​

Agent Payments Protocol (Google) mandate verification — real server-side SD-JWT verification at POST /agentic_commerce/ap2/verify.

FieldTypeDescription
mandate_types_supportedarray of stringAP2 mandate types this endpoint can verify: "intent", "cart", "payment".

Example response​

{
"version": "2026-10-27",
"capabilities": [
{
"type": "subscription",
"description": "Real Stripe-backed subscription plans.",
"plans": [
{ "name": "Hobbyist" },
{ "name": "Starter" },
{ "name": "Pro" },
{ "name": "Business" },
{ "name": "Enterprise" },
{ "name": "Cody — Your Virtual CTO" }
]
},
{
"type": "x402",
"description": "HTTP 402-based crypto micropayments. See /.well-known/x402.",
"asset": "USDC",
"network": "circle"
},
{
"type": "ap2",
"description": "Agent Payments Protocol (Google) mandate verification. See POST /agentic_commerce/ap2/verify.",
"mandate_types_supported": ["intent", "cart", "payment"]
}
]
}
Plan names can change

plans[].name reflects whatever plans are live in STRIPE_PRICE_IDS at request time — treat this list as authoritative over anything cached in documentation, including the example above.

curl example​

curl -s https://ainative-browser-builder.up.railway.app/.well-known/ucp | python3 -m json.tool
DocumentPurpose
/.well-known/x402x402-specific payment requirements (scheme, pay_to wallet, per-plan resource URIs)
/.well-known/jwks.jsonPublic keys for verifying AINative-issued JWTs
/.well-known/openid-configurationOpenID Connect discovery

See also: Agent402 API for agent-side x402 wallets and the Cloudflare wire-format payment flow.