Revoked merchants break agent carts. Splitrail settles around them.

Splitrail screens every wallet in a multi-merchant AI-agent checkout against live Cleanverse CVI credentials, pays the compliant merchants atomically on Monad, quarantines the flagged allocation - and refunds the buyer in the same transaction.

No mocks - live on Monad testnetReal Cleanverse A-Pass CVI18 Foundry tests passing
127.0.0.1:3001/appsettling
Splitrail Monad · 10143 Cleanverse CVI live

Settlement

  • Buyer CVI verified
  • 3 merchants screened
  • Release $50 + $40
  • Quarantine $60
  • Refund · same tx

CVI Drift · Merchant 3

VERIFIED

monitoring A-Pass credentials…

cart.settlement

- release $60.00 → aurora_assets

+ quarantine $60.00 → escrow_vault

+ refund $60.00 → buyer_agent ⚡ instant

How it works

Six steps from checkout to a compliant receipt

One call to executeCart(items[3], cviProof) - every check and every transfer is a real transaction on Monad testnet.

1

Agent submits the cart

One call: executeCart(items[3], cviProof) - hosting, API credits, an asset license. Paid in cvUSDC under a spend mandate.

2

Buyer CVI check

The buyer agent's Cleanverse A-Pass credential gates the whole cart. Unverified buyer → nothing moves.

3

Per-item screening

Every merchant wallet is checked against the anchored A-Pass KYC hash and CCP Travel Rule policy, independently.

4

Atomic split-settlement

Compliant merchants are paid instantly - one Monad transaction, no partial states, no stranded funds.

5

Quarantine + refund

A revoked merchant's allocation diverts to the escrow vault and the buyer is refunded in the same transaction.

6

Receipt anchored

A deterministic CCP Travel Rule receipt hash lands onchain: verdicts, reason codes, refunds - exportable.

Features

Compliance that fails closed, settlement that doesn't fail at all

Atomic split-settlement

Multi-merchant carts settle in a single Monad transaction. Per-item resolution, never per-cart failure.

Fail-closed CVI screening

Unknown wallet = blocked. Revoked = blocked. Credential rotated mid-cart = blocked. No exceptions in the hot path.

Selective Risk Quarantine

One bad merchant doesn't kill the cart - their allocation is quarantined and the buyer refunded instantly.

Live Cleanverse bridge

Real A-Pass records via the Cooperate API - the onchain credential is Cleanverse's own KYC hash, synced by an oracle.

Agent spend mandates

Programmable per-cart ceilings enforced before funds move - the Agent Skill Framework, onchain.

CCP audit receipts

Every cart anchors an audit-ready Travel Rule receipt: item verdicts, reason codes, quarantine records, refunds.

Quickstart

From clone to onchain quarantine in four commands

The quarantine demo freezes a real A-Pass on the Cleanverse sandbox, syncs the verdict to the Monad-side compliance hook, then executes the cart - $90 settled, $60 quarantined and refunded, one atomic transaction.

See the proof transaction on Monad Explorer
terminal
# contracts - 18 tests incl. fuzzed refund invariant
forge test
npm run deploy:monad

# freeze A-Pass on Cleanverse → sync → quarantine
npm run demo:quarantine

# dashboard
cd dashboard && npm run dev 

Watch the Selective Risk Quarantine happen onchain

Connect a wallet on Monad testnet, revoke Merchant 3's credential with one toggle, and execute a real cart. Then export the CCP Travel Rule receipt.