Agentic Checkout Protocol
GET /agent/catalog
The product list. Each item carries a sku, name, exact-decimal price, availability, and optional description, category, unit, and metadata.
Returns the merchant's product list.
Response — 200
{
"items": [
{
"sku": "widget",
"name": "Blue Widget",
"description": "A very blue widget.",
"price": { "amount": "12.50", "currency": "USD" },
"available": true,
"category": "hardware",
"unit": "each",
"metadata": { "color": "blue" }
}
]
}CatalogItem
| Field | Type | Notes |
|---|---|---|
sku | string | Stable identifier used in checkout. |
name | string | Display name. |
price.amount | string | Exact decimal string — never a float. |
price.currency | string | ISO currency code (e.g. USD). |
available | boolean | Whether it can be purchased now. |
description | string? | Optional. |
category | string? | Optional. |
unit | string? | Optional (e.g. each, GB). |
metadata | object? | Optional free-form. |
Money is always an exact decimal string ("12.50"), never a number — this avoids
floating-point rounding across the wire and in cart math.
GET /.well-known/agentic-checkout.json
The discovery anchor. The single URL an agent needs to bootstrap everything — catalog URL, checkout URL, supported rails, receiving destinations, accepted mandates, and a policy summary.
POST /agent/checkout
Create a checkout session. Returns a self-describing payment_required that says exactly what to pay and the literal next call to make.