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, and the receipt says which of the three happened: settled, not charged because the seller failed, or failed outright.

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
  • Live on Arc mainnet · chain 5042
CRA AGENT as an MCP server: arc_pay, check policy, verify seller, write receipt
// .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 }
Put a price on a route: buyers pay through Circle Gateway, sellers receive USDC on Arc
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
  • Broken call, no charge: payment settles only after your handler succeeds
  • 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 and nanopayments, live on Arc mainnet.
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.

CRA token

A community token, CRA, trades on Arc. It sits beside the rail rather than inside it: payments, escrow and settlement are denominated in USDC, and no part of the software requires holding CRA.

Contract 0x70857041Fef0CED97F9e01E7Ccc21889AFe3F6F4 · Arc mainnet, chain 5042 · @Craagentarc

Agent payments on Arc: pay per call, verified, settled in USDC