Skip to main content
The Empire Access Layer (EAL) lets your own AI agent — Claude Code, Cursor, Codex CLI, or any agent runtime — call Otto AI’s intelligence and tooling directly, paid per use in USDC. Instead of using Otto through the /app dashboard or the chat tools, you wire Otto’s x402 service catalog straight into the agent you already work in. There are two ways to pay:
PathWhat it isStatus
BYO-x402Your agent uses your own funded x402 wallet to pay each call directlyLive today
Funded pull (one Safe, auto-pay)Fund one Otto Safe once; Otto auto-pays your calls from it under a capped, revocable permissionComing — not yet enabled
The rest of this page covers the live BYO-x402 path with working steps, then the coming funded-pull vision (clearly labeled, with no steps that don’t work yet).

What EAL is for

Otto runs a swarm of agents exposing 50+ paid HTTP endpoints over the x402 protocol — market intelligence, KOL sentiment, token security, yield discovery, AI research, image/video generation, and more. x402 is a pay-per-request standard: there are no API keys. Your agent makes a request, gets a 402 Payment Required, pays a few fractions of a cent in USDC on-chain, retries with proof, and gets the data. EAL is the on-ramp for builders and power users who want that catalog inside their own agent, not behind the dApp.
EAL vs. the dApp: the /app Mission Control dashboard is for human users clicking through guided mini-agents. EAL is for your agent calling Otto’s services programmatically. Same underlying catalog, different front door.

BYO-x402 (live today)

In the “bring your own x402” model, your agent pays each call from an x402 wallet you fund and control. Nothing about your wallet ever enters Otto — you sign each micropayment yourself (or your agent runtime signs it with the key you provide). Otto just serves the catalog and the 402 paywall. This is the standard x402 flow, and it works against the live catalog right now.

What you need

  • An x402-capable agent or client. This includes Claude Code / Cursor with an x402 payment tool (for example via Base MCP), or any client built with an x402 library (x402-fetch, @x402/axios, @coinbase/x402).
  • A funded wallet with USDC on Base (Polygon and Solana are also supported). Calls cost roughly $0.001–$0.05 each for intelligence reads; a few dollars covers a lot of usage. Use a dedicated, lightly funded wallet — never your main treasury.

1. Discover the catalog

Everything is discoverable live — no signup, no key request:
# Human/JSON catalog of all live endpoints + indicative prices
curl https://x402.ottoai.services/otto-x402-catalog.json

# Machine-readable catalog for AI agents
curl https://x402.ottoai.services/llm.txt

# Standard x402 discovery document
curl https://x402.ottoai.services/.well-known/x402

2. See the paywall

Hit any paid endpoint without payment and you’ll get a 402 describing exactly what to pay:
curl -i https://x402.ottoai.services/crypto-news
# → HTTP/1.1 402 Payment Required
#   (body describes the USDC amount + chain to pay)

3. Pay per call

Your x402 client handles this automatically: it reads the 402, signs a USDC payment from your wallet on-chain, retries the request with the payment proof, and returns the data. With a library it’s a single call:
import { wrapFetchWithPayment } from "x402-fetch";
import { createWalletClient, http } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { base } from "viem/chains";

// Your own funded wallet — this key never leaves your machine and is never sent to Otto.
const account = privateKeyToAccount(process.env.X402_PRIVATE_KEY as `0x${string}`);
const wallet = createWalletClient({ account, chain: base, transport: http() });

const fetchWithPay = wrapFetchWithPayment(fetch, wallet);

const res = await fetchWithPay("https://x402.ottoai.services/crypto-news");
const data = await res.json(); // paid, settled, and returned in one call
In Claude Code / Cursor with an x402 payment tool, the agent does the same thing through the tool’s initiate / complete payment calls, and you approve the spend.
Every Otto x402 service is read-only and non-custodial for the BYO-x402 path: the catalog signs nothing and holds no keys — your wallet signs each payment, which you approve. Start with the cheap intelligence reads (/crypto-news, /kol-sentiment, /token-alpha) to confirm the loop end-to-end before scaling usage.

Where to look next

  • The full endpoint list, prices, and capability tags live on the x402 Storefront page.
  • Prefer on-chain USDC escrow with receipts and reputation for higher-stakes jobs? Use acp-cli instead.

Coming soon: fund one Safe, Otto auto-pays

The funded-pull path described below is not enabled yet. The headless login flow it would use currently returns a “not enabled” response in production. Do not expect to fund one Safe and have Otto auto-pay your agent’s calls until this is announced as live. The live way to use EAL today is the BYO-x402 path above.
The friction in BYO-x402 is that your agent needs its own funded x402 wallet, and you top it up and manage it. The funded-pull model removes that:
  • Fund once. You’d fund a single non-custodial Otto Safe (the same user-owned Safe7579 account /app is converging onto) — and that one balance would power both the dApp and your agent.
  • Authorize a capped, revocable pull. You’d sign once to grant Otto’s payer a bounded permission to pull USDC from your Safe to cover your calls — with an exact spending cap, an expiry, and the ability to revoke at any time. It is not a blank check: Otto’s authority is limited to the cap until expiry or revocation, and never the whole Safe.
  • Your agent stays keyless. Your agent would authenticate to your Otto account with a scoped, revocable tokenno on-chain key ever enters the agent’s sandbox. A stolen token alone can’t move funds beyond the cap, and you revoke it from the dApp.
  • One balance, two front doors. The same funded Safe would back both the /app dashboard and your external agent — fund in one place, spend across the empire.
This is designed to be strictly safer than handing an agent a private key: the blast radius is the cap until expiry, the permission requires your signature to install or change, and revocation is one click.
Honest status: the ownership and BYO-x402 pieces are live; the funded-pull billing rail is built but fenced — every enabling flag is off in production, and no funds move through it. We’ll document the exact onboarding steps here the moment it’s armed. Until then, use BYO-x402.

Summary

  • Live today: point your own agent at Otto’s x402 catalog and pay per call from your own funded x402 wallet (BYO-x402). No keys go to Otto; you approve every payment.
  • Coming: fund one non-custodial Safe once and let Otto auto-pay your agent’s calls under a capped, revocable permission — keyless agent, one balance across the dApp and your terminal.