Letting Your Agent Spend Money

x402, USDC, and a Base Account wallet through the Base MCP - how an aeon agent pays for the APIs it needs without API keys, credit cards, or prefunded billing.

PUBLISHED READ 7 MINFILED UNDER X402 / PAYMENTS / USDC / SERIES

Most AI agents are read-only. They fetch, they summarize, they post. They can describe the world but they can’t transact in it. Ask one to check live prediction-market odds, pull a premium weather forecast, or hit a paid search API, and the agent stops at the paywall and asks you for help.

aeon plugs that gap with two pieces: x402 - a stablecoin micropayment protocol revived by Coinbase - and a Base Account wallet the agent reaches through the Base MCP, plus the operating discipline of letting an agent reach for its own wallet instead of asking you.

This post is the full recipe. By the end you’ll know what a paid call looks like end to end, what the caps and seatbelts are, and which kinds of skills become buildable that weren’t before.

§ 01The problem, stated cleanly

An agent that wants to act in the world has to authenticate to services. Today that means:

  • You sign up for an API.
  • You get a key.
  • You paste the key into a secret store.
  • You attach a credit card to the billing account.
  • You monitor the spend so the agent doesn’t run away with it.

Every new capability is a five-step human ritual. Multiply by a dozen APIs and the agent becomes a thin wrapper around your manual procurement work. Worse, the agent is blind to cost - it has no idea which call is expensive, no way to compare providers, no way to discover a new one.

The fix is to give the agent its own money and a protocol to spend it. That’s what x402 and a Base Account wallet, wired in through the Base MCP, do.

§ 02x402 in one paragraph

x402 is a payment protocol that turns HTTP 402 - the long-unused “Payment Required” status code - into a real, usable handshake. A service publishes a price, a client (your agent) hits the endpoint, gets back a 402 with payment requirements, sends a small USDC payment, and retries the request with proof of payment. The whole loop takes seconds and costs cents. No accounts. No keys. No prefunded billing.

The x402 bazaar is a marketplace of services that speak this protocol - currently covering prediction-market odds, web search, news, weather, sports stats, crypto prices, premium research, and more. Anyone can list a service. Anyone - including an agent - can pay for one call.

§ 03The Base MCP wallet in one paragraph

x402 needs a wallet on the buyer side. The Base MCP gives the agent one - a Base Account, reached through the Base MCP server at mcp.base.org. You connect it once from the aeon dashboard with a one-click OAuth flow (the base-mcp skill); from then on the agent holds a USDC wallet on Base and can make x402 payments with no API key anywhere. The wallet is the auth.

In aeon, you connect Base once in the dashboard’s MCP panel - the OAuth tokens are captured as repo secrets and refreshed on every run, so headless GitHub Actions runs stay authenticated. From then on any skill with the Base MCP available can pay against an x402 listing, with every payment gated by an approval you tap (see the seatbelt below).

§ 04A live recipe, end to end

Here’s what a paid call actually looks like from an aeon skill. Three steps, all through the Base MCP.

Step 1 - find a service

The agent browses the x402 bazaar - the directory of services that speak the protocol - for a listing that matches what it needs. Each entry carries a URL, a price per call, and a short description. The agent picks one.

Step 2 - inspect the contract

It reads the listing’s input schema, output schema, exact price, and any usage notes, and constructs a valid request before committing any money.

Step 3 - pay and receive

agent  → Base MCP x402 payment tool (service URL, input)
Base MCP → { approvalUrl: "https://…", requestId: "req_…" }
you    → tap "Approve Transaction" in Base Account
agent  → poll requestId → response JSON

Because a payment is a write, the Base MCP returns an Approve Transaction link and a request ID rather than moving money on its own. You approve in Base Account - in aeon the link lands on Telegram, so it’s one tap from your phone - the agent polls the request ID until it clears, then receives the response JSON. A skill consumes that JSON and writes the result into the day’s message, into memory, or into a downstream skill’s input.

That’s the full loop. From the agent’s point of view, it’s the difference between “I’d need an API key for that” and “I found the data - tap to buy it.”

§ 05The seatbelt: you approve every payment

The obvious question - what stops the agent from emptying the wallet? - has a clean answer: it can’t spend on its own.

Every write the Base MCP performs - a send, a swap, an x402 payment - runs in approval mode. The agent doesn’t move funds; it prepares the transaction and the Base MCP hands back an Approve Transaction link plus a request ID. Nothing settles until you open that link and approve it in Base Account, and the agent only reports success once the request clears.

  • The agent can’t self-approve - approval happens in Base Account, outside the prompt, so no skill can green-light its own spend.
  • Every payment is explicit - one link, one tap, one transaction. In aeon that link arrives on Telegram, so you approve from your phone.
  • The wallet is the boundary - it only holds the USDC you funded it with, so the blast radius of a misbehaving skill is capped at the balance you chose to load.

The seatbelt is enforced at the wallet and at the approval step, not in the prompt. aeon’s own discipline stacks on top: “stay within any configured spend and rate limits” is a hard constraint in STRATEGY.md, which sits in context on every run.

§ 06What this unlocks

Read-only agents become acting agents. Concretely, things that were unbuildable or rate-limited become trivial:

Prediction-market odds in a morning brief

A narrative-tracker skill that paid $0.02 to pull live odds on the markets it’s watching is more useful than one that paraphrases yesterday’s news. The cost is a rounding error against the signal.

Premium search when free search rate-limits you

Most free search APIs are throttled, capped, or both. A morning brief that hits the cap halfway through gets a degraded output. A skill that can pay for one premium search per run never hits the cap.

Weather, sports stats, news - anything with a paywall

Every category in the x402 bazaar is a capability that used to require an account, a key, a billing relationship. The agent can now sample any of them, one call at a time, and keep going.

“I can’t do that” becomes a recoverable failure

When an agent says “I’m rate-limited” or “I don’t have access to live data” or “I’m behind a paywall,” the operator now has a fix: route the request through the x402 bazaar and approve the payment. That’s a one-tap escape hatch, and aeon’s skill catalog increasingly treats it as the default rescue path when a free path fails.

§ 07What an unlock looks like in aeon.yml

A skill that uses paid x402 calls is no different from any other aeon skill - same Markdown file, same chain syntax. Here’s a stylized chain:

chains:
  paid-brief:
    schedule: "0 12 * * *"
    steps:
      - skill: narrative-tracker
      - skill: paid-odds-lookup, consume: [narrative-tracker]
      - skill: digest, consume: [narrative-tracker, paid-odds-lookup]

The middle step is the one that costs money - and the one that surfaces an approval before it settles. The receipt is public: every payment is a Base transaction onchain, and the skill logs the paid call to memory/logs/ like any other run.

§ 08What it doesn’t do

Two honest limits.

It is not a replacement for trusted-vendor accounts. If your skill needs OpenAI, Anthropic, or another provider with strict terms of service, you still use an API key. x402 is for the long tail of services that can be paid for per call without a business relationship.

It is not anonymous. The wallet is on Base. Transactions are public. If the privacy properties of payment matter to your use case, plan accordingly.

§ 09How to wire it up

If your aeon fork doesn’t yet have the wallet connected, you don’t install a CLI - you connect the Base MCP from the dashboard. Open the MCP panel, pick Base, and run the one-click OAuth flow:

  • The dashboard walks the OAuth handshake with mcp.base.org and requests the agent_wallet:transact scope.
  • It stores the refresh material as a repo secret and re-mints a fresh access token on every run, so headless GitHub Actions stays authenticated.
  • Fund the Base Account by sending USDC to its address.

There are no caps to configure - the seatbelt is the approval step, not a policy file. From here, any skill with the Base MCP available can make an x402 payment. The first time one does, you’ll get a Telegram message with an Approve Transaction link; tap it and the data flows in. That feedback loop is, intentionally, the most boring thing in the world - and that’s the point. The agent is just doing its job, and paying for the data it needed to do it.

§ 10Next in the series

Article 4: Skills that build skills. Why an aeon skill is a Markdown file, how skills chain inside aeon.yml, and what it means that the agent can author its own skills - with git log as the audit trail.