carousell/rctp

RCTP documentation

Status: Draft 0.4, pre-release. Every name, field and number may change. Release v0.2.0-draft.4 implements the Starter profile of Draft 0.4 [17.4]. Do not depend on it in production without talking to the editors.

What RCTP is

  1. RCTP (Re-Commerce Trust Profile) lets AI agents buy and sell used goods for people.
  2. A seller connects an agent once through their marketplace and confirms which verbs it may use, and which need their own approval. The marketplace records that as an Agent Grant, bound to the agent's key.
  3. For each item, the seller sets Listing Terms on a page the marketplace hosts: a private floor, plus public terms such as delivery options and the date the offer closes. No agent ever receives the private terms.
  4. An enforcement point in front of the marketplace API checks every signed agent call against the grant and the terms. The agent never decides on its own.
  5. The enforcement point answers each call with one of three decisions, and writes every decision to a signed, hash-chained deal record.
  6. RCTP is a profile of existing standards (UCP profiles, identity linking and message signatures; OAuth 2.0 with PKCE; RFC 9421; WebAuthn). It defines no new cryptography, transport or payment rail.

The three decisions

Decision HTTP What it means What the agent does next
auto 200 (201 for creates) Done. Carry on.
ask 202 Waiting for the seller to approve with their own passkey. No answer means no. Show the approval page, then wait for the outcome.
forbid 401, 403, 409, 422 or 429 Refused, with one registered reason such as below_floor. Act on the reason. Never retry the same thing unchanged.

The decision travels in the RCTP-Decision response header. The floor is never revealed. A tier or a term cannot be talked out of the enforcement point: only the seller, on a page the marketplace hosts, can change a grant or terms (INV-5).

Pages

Page Read it when
Quickstart You want to make your first signed call and your first approval against the sandbox.
Core concepts, one page You want the whole picture in one read: what RCTP solves on top of UCP and AP2, its roles, five constructs, discovery, rules and versioning. Open it in a browser, or with the simulator's Core concepts button.
Concepts You want the ideas RCTP is built from: Agent Grant, Listing Terms, offer, decision, tier, approval, deal record, UCP profile, enforcement point.
Decisions and errors You are handling responses. Every reason code, its HTTP status and what to do next.
Approvals Your agent gets an ask. How the seller approves and sets terms, what is signed, and how you learn the outcome.
Versioning You need to know which versions exist, how long they are supported and how things are deprecated.
Security You want the nine invariants, how the reference gateway enforces them, the tests that prove it, and how to report a flaw.
Extensions You need something the current draft does not have. How x- experiments and reverse-domain values work.
FAQ You have a sharp question, such as "why does no agent see the floor?"
Partner integration profile You are a partner preparing to integrate. A template to fill in.

What v0.2 covers

In v0.2 (Starter profile) Not yet
Agent Grants: key-bound, introspected on every call, revocable Party Credentials and bands [11.1], so counterparty requirements cannot be met yet (B-6)
Listing Terms under goods.small/1 (and vehicles/1 when a gateway enables it), set on the hosted page Identity facts [11.2] and Item Passport [11.3]
Offers with Deal Terms, negotiation_id, supersedes and expires_at; reservation and single-use checkouts AP2 buyer authority (vector V25, #59)
Approval level hosted_embedded Approval levels marketplace_app and certified_operator
Deal events funds_held, accepted, rejected, released, UCP fulfillment events, return and refund, under the money rules Verified custody [11.4], seals, relayed partner events (V20)
REST binding, UCP signed webhooks, a conformance runner (V1–V15, V26–V29, S1–S4) MCP and A2A bindings, deal record export

See CHANGELOG.md for the full list.

Where things live

Source Status
spec/rctp-draft-0.4.md Normative. What an implementation must do.
spec/v0.2-binding.md Normative for this repository. The wire choices v0.2 makes.
spec/AMBIGUITIES.md The readings v0.2 chose where the draft is unclear (B-1 to B-9). Always the more restrictive one.
schemas/ and registries/ The single source of truth for object shapes and registered values.
spec/rctp-draft-0.3.md, spec/v0.1-binding.md History: what v0.1.0-draft.3 implemented.

Precedence: Draft 0.4 text, then the binding, then code. If the code and the binding disagree, the code is wrong.

Section numbers in brackets, such as [9.3], point to Draft 0.4. "Binding 4.2" points to the v0.2 binding.

Source: docs/index.md