soft launch · 1 bot live
botx402 / agents
/agents · x402 + USDC, machine-callable

Same bots. Talked to in HTTP.

Every botx402 product is also a paid HTTP endpoint. Your agent calls it, the server returns 402 Payment Required with a USDC quote, the agent signs an EIP-3009 authorization and retries. We verify and settle through Coinbase's hosted facilitator. No account. No API key. Receipt by tx hash.

01

Provision a connection

Agent POSTs /agent/connections/xero, gets a connect_url. The operator opens it once, OAuths into Xero. Connection is reusable for 24h sliding TTL.

02

Sign the authorization

Agent calls the bot's /run, gets 402 with the price + payee. It signs an EIP-3009 transferWithAuthorization for the exact amount and retries with X-PAYMENT.

03

Settle on success

Server verifies via the facilitator, dispatches the work, settles on Base after delivery. Failed runs auto-refund — they simply never settle.

/agent-callable · live

1 bot live on the agent surface.

more bots ship → more endpoints unlock here
/revenueguard
RevenueGuard
Connect Xero. Get the 3 customers most likely to sink your business if they leave.
POST /api/v1/agent/revenueguard/run
price 19.00 USDC
connector xero (OAuth)
Bot details →

Network: base-sepolia on dev · base on prd · USDC asset pinned to the canonical Circle contract per network. Verified at build time against on-chain name().

/discovery · machine-readable

Two endpoints to introspect from.

/.well-known/x402

Catalog manifest. Every live bot's slug, the full /run URL, and a complete PaymentRequirements object the agent can hand straight to its signing path.

Fetch the manifest JSON →
/api/v1/agent/bots

Slim catalog. Each bot's slug, name, USDC + USD price, connector, status, and the JSON Schema for its inputs field. Useful for agent UIs that want to render the offer.

Fetch the slim catalog →
/quickstart · 4 calls

From zero to a settled run.

# 1. Provision a connection. Returns connection_id + connect_url.
curl -X POST https://api.botx402.io/api/v1/agent/connections/xero \
     -H 'content-type: application/json' -d '{}'

# 2. Show connect_url to the operator out-of-band. They OAuth into Xero.
# 3. Poll until status = "connected".
curl https://api.botx402.io/api/v1/agent/connections/by-id/<connection_id>

# 4. Pay + run. Use any x402-compatible client to sign an EIP-3009
#    authorization for the manifest above and resend with X-PAYMENT.
#    Coinbase ships reference clients in TypeScript, Python, and Go:
#    https://github.com/coinbase/x402

# Output your client should print on success:
# status: 200 receipt_id RG-YYYYMM-XXXXXXXX
# [polling] pending → completed
# pdf:     https://...presigned-s3-url-to-the-report-pdf...
# receipt: https://...presigned-s3-url-to-the-receipt-pdf...
# tx:      0x...settlement-hash-on-base...

x402 client libraries: github.com/coinbase/x402 — official Coinbase reference implementations in TypeScript, Python, and Go.

/the memo

What's protocol vs. ours.

The 402 handshake, the EIP-3009 authorization shape, the facilitator URL — that's all Coinbase's x402 protocol. We didn't invent it. We just wear it.

What's ours: a clean abstraction for adding new agent-callable bots — registry, pricing, payment plumbing, fulfilment queue. When bot #2 ships, it surfaces here as one new row; the x402 protocol layer above doesn't change.

Settle-on-success means failed runs auto-refund — your USDC never leaves your wallet because the authorization expires. For runs that do complete and you dispute the result: email refunds@botx402.io with the receipt id and your wallet. We send the USDC back from the recipient wallet manually. Crypto refunds are operator-driven on purpose; auto-refund APIs invite replay abuse.

We're on x402 v1 today. v2 lands when an agent SDK we want to onboard demands it.