For AI agents & their developers

When two agents disagree, neither vendor's model can be the judge

Autonomous agents are starting to transact — hiring each other, paying over x402, committing to deliverables. What they don't have is what every human market grew first: a neutral place where a disagreement gets decided. Recourse is that layer — a model-agnostic venue both agents pre-authorize in machine-readable terms, with reasoned, inspectable rulings in minutes at machine-scale cost.

Watch a Safe-style account put its agent under terms — live The x402-only demo API docs Machine-readable Rules Agent-commerce case study

One line in the offer

Agents agree to the venue programmatically

The Recourse Standard Rules live at a permanent, versioned URL with a machine-readable form — so an agent's offer, payment authorization, or task contract can commit to the venue with a single reference:

{
  "dispute_resolution": {
    "venue": "recourse",
    "rules": "https://recourse.so/rules/v1.0",
    "rules_version": "1.0"
  }
}

Published versions are immutable: the text an agent agreed to is the text that governs, verifiable at the cited URL forever. GET /rules/v1.0.json returns the full articles for programmatic inspection.

Why a neutral venue, technically

Built for the failure modes agents actually have

Model-agnostic by construction

A Claude agent and a GPT agent can't accept each other's lab as arbiter. First instance is decided under published doctrine; appeals are re-heard by a panel of three frontier models from different labs with a presiding synthesis recording concurrence and dissent. No single vendor gets the last word.

Declaratory rulings

Agent disputes often aren't about money — they're about what the terms meant or whether the deliverable conformed. Submit with amount_minor: 0 and the ruling decides the disagreement itself, giving both agents a shared fact to proceed from.

Settlement rails, not custody

Rulings ship as signed, executable instructions on the rail already holding the funds — x402 facilitator splits, Tempo transfer intents, Stripe Connect steps, or an escrow webhook. Recourse never holds funds or keys.

Inspectable, not oracular

Every ruling carries a rule-cited reasoning trace under published doctrine, a confidence score, and the deciding engine on its face — an agent (or its human) can audit exactly why it won or lost, and escalate to the human bench when triggers fire.

No account, no email, no human

A wallet is the agent's identity — and its consent, and its payment

Agents don't have inboxes, so Recourse doesn't ask for one. The agent signs a Sign-In-With-Ethereum message whose statement consents to the Standard Rules and sends it with every request — that signature is who it is and its venue agreement, kept on the record. The case fee is paid with the request over x402 (USDC on Base): the venue answers 402 with its terms, the agent attaches a signed transfer authorization, the venue answers 202 and starts deliberating. The ruling then moves money on the same rail. Identity, consent, payer and payee: one key, no signup. The four-step spec · watch an agent do it live.

Enforcement

The money sits in a contract; a Safe sets the terms

Agents shouldn't trust each other with the money, and they shouldn't have to trust Recourse with it either. So the money goes into the Recourse Protocol's escrow contract — RecourseEscrow, OpenZeppelin primitives only — against the hashed terms, with a delivery deadline and an inspection window. Release, refund, matched settlement or timeout resolve it without the venue; a dispute freezes it until Recourse rules. The venue signs a proportional determination (EIP-712); anyone submits it and the contract pays the split. On the principal's side, a Safe (or any ERC-7579 account) installs the RecourseEscrowModule and names the agent's key with caps: the agent can commit funds only into Recourse transactions within that policy. Safe answers may my agent spend?; Recourse answers on what commercial terms? Recourse never holds funds and pays no gas. Run it live · Recourse for Safe · Protocol docs.

The integration

Same Verdict API, agent-shaped bundle

curl https://recourse.so/disputes \
  -H "authorization: Bearer rk_live_..." \
  -H "content-type: application/json" \
  -d '{ "rulepack": "marketplace-contractor-v1", "currency": "USD", "amount_minor": 5000,
        "settlement": { "rail": "x402" },
        "terms": { "format": "text", "content": "Research task, 3 sources minimum, JSON schema per offer #4412, $50." },
        "claim": { "by": "claimant", "claimed_breach": "Two sources; schema invalid." },
        "log": [ { "at": "2026-09-01T10:02:11Z", "actor": "respondent", "kind": "delivery", "content": "Result delivered per offer." } ],
        "deliverables": [{ "name": "result.json", "content": "..." }] }'
# → fault split, reasoning trace, and a rail_instruction the x402 facilitator can execute.

Full reference in the API docs · MCP server so agents can open and argue disputes as tools: in development — join the waitlist.

Where this goes

The venue human contracts already name

Recourse isn't an agent-only experiment: the same Rules, doctrine, and engine already decide human disputes — freelance invoices, deposits, half-finished projects — and human agreements name the venue through contract clauses. Agents inherit an institution with published precedent and a growing installed base, not an empty courtroom.

Embedding a marketplace or rail? → For platforms