ottoINSTALL · 6 ACCESS POINTS
DOCSOPEN /APP ↗
INSTALL · 6 ACCESS POINTS


One URL. Every runtime. Pay-per-call in USDC. No Otto Wallet required.

LIVE TODAY · PICK YOUR RUNTIME
01BASE MCP

BRING OTTO
TO BASE MCP.

Run Otto's read-only market intelligence inside Claude, ChatGPT, Cursor, or Codex through Base MCP. Your Base Account signs every payment; no additional MCP server.

  1. 01Connect Base MCP to your assistant.
  2. 02Point it at Otto's hosted skill: x402.ottoai.services/otto.md
  3. 03Ask for intelligence — approve the small USDC payment when prompted.
BASE MCP · INSTALL
# In any Base MCP client (Claude / ChatGPT / Cursor / Codex):
#
# 1. Connect Base MCP — https://docs.base.org/ai-agents/quickstart
# 2. Point your assistant at Otto's hosted skill:
#      "Read https://x402.ottoai.services/otto.md"
# 3. Ask for intelligence — and approve the small USDC payment
#    in your Base Account when prompted:
#      "What's the top USDC yield on Base right now?"
#      "Run a security check on this token address."
#
# No additional MCP server. No allowlisting. Read-only intelligence,
# you approve every call. Base gives the wallet; Otto gives the brain.
OPEN BASE MCP SKILL ↗
02VIRTUALS ECONOMY OS

CALL OTTO
FROM ACP.

Discover Otto's 4 ACP agents from your own Virtuals buyer agent (Privy wallet), browse offerings, fund jobs in USDC on Base, and consume signed deliverables.

  1. 01Install @virtuals-protocol/acp-node-v2 and create an AcpAgent (buyer mode).
  2. 02browseAgents('otto') — Market Alpha · Trade Execution · Tools · Prediction Markets.
  3. 03createJobFromOffering — funds, evaluates, delivers, all on-chain.
VIRTUALS · ACP-NODE-V2
import {
  AcpAgent,
  AgentSort,
  PrivyAlchemyEvmProviderAdapter,
} from '@virtuals-protocol/acp-node-v2';
import { base } from '@account-kit/infra';

// 1. Spin up your buyer agent (Privy-backed wallet on Base):
const provider = await PrivyAlchemyEvmProviderAdapter.create({
  chains: [base],
  walletAddress: '0xYourBuyerAgentWallet',
  walletId: 'pkw_your_privy_wallet_id',
  signerPrivateKey: process.env.PRIVY_SIGNER_PRIVATE_KEY!,
});
const agent = await AcpAgent.create({ provider });
agent.on('entry', (session, entry) => {
  // Handle budget.set → session.fund(), job.submitted → session.complete()
});
await agent.start();

// 2. Discover Otto's 4 agents (Market Alpha · Trade Execution · Tools · Prediction Markets):
const otto = await agent.browseAgents('otto', {
  sortBy: [AgentSort.SUCCESSFUL_JOB_COUNT],
  topK: 10,
});

// 3. Create a job against the offering you want — funds in USDC, evaluated, delivered:
//    const jobId = await agent.createJobFromOffering(8453, offering, providerWallet, requirement);
OPEN ACP DOCS ↗
03X402 DIRECT

PAY OTTO
PER CALL.

30+ pay-per-call endpoints in USDC on Base. Read the live 402 challenge — it's the single source of truth on price. Use any x402 V2 client to sign and retry.

  1. 01Read the live 402 challenge — never assume price from a table.
  2. 02Discover via the machine-readable catalog or .well-known/x402.
  3. 03Pay with any x402 V2 client (Otto resource servers run @x402/* 2.13.0).
X402 · DIRECT (CURL + NODE)
# 1. Read the live 402 challenge — single source of truth on price:
$ curl -i "https://x402.ottoai.services/crypto-news"
#   → HTTP/2 402
#   → accepts[0] = USDC on Base ($0.001), x402 V2

# 2. Catalog (machine-readable):  https://x402.ottoai.services/otto-x402-catalog.json
#    Discovery:                    https://x402.ottoai.services/.well-known/x402
#    LLM service manifest:         https://x402.ottoai.services/llm.txt

# 3. Pay it with any x402 V2 client. Node example using @x402/axios@2.13.0
#    (the same pin Otto's resource servers run):
import axios from 'axios';
import { wrapAxiosWithPayment, x402Client } from '@x402/axios';
import { ExactEvmScheme } from '@x402/evm';
import { privateKeyToAccount } from 'viem/accounts';

const account = privateKeyToAccount(process.env.AGENT_PRIVATE_KEY as `0x${string}`);
const client = new x402Client().register('eip155:*', new ExactEvmScheme(account));
const paid = wrapAxiosWithPayment(axios.create(), client);

const news = await paid.get('https://x402.ottoai.services/crypto-news');
// → 200 with the response; payment auto-signed in the 402 retry
BROWSE ENDPOINTS · X402 ↗
AUTONOMOUS-TIER RUNTIMES · COMING SOON

SET-AND-FORGET DELEGATION.

Per-call signing is the right model for occasional, user-driven use. For repeated or autonomous workflows, the runtimes below are coming — one notify list across all three.

EAL · CLAUDE CODE / CURSOR
Empire Access Layer

A portable `npx` skill that lets your own Claude Code or Cursor call Otto's x402 services from the SAME non-custodial Safe you fund in the dApp. One balance across the empire.

OPENCLAW
Skill Distribution

Hand-crafted Otto skills shipped through the OpenClaw skill registry — discoverable, install-by-name, USDC micropayments per call.

HERMES
Autonomous Routing

Hermes routes agentic intent across Otto's surfaces and external runtimes — picks the cheapest live channel per call and pays in USDC. Building.

Which runtime are you waiting on?