Agent Payments on Arc

Pay per call. Verified. Settled in USDC.

Base fee 20 gwei/ Transfer $0.0013/ Finality <1 s

The rail

Let your agent pay for what it uses.

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.

  • Keys stay in the rail, never in the model
  • Limits belong to the account, not the prompt
  • Any x402 seller, not only CRA AGENT sellers
agent sessionarc · usdc
// 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

One tool call. Four things done.

The agent asks for a resource. CRA AGENT returns the resource and a receipt.

[01]

Quote

Fetch the URL. On 402, read the x402 terms: price, asset, network, seller.

[02]

Check

Caps per payment, per day and per seller, rate limit, allowlist. Seller identity resolved on ERC-8004; unknown seller, no payment.

[03]

Pay

Sign a USDC authorization for Circle Gateway: off-chain, gas-free, settled in batches on Arc. Large jobs route to ERC-8183 escrow.

[04]

Record

Every attempt lands in the ledger with price, seller, latency and outcome. Exposure per seller is a query.

For agents

Install it as an MCP server.

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_balance
  • arc_deposit · arc_ledger · arc_policy
  • Testnet today · Arc mainnet 16.09.2026
// .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());
[live]

First sellers on the rail

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

Put a price on a route.

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.

  • Standard x402: any x402 buyer can pay you
  • Hono today, Express next
  • Settlement guarantee and seller bonds in phase 2

Why Arc

Per-call pricing needs a fee you can predict.

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]

Dollars in, dollars out

Gas is USDC, so an agent's cost and its revenue are in the same unit. No token to buy first.

[finality]

Paid means paid

Malachite BFT: a transaction is pending or final, nothing in between. No reorgs, no confirmation windows.

[standards]

Composed, not invented

ERC-8004 identity, ERC-8183 escrow and Circle Gateway nanopayments, wired into one rail.

Roadmap

Where this goes.

Now
Buyer agent and first paid endpoints. MCP server, spend policy, ledger, nanopayments on Arc.
Next
Settlement guarantee. Seller bonds and real-time exposure per counterparty.
Then
Escrow float and evaluators. Escrow balances in USYC, evaluators for ERC-8183 jobs.

Give your agent a budget, not a wallet.

No project token. Not affiliated with Circle or Arc.