A dark mountain peak beneath a stormy sky
your agent's tab

One endpoint your agent hits to pay for any API. It settles each call on Casper, routes to the cheapest model that still does the job, and never spends past its cap.

scroll
Built with Casper 2.0x402CEP-18DeepgramClaudeOdra

the primitive

A smart rail between your agent and every API.

Point your agent at Tab instead of the provider. It prices each call at real cost, routes to the cheapest model that still does the job, settles it on Casper, and stops at the cap you set.

routing

It picks the model, so your agent doesn't have to.

Every prompt is judged and sent to the cheapest model that still clears the bar. A quick fact goes to Flash-Lite; real reasoning goes to Pro. The on-chain charge is priced to whatever it picked.

Flash-LiteFlashPro
routed to Flash for this call, saved 78% versus always calling Pro
metering

You pay for the work, not a flat toll.

Speech is priced by the character, models by the token. The quote in each 402 tracks the real cost driver, so a short call costs less than a long one.

guardrail

A ceiling it cannot cross.

The balance is the limit. When the next call costs more than what is left, it simply does not happen. No overdraft, no surprise bill.

settlement

One real on-chain settlement per call.

Each paid request is a final transfer on Casper testnet in about two seconds, verifiable on the explorer, with no invoice to take on trust. Zug finality is what makes per-call settlement viable.

The gap

x402 lets agents pay. Nothing lets you trust them with money.

Pay-per-call settles the crypto-native services. It does nothing for the APIs that only take a card, and nothing stops an agent from draining your account overnight.

Agents can't hold a card

A non-human economic actor has a wallet, not a Visa. The fiat world won't onboard it, so it can't reach the services it needs.

No spend ceiling

Hand an agent an API key and it can burn thousands while you sleep. Nobody ships that to production without a hard cap.

No verifiable metering

You trust the provider's invoice. There is no on-chain proof you were charged for exactly the work you consumed.

No machine-native rail

Subscriptions and cards assume a human in the loop. Agents need to pay a fraction of a cent, per request, with no approval step.

How it works

Four steps, one on-chain transaction per call.

The agent never leaves its budget. Every fulfilled request is a real settlement on Casper, and Zug's instant finality is what makes per-call settlement viable.

01

Agent calls the rail

It points at our endpoint instead of the provider, holding a Casper key and a token budget.

02

402 + price

The rail answers 402 with a per-call price in our CEP-18 token.

03

Sign & settle

The agent signs an x402 authorization; the facilitator settles it on Casper in seconds.

04

Fulfilled

The rail forwards to the real API and returns the result, with an on-chain receipt.

Live demo

Watch an agent hit the wall.

Claude writes a script. The agent pays per line and goes silent the instant its balance runs out. Overspend isn't discouraged. It's impossible. Pick a budget and run it yourself.

Why Casper

The chain is load-bearing, not incidental.

~2s

Deterministic instant finality (Zug)

Per-call on-chain settlement is only viable with deterministic finality. On a probabilistic chain you would wait blocks per request. Here the agent acts and knows it settled. Every API call becomes one real, final transaction.

CEP-18

Our own credit token

The agent's token balance is its cap. Mint it, meter it, settle it via transfer_with_authorization.

0.10

Sub-cent micropayments

x402 prices each request in tokens. No accounts, no subscriptions, no human approval.

Integrate

A drop-in endpoint for any agent.

Point your agent's HTTP client at the rail and fund a Casper key. The x402 client signs payments automatically, so your code just calls the endpoint and gets the result back, bounded by a balance it can't exceed.

agent.ts
// the agent pays per call, automatically
const pay = wrapFetchWithPayment(fetch, client);

const res = await pay("https://rail/v1/speak", {
  method: "POST",
  body: JSON.stringify({ text: line }),
});
// 402 → sign → settle on Casper → audio
writeFileSync("line.mp3", await res.arrayBuffer());