Quote
Fetch the URL. On 402, read the x402 terms: price, asset, network, seller.
The rail
Give any LLM agent one tool and it can buy an API call for a fraction of a cent. CRA AGENT reads the x402 price, checks the spending policy, verifies the seller, pays gas-free through Circle Gateway and writes a receipt. No wallet code in your agent, no token, no gas.
// the agent calls one toolarc_pay({ url: "https://api.weather.example/milan" }) // CRA AGENT does the rest→ 402 payment required · 0.001 USDC · eip155:5042→ policy ok · daily cap 5.00, spent 0.31→ seller verified · ERC-8004 agent #1042→ nanopayment signed · Circle Gateway · no gas→ 200 OK · 214 ms · ledger #8811 ✓ paid 0.001 USDC · balance 4.69
How it works
The agent asks for a resource. CRA AGENT returns the resource and a receipt.
Fetch the URL. On 402, read the x402 terms: price, asset, network, seller.
Caps per payment, per day and per seller, rate limit, allowlist. Seller identity resolved on ERC-8004; unknown seller, no payment.
Sign a USDC authorization for Circle Gateway: off-chain, gas-free, settled in batches on Arc. Large jobs route to ERC-8183 escrow.
Every attempt lands in the ledger with price, seller, latency and outcome. Exposure per seller is a query.
For agents
Your agent gets six tools and a budget it cannot change. Works with Claude, Cursor and any MCP client. Prefer code? The same rail is a TypeScript fetch.
arc_quote · arc_pay · arc_balancearc_deposit · arc_ledger · arc_policy// .mcp.json
{ "mcpServers": { "cra-agent": {
"command": "cra-agent-mcp",
"env": {
"CRA_NETWORK": "arc",
"CRA_KEY_FILE": "/etc/cra-agent/agent.key",
"CRA_POLICY": "daily=5,per_seller=0.5,per_payment=0.05"
}
} } }
import { createRail } from "@cra-agent/router"; const rail = createRail({ network: "arc", signer, policy, ledger, identity, agentId }); const { response, receipt } = await rail.fetch(url); // receipt → { amountUsdc: "0.001", payTo, status: "settled", txHash }
import { createSeller } from "@cra-agent/seller"; const seller = createSeller({ sellerAddress, network: "arc" }) .route("GET /v1/forecast", "$0.001"); app.use(seller.middleware());
Our own Arc data is priced per call: base-fee forecast, transaction cost estimate, deploy history, RPC health. Free preview on the network page.
For sellers
Buyers pay through Circle Gateway and you receive USDC on Arc in batched settlements. No invoices, no API keys to leak, no chargebacks. Your prices, latency and uptime become your reputation.
Why Arc
Arc's base fee is a moving average of block usage with a 20 gwei floor, and the next block's fee is written in the current header. Gas is paid in USDC. Finality is deterministic in under a second.
Gas is USDC, so an agent's cost and its revenue are in the same unit. No token to buy first.
Malachite BFT: a transaction is pending or final, nothing in between. No reorgs, no confirmation windows.
ERC-8004 identity, ERC-8183 escrow and Circle Gateway nanopayments, wired into one rail.
Roadmap
No project token. Not affiliated with Circle or Arc.