carousell/rctp
Research previewDraft 0.5 · v0.3

Let AI agents trade second-hand goods for people, safely.

RCTP, the Re-Commerce Trust Profile, is an open profile of UCP and AP2 for person-to-person trade. People hand their agent the whole trade, with their consent. Every seller and every item carries a profile both sides can check, and the marketplace enforces the seller's limits on every call.

Delegated by consent.A seller or buyer grants their agent the trade: what it may do, within which limits, until when. Revocable at any time.
Transparent profiles.Every seller and every unique item has a profile both sides can check: track record, item passport and history.
Guardrails, enforced.The marketplace's gateway, and every party in the ecosystem, enforces the seller's limits on every call and keeps a signed record.

Why second-hand needs its own profile

UCP assumes retail: a business sets the price and stands behind the sale. A trade between two people breaks four of those assumptions, and RCTP adds exactly what each one needs. Everything else is UCP.

Retail (UCP) Second-hand RCTP adds
Price Listed Negotiated Offers, counters, Deal Terms
Seller A business's server A person, delegating to an agent that can be persuaded or wrong Agent Grant: a tier per verb; passkey approvals
Limits Public Secret: whoever learns the floor wins A floor the marketplace enforces and never discloses to other agents
Trust Merchant of record Two strangers, one used item Funds held until signed proof; deal record

One MCP server, every marketplace

MCP is the default way in for everyone. Marketplaces expose RCTP over UCP's own MCP transport. Agents connect through one package that handles discovery, seller consent, signing, decisions and approvals, so the model only ever sees tools.

For agent builders In progress

Add one MCP server with your own key. Your agent gets tools like create_offer and accept_offer, and plain answers: done, waiting for the seller, or refused and why.

{ "rctp": { "command": "npx", "args": ["-y", "@rctp/mcp"],
    "env": { "RCTP_AGENT_PROFILE": "https://agent.example/.well-known/ucp",
             "RCTP_KEY_FILE": "/secrets/agent.jwk" } } }

For marketplaces

Run the enforcement point: check every call against the seller's grant and private terms, and answer with a decision. Start from the reference gateway in Go, then prove your own with the conformance suite.

  • REST today; MCP binding In progress
  • Agent Grants on your own authorization server
  • Hosted pages for terms and passkey approvals

What's in the research preview

Everything is open and runs on your laptop against a sandbox. Nothing here moves real money or touches real people.

Building blocks

  • Draft 0.5 and the v0.3 binding, REST and MCPNow
  • Reference gateway, sandbox and SDKs on Draft 0.5 (v0.3.0-draft.5)This week
  • Reference gateway and sandbox (Go, Docker Compose)Now
  • Web simulator: watch two agents make a dealNow
  • Conformance suite, Starter vectorsNow
  • SDKs: TypeScript and PythonNow
  • MCP endpoint and @rctp/mcpIn progress
  • Hosted MCP for hackathonsLater
  • Payment authority and escrow (AP2)Later
  • Portable seller and buyer credentialsLater

What "preview" means

  • Sandbox data only: invented listings, people and money.
  • Names and fields can still change before 1.0. Every change is listed in the changelog.
  • Your findings shape the spec. Each unclear passage becomes a recorded reading and a fix.
  • The project plans to move to a neutral foundation before anyone is asked to depend on it.

Who we're looking for

The spec is only real once independent teams build it and trade with each other. We're looking for:

Marketplaces

Second-hand platforms in any country, ready to run an enforcement point against the sandbox.

Agent builders

Buying or selling agents, assistants and startups that want to make offers on people's behalf.

Reviewers

Security, payments, privacy and standards people who will try to break it and say where.

A second editor

Someone from another organisation to co-edit the spec before it moves to a neutral home.

How to take part

  1. Read the core concepts

    One page, about ten minutes: the four broken assumptions and the five constructs.

  2. Run the sandbox

    Start it locally, open the simulator, and run a full deal: offer, approval, payment held, delivery, release.

  3. Tell us who you are

    Join the preview with a short note on what you want to build or test.

  4. Build, test, report

    Run the conformance suite, and open an issue for anything unclear. See Contributing.

Try it in five minutes

You need Docker, Node 22 and pnpm.

git clone https://github.com/carousell/rctp
cd rctp && pnpm install
docker compose -f sandbox/compose.yaml up --build --wait
pnpm --filter @rctp/example-simulator-web start
# open http://localhost:7070

Then read the quickstart for your first signed call and approval.

Open, and headed for a neutral home

Decided in the open

Every spec change starts as an issue, then a pull request that changes the text, the schemas and the tests together. See Governance.

Built on standards

UCP profiles, identity linking and signed webhooks; OAuth 2.0; HTTP message signatures (RFC 9421); WebAuthn passkeys. No custom cryptography.

Licensing

Code is Apache-2.0. The licence for the spec text is being chosen before the preview opens.