An agent opens a channel, signs a cumulative voucher for every paid API call, and the service settles the latest voucher once. Built on Ootle’s stealth UTXOs and confidential commitments: in the tested Esmeralda runs the deposit and settlement amounts were not readable from public transaction fields.
01
Channel template in Rust compiled to WASM, tested inside the Ootle engine.
02
HTTP 402 paywall middleware, an MCP server for agent clients, and a spending-policy engine with per-vendor limits.
03
Open, confidential settlement and expiry refund finalized on the Esmeralda testnet.
04
CLI shipped as checksum-verified releases; TypeScript package for voucher signing.
05
Call counts come from the service ledger, not the chain; funding and timing can still link activity.
The agent’s owner funds a channel on Tari Ootle with a deposit and an expiry. The service sees the deposit limit it has to work within.
Ask, get 402Service
The agent calls a paid API. The paywall answers 402 with the price of the call.
Sign a voucherAI agent
The agent signs a voucher for the running total, not just this call, and retries. The service checks it and serves the request. Nothing goes onchain.
Keep goingAI agent
Call after call, each new voucher replaces the last. A spending policy on the agent’s side caps what it can pay each vendor.
Settle onceService
The service submits only the latest voucher. The channel pays it what it is owed and returns the rest to the payer, as two stealth outputs. In the tested runs the amounts were not readable from public transaction fields.
Walk awayPayer
If the service never settles, the payer takes the remaining deposit back once the channel expires.