What an agent wallet needs to pay for data on Base
An agent wallet needs three things: an EVM private key it can sign with, a USDC balance on Base mainnet, and an x402 client that handles the 402 response. It does not need ETH for gas, because the facilitator broadcasts the transfer and pays that cost. No account or API key is created at any point.
/mcp. Nothing here needs an API key or a signup.
The wallet is the account. That is the shift worth internalising before you set one up, because it changes what the setup question is. You are not registering for anything. You are deciding what one key needs to hold.
The three requirements
| Requirement | What it is | Where it comes from |
|---|---|---|
| Signing key | An EVM private key the agent process can reach | A CDP server wallet, a viem local account, or an exported hot wallet |
| USDC on Base | An ERC-20 balance at 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 | Bridging, an exchange withdrawal sent to Base, or an onramp |
| x402 client | Code that reads the 402 offer, signs it, and retries | @x402/fetch, another x402 v2 client, or npx botwire-mcp |
Base mainnet is chain ID 8453, written eip155:8453 in the payment offer. A wallet funded on Ethereum mainnet, on Arbitrum, or on Base Sepolia will not settle against a mainnet offer. The network is stated in the offer and the client either matches it or fails, so getting the chain right is not a preference.
Why the wallet holds no ETH
This surprises people who have paid gas before. In the x402 exact scheme on EVM chains, the client signs an EIP-3009 transferWithAuthorization message. It never submits a transaction. The facilitator takes that signed authorization, broadcasts it, and pays the gas.
The consequence is practical: an agent wallet can hold USDC and nothing else and still transact. You do not have to keep a second balance topped up, and you do not have to handle the failure mode where an agent has money for the data but not for the gas to move it. The signature fixes both the amount and the recipient, so the facilitator cannot alter either.
How much to fund it with
Calls on this service cost $0.005 or $0.01, so the arithmetic is short.
| Workload | Calls per month | Monthly USDC |
|---|---|---|
| One agent, 4 calls per run, 30 runs | 120 | about $0.90 |
| Hourly monitor on one wire | 720 | about $3.60 |
| 50 agents, 20 calls each per month | 1,000 | about $7.50 |
A $10 balance covers between 1,000 and 2,000 calls depending on the mix of tiers. Fund small and top up, because a hot key holding operating float is a different risk category from a hot key holding a treasury. The full per-query cost, which includes the tokens your model spends reading the response, is broken down in what a live data call costs an agent.
Testing before you fund anything
Every paid wire has a free preview that returns the top 3 results with no payment and no wallet. Wire your integration against the preview first, confirm the shape of the data, then attach a key.
# no wallet needed: free preview, top 3 results
curl "https://thebotwire.com/cve/preview?q=openssl&since=3d"
# paid: $0.005, x402 client signs the USDC authorization and retries
curl "https://thebotwire.com/cve/latest?q=openssl&since=3d&limit=10"
# what the offer looks like before signing
curl -i "https://thebotwire.com/cve/latest?q=openssl" | grep -i payment-required
# PAYMENT-REQUIRED: {"scheme":"exact","network":"eip155:8453","asset":"USDC","amount":"0.005"}/health and /sources are free and need no wallet either, which makes them useful as a liveness check inside an agent loop.
Keeping the key out of the blast radius
Treat the agent wallet as a spending account, not an identity.
- One wallet per agent fleet, not per company. Spend history on Base is public,
so a shared treasury key publishes your entire usage pattern.
- Cap calls per task, not just balance. A runaway loop with a funded wallet is
the only real overspend risk, and it is bounded on your side.
- Read the price from the offer, not from memory. The advertised price per
route is in the discovery document, and a client that checks it will not sign an offer that changed.
- Rotate by draining, not by revoking. There is no key to revoke server side,
because no key was ever issued.
FAQ
Does an agent wallet need ETH on Base to pay for API calls?
No. The x402 exact EVM scheme uses EIP-3009, where the client signs an authorization and the facilitator broadcasts the transaction and pays the gas. A wallet holding only USDC on Base can complete a paid call.
Can I test an x402 integration on a testnet?
Not against this service. The Bot Wire settles on Base mainnet only, at eip155:8453. The free preview endpoints are the intended test path: they return real data with no payment, so you can validate parsing and routing before any wallet exists.
What happens when the wallet runs out of USDC?
The paid call fails at the payment step and returns 402 rather than data. Nothing is queued and nothing is owed. Preview endpoints keep working, so an agent that falls back to preview on a 402 degrades to the top 3 results instead of stopping.
Can one wallet serve several agents at once?
Yes. Each call carries its own signed authorization, so there is no shared quota to exhaust and no account-level lock. The tradeoff is attribution: one wallet means one spend history, so use separate wallets when you need to know which agent spent what. See how the x402 handshake works for what each call carries.
Sources
The Base mainnet chain ID of 8453 and its RPC endpoint are documented in Base's connecting-to-Base guide. The USDC contract address on Base is published by Circle in its USDC contract addresses reference. Gas responsibility and the EIP-3009 signing flow are specified in the x402 exact EVM scheme.
Related: What is x402, and how does an AI agent pay for an API call? · How much does it cost for an AI agent to query live data?