Otto X is an agent-native DeFi platform. AI agents can swap, bridge, and invest on your behalf with a
single wallet signature. No seed-phrase exposure. No gas management. No intermediate custody by Otto.
The infrastructure composes three existing primitives — x402 + OKX Onchain OS + EIP-3009 — and the user feels magic.
We chain the endpoints — one payment, one dose of alpha.
Recipes chain multiple of Otto's live X Layer endpoints into one high-signal report. You sign once — Otto runs the chain server-side and returns one answer.
The one-call flow
Five steps → one HTTP call.
Traditional agent-driven DeFi is a five-step gauntlet of approvals, gas estimations, and failure modes.
Otto X collapses it into a single request with one wallet confirmation.
Before · Legacy flow
Agent tries to swap 10 USDC → WETH for you
1
Expose your private key to the agent somewhere it can reach. Immediate fail.
2
Approve the token to the router. Separate tx, user pays gas.
3
Submit the swap. Another gas fee. Agent or user signs.
4
Track the tx, handle reverts, monitor slippage, watch for frontrunning.
5
Every approval stays open forever. Every step is a failure mode.
After · Otto X
Same agent. Same swap. One HTTP call.
1
Bootstrap (once per payer). Your first paid /auto-* call provisions your TEE sub-wallet and returns its address in the 409 funds_required response. Cache it — same payer, same sub-wallet, forever. No provisioning without a real payment behind it.
2
One wallet confirmation. Sign x402 fee + an EIP-3009 TransferWithAuthorization note — exact amount, short time window, to = your sub-wallet. Modern wallets batch both into one prompt.
3
POST /auto-swap. Server pulls your USDC → your sub-wallet direct, tops up dust gas, executes via OKX DEX. HTTP 200 with every tx hash.
Custody model
Three layers. Zero Otto-held funds.
The key insight: principal moves user → user's own sub-wallet, never through Otto.
Otto pays gas + orchestrates, nothing more. You can empty the sub-wallet at any time via the escape hatch.
1
Your wallet
Holds your USDC / USDT principal. Your seed phrase, your keys — Otto cannot see or touch it.
You sign EIP-3009 authorizations off-chain from here.
Self-custody · EOA / hardware wallet
2
Your Otto X sub-wallet
TEE-custodied inside OKX Onchain OS. The key never leaves the Trusted Execution Environment —
neither Otto nor OKX staff can export it. Receives principal, executes ops, holds residuals.
TEE · idempotent · deterministic per payer
3
Otto X operator
Pays gas to broadcast your EIP-3009 authorization and dust gas top-ups.
Never takes custody of your principal. The transfer is user → sub-wallet direct.
Hot wallet · gas-only · orchestration
✓
Signer binding. principalAuth.from must equal the x402 payer. No impersonation.
✓
Destination locked. principalAuth.to must equal your own sub-wallet. No drains.
✓
Amount + time bound. Exact value, specific time window. No open allowances.
✓
Replay protection. Nonce uniqueness enforced in DB + on-chain authorizationState.
✓
Protocol allowlist. Sub-wallets can only touch Aave V3, Lido, Compound V3, Morpho on vetted chains.
✓
Escape hatch.POST /auto-withdraw sweeps sub-wallet funds to any address, anytime.
✓
Idempotency. Every op has a (payer, op_type, body_hash) key. Safe to retry.
✓
409 fallback. Clients without EIP-3009 support still get a working two-step funds-required path.
See the power yourself
Feel what your agent just learned.
Every endpoint below is a new skill an AI agent can earn the right to use for a fraction of a cent.
Connect a wallet, sign one tiny USDT0 payment on X Layer, and watch the superpower light up in real time — live news,
KOL sentiment, on-chain research, a TEE-custodied sub-wallet, even a DEX swap — all behind a single signature.
Wallet
Not connected
Network
—
USDT0 balance (X Layer)
—
Need USDT0 on X Layer? Bridge from any chain via
OKX Bridge,
or deposit from your OKX exchange account. Payments are ~$0.001–$0.01 each; a few dollars goes a long way.
Payment
$0.001 USDT0 (once)
The full one-call flow, end-to-end
Swap USDT0 → any X Layer asset.
Two prompts in your wallet, one HTTP call. The first signs the x402 fee — $0.05 USDT0 to Otto.
The second signs an EIP-3009 principalAuth note that pulls your USDT0 principal directly
into your TEE sub-wallet — never through Otto's hands. The server tops up dust gas, executes via
OKX DEX, and returns every tx hash. Connect above first.
Wallet
Connect above ↑
Sub-wallet (X Layer)
—
We look up your sub-wallet via free /sub-wallet/preview as soon as you connect.
If you don't have one yet, the panel above can provision it for $0.01 (select GET /sub-wallet and Pay & call).
USDT0 — X Layer's EIP-3009 principal asset
You'll sign
$0.05 fee + 1.00 principal = 1.05 USDT0 total
One call: idle → yield
Yield Copilot — put idle stablecoins to work.
Same one-call shape as the swap above. Sign the $0.05 x402 fee, sign an EIP-3009
principalAuth note that lands your USDT0 in your TEE sub-wallet — never
through Otto's hands — and POST /yield-copilot. Otto picks the highest-APY
Otto-allowlisted lending venue for that stablecoin on that chain (Aave V3 / Compound V3 /
Morpho — Base, Arbitrum, Optimism, Ethereum, X Layer), supplies it, and hands back a
before/after card. Connect above first.
Wallet
Connect above ↑
Sub-wallet (X Layer)
—
Same TEE sub-wallet as the swap panel. No sub-wallet yet? Provision it for $0.01 in the
pay panel above (select GET /sub-wallet and Pay & call). Otto never pools
or rehypothecates your funds — withdraw the position anytime via
POST /auto-defi-withdraw, or sweep the whole sub-wallet via POST /auto-withdraw.
X Layer · USDT0 — the EIP-3009 principal asset on chain 196 (→ Aave V3 X Layer)
You'll sign
$0.05 fee + 1.00 principal = 1.05 USDT0 total
Set it and forget it
Yield Watch — Otto rebalances for you.
One signature, 30 days of autonomous rebalancing. Otto watches your Aave V3 / Compound V3 positions
across Base, Arbitrum, Optimism, Ethereum, and X Layer — when a better venue sustains a meaningful
APY gap, Otto moves your funds. You stay in control: cap the maximum per move, cap the number of
moves, pause or revoke any time. The delegation is scoped, on-chain-verifiable, and the worker only
signs from your TEE sub-wallet (never from your external wallet).
Wallet
Connect above ↑
Sub-wallet
—
Same TEE sub-wallet as Swap + Yield Copilot. Yield Watch operates ON your sub-wallet's existing positions
(deposit via /yield-copilot first if you haven't yet). Otto's worker runs hourly; auto-mode broadcasts
only fire when a hysteresis-confirmed APY gap clears your signed thresholds.
Notify only. Otto Telegrams you when there's a better venue. You click the suggested
two-call switch yourself. No on-chain delegation, no spending limits — just alerts.
You'll sign
Just a POST — no signature needed for Notify mode.
Pause / revoke an existing subscription
Auto mode requires a signed revoke (EIP-712); notify mode just sends a DELETE.
Try it live
Free endpoints, right here.
All three below run against the live Otto X server — no API key, no payment, just click. Perfect for sanity-checking the service is alive
before you wire up a paid call.
Look up a sub-wallet
Free · GET /sub-wallet/preview
Read-only DB lookup. Paste any EVM address to see whether Otto has already provisioned a TEE sub-wallet for it.
Nothing is provisioned here — provisioning is tied to a real paid /auto-* call, not a button click.
Service health
Free · GET /health
One-click ping. Returns service name, chain, x402 network, and a timestamp. Useful as a canary during stress tests.
X Layer curated tokens
Free · GET /tokens
The on-the-house token registry Otto X uses for swap quoting on X Layer.
Small, curated list with the native assets and stablecoins.
Full endpoint catalog
65 endpoints. One payment standard.
Every paid endpoint honors x402 Payment Required. Send a request without payment, receive a 402 with exact price + payment address.
Pay, retry, get data. No API keys.
GET
/vet-token?address=0x...
Token Safety & Tradeability Vetting — one-call X Layer token check: GoPlus contract security (honeypot, tax, mint/ownership flags) + holder concentration + live OKX DEX tradeability & price. Refuses (unpaid) if the security scan is empty.
$0.01
GET
/token-deep-dive?symbol=BTC
Token Deep-Dive — full-picture briefing for a major token: price & market cap + contract security + derivatives funding/OI + market KOL context + OKX DEX price. Unresolved legs labelled unavailable, never faked. Refuses (unpaid) if core token details are missing.
$0.05
GET
/rwa-pulse
RWA Market Pulse — a pulse on the real-world-asset market: TradFi macro (indices, VIX, DXY, yields, commodities) + live tokenized-RWA perps (equities like AAPL/TSLA/NVDA, commodities, FX) from Hyperliquid + crypto market news. Live legs only; any reading that would fabricate is omitted and named. Refuses (unpaid) if the macro core is empty.
$0.05
POST
/auto-swap
Execute an in-chain swap on your Otto X sub-wallet via OKX DEX aggregator
$0.05
POST
/auto-bridge
Execute a cross-chain bridge from your Otto X sub-wallet (17 chains supported)
$0.05
POST
/auto-defi-invest
Deposit into a whitelisted DeFi protocol (Aave V3, Lido, Compound V3, Morpho) from your Otto X sub-wallet
$0.05
POST
/auto-defi-withdraw
Redeem an active DeFi position from your Otto X sub-wallet
$0.05
POST
/yield-copilot
One-call yield: deploy your idle stablecoins into the highest-APY Otto-allowlisted lending venue (Aave V3 / Compound V3 / Morpho) on Base, Arbitrum, Optimism, Ethereum, or X Layer — accepts principalAuth; returns a before/after APY + projected yield artifact
$0.05
POST
/auto-withdraw
Escape hatch — sweep funds from your Otto X sub-wallet to any external address
$0.05
GET
/sub-wallet
Resolve (or auto-provision) your Otto X sub-wallet — bound to the verified x402 payer
$0.01
GET
/idle-capital
Detect undeployed tokens that could earn yield
$0.001
GET
/yield-recommendations
Personalized yield vault recommendations
$0.001
POST
/yield-watch
Register or update a yield-watch subscription. mode=auto: signed EIP-712 30-day delegation authorizing Otto to auto-rebalance between Aave V3 and Compound V3 (Morpho ships v1.1). mode=notify: free observation alerts only.
$0.001
DELETE
/yield-watch
Revoke an active yield-watch subscription — requires a signed YieldWatchRevocation typed-data note (different primaryType from the registration delegation)
$0.001
GET
/yield-watch
Read the caller's current yield-watch subscription state (mode, scope, policy knobs, move counter, next nonce)
Importance-ranked crypto headlines with per-article source links and publish times, plus a sentiment-scored market brief. Regenerated hourly; meta carries the snapshot's age and a fresh/stale verdict.
$0.001
GET
/token-alpha?symbol=BTC
Premium token intelligence — news, Twitter sentiment, futures data
Is USDC/USDT/DAI holding its $1 peg, and is stablecoin supply growing or shrinking (risk-on vs risk-off)? Live peg deviation (bps), circulating supply + 1d/7d/30d flow, market dominance and chain spread for the top 30 USD stablecoins, plus downside depeg alerts for any coin trading >0.5% below peg. Sourced from DefiLlama (public). Served from a cached snapshot while fresh (≤1h) and regenerated on demand when a read finds it stale.
$0.001
GET
/protocol-revenue-leaders
Which protocols earn the most — and who is accelerating? Top 30 DeFi protocols by 24h fees, each with revenue, take-rate (the cut the protocol keeps vs fees users pay), 7d/30d trend and category, plus total DeFi fees & revenue. A fundamentals screen (fee/revenue economics), distinct from TVL. Sourced from DefiLlama (public). Served from a cached snapshot while fresh (DefiLlama fees are daily aggregates) and regenerated on demand when a read find…
$0.001
GET
/market-risk
Composite crypto market-stress digest: a 0-100 score (low/moderate/elevated/high) blended from global USD-stablecoin depeg health (DefiLlama) and Base on-chain DEX exit-liquidity, with a per-leg breakdown and an AI risk line. Both legs required for a score. Every read older than an hour regenerates the score inline. Fresh-or-refuse: if a current score can't be computed, the call refuses (uncharged) rather than return an older reading.
$0.002
GET
/news-recaps
A tight 4-6 sentence crypto market recap an agent can ingest whole: overall direction and why, the 2-3 developments that matter, and anything notable on the top-10 board — distilled hourly from the same live news engine behind Otto's top-ranked /crypto-news feed. The one-paragraph state-of-market; buy /crypto-news when you want the full report.
$0.003
GET
/fx-rates
Live + reference foreign-exchange (forex) rates, base USD. LIVE near-real-time mid quotes for the 12 most-traded currencies (EUR, GBP, JPY, CHF, CAD, AUD, NZD, CNY, HKD, SGD, SEK, KRW), refreshed every minute with an honest market-open/stale flag, PLUS the official ECB daily reference table for ~30 currencies. Derive any cross-rate or pair. Keyless, pay-per-call.
$0.001
GET
/pm-markets
Top Polymarket prediction markets right now: the 25 highest-volume open markets with live odds (outcome probabilities), best bid/ask, spread, last trade, 24h + total volume, liquidity, 1d/7d price change, end date and event link. Flat JSON, refreshed every 5 minutes.
$0.001
GET
/pm-crypto
Crypto prediction markets on Polymarket: the highest-volume open BTC, ETH and crypto markets with live odds (outcome probabilities), best bid/ask, spread, 24h + total volume, liquidity, price change and end date. 'Bitcoin above X', price targets, ETF and protocol events — what the market actually prices in, as flat JSON refreshed every 5 minutes.
$0.001
GET
/rh-season
Robinhood Chain memecoin intelligence: the rug-screened RH Chain (chainId 4663) movers. Hard liquidity + wash-volume gates filter $0-liquidity honeypots faking $1M volumes; every survivor carries rug-risk flags (thin liquidity, vol/liquidity anomaly, pool age, CoinGecko listing) plus trusted-KOL mentions with verbatim quotes and a synthesized RH sentiment read. What is pumping AND whether it is real. Served from a cached snapshot while fresh (≤1…
$0.001
GET
/tokenized-equities
The live registry of tokenized US equities & ETFs on Robinhood Chain (chainId 4663): symbol, canonical token address, decimals, listed-on-rail routability, and the EXECUTABLE buy price — what a $100 buy pays per token at the route's minimum output — published next to the catalog reference price and the deviation between them. Every served address is bound to a hand-verified identity pin. The on-chain settlement layer for tokenized-equity exposur…
$0.001
GET
/earnings-calendar?ticker=...
Earnings calendar + surprise history for a vendor-resolved equity or ETF: next report date and session (before-open / after-close) with EPS & revenue estimates, latest reported EPS versus estimate with surprise %, and a four-quarter history. Licensed Finnhub feed; monetary values keep vendor payload units. Event-window price drift is marked unavailable, never inferred. Pass ?ticker= (e.g. AAPL). Refreshed daily.
$0.003
GET
/analyst-ratings?ticker=...
Analyst consensus for a vendor-resolved equity: the latest buy/hold/sell distribution (strong buy · buy · hold · sell · strong sell counts, total, and a deterministic consensus label) plus up to six months of the same distribution so an agent can read the drift — is the street moving toward or away from the name. Vendor counts (Finnhub), label rule stated in the payload. No price targets and no per-analyst grade actions are served.
$0.003
GET
/equity-news?ticker=...
Company news for a vendor-resolved equity: licensed Finnhub headlines from the trailing 7 days with publish time, source and summary. Only articles that name the company are served — labelled primary (headline names it) or mentioned (only the summary does) — so a symbol-tagged story about another company never fills the list. No sentiment is fabricated. Pass ?ticker= (e.g. TSLA). Refreshed hourly.
$0.003
GET
/dividend-intel?ticker=...
Cash-dividend intelligence for a vendor-resolved equity from the licensed Tiingo end-of-day feed: TTM dividend/share and yield against the latest close, latest dividend, split-adjusted complete-year growth, the last eight payments, split events, and a cut-detection checklist with explicit coverage. Payout ratio, forward ex-dates and declaration/record/payment dates are not served (not in the Tiingo feed); non-payers return status no-cash-dividen…
$0.003
GET
/macro-regime
Daily US macro-regime snapshot from licensed Alpha Vantage series: 10-year Treasury yield, effective federal funds rate, 3-month rate changes, CPI index and YoY inflation, plus a mechanical rate-direction / inflation-direction label with disclosed thresholds. Scanner context, no query param. Refreshed daily.
$0.003
GET
/technical-signals?ticker=...
Daily technical snapshot for a vendor-resolved equity from licensed Tiingo adjusted closes: Wilder RSI-14 with state, 20-session momentum, SMA-20 / SMA-50, price distance from each average, above / below / mixed trend state, and the latest observed golden / death cross. Price and averages keep vendor payload units. Pass ?ticker= (e.g. MSFT). Refreshed daily.
$0.003
GET
/insider-trades?ticker=...
SEC Form 4 insider trades for any US-listed company: who bought and sold (officer / director / 10% owner), purchase vs sale counts and dollar values (SEC codes P/S), net purchase-sale balance, shares held after each transaction, and filing links. An hourly snapshot straight from the primary source — public-domain SEC EDGAR. Pass ?ticker= (e.g. AAPL). Refreshed hourly.
$0.003
GET
/institutional-holdings?manager=...
Latest 13F-HR holdings for any SEC-filing manager (hedge funds, asset managers): top 20 positions by value with issuer, CUSIP, value in whole USD, share / principal amount (SH/PRN), put/call flag and position count, amendments applied. Whale-tracking straight from the primary source — public-domain SEC EDGAR. Pass ?manager= a CIK or manager ticker (e.g. 1067983 for Berkshire, or BLK). Refreshed hourly.
$0.003
GET
/pm-search?query=...
Search Polymarket prediction markets by free text — elections, Fed rates, crypto prices, sports, geopolitics, AI. Returns the top matching open markets with live odds (outcome probabilities), best bid/ask, spread, volume, liquidity, end date and event link as flat JSON. Pass ?query= (e.g. "fed rate cut"). Live odds on a ~10-minute cadence.
$0.001
GET
/equity-smart-money?ticker=...
Smart-money bundle for any US-listed company in ONE call: SEC Form 4 insider activity (purchases vs sales, SEC codes P/S, net purchase-sale balance, who filed and their roles) PLUS trailing-twelve-month fundamentals — revenue + YoY, net income + YoY, diluted EPS — from XBRL filings. Insider conviction and the financials behind it, together. Public-domain SEC EDGAR. Pass ?ticker= (e.g. NVDA). Refreshed hourly.
$0.006
GET
/tweet-search?query=...
Search X / Twitter for any query and get the actual matching tweets — keyword, $CASHTAG, from:handle, @handle mentions, or boolean OR. Each tweet returns author, full text (long-form notes included), timestamp, likes and retweets. Most-recent-first for real-time monitoring. Structured JSON, pay-per-call. Pass ?query= (e.g. $BTC). Live X search, ~5-minute recency.
$0.005
GET
/generate-meme?prompt=...
AI image generation via fal.ai (gpt-image-2 default, nano-banana-pro alt)
$0.15
GET
/llm-research?prompt=...
AI research assistant with web search via Gemini 3.1 Flash-Lite
$0.10
GET
/tx-explainer?txHash=0x...
Decode & explain EVM transactions across 11 chains
$0.01
GET
/portfolio
Multi-chain token balances for your Otto X sub-wallet (or ?address=0x...)
$0.001
GET
/supported-tokens?chainId=8453&search=USDC
Search tokens by symbol on chain
$0.001
GET
/hyperliquid-account
Hyperliquid perpetual futures account info — defaults to your Otto X sub-wallet
$0.001
GET
/hyperliquid-market
Perpetual market data & funding rates
$0.001
GET
/hl-transaction-history
Hyperliquid trade history — defaults to your Otto X sub-wallet
Active yield positions for a wallet — Otto-allowlisted lending positions also get a rebalance recommendation (current APY vs. the highest-rated allowlisted protocol alternative + the action calls to switch) and a portfolio yield summary
$0.001
GET
/yield-farming-historical
Yield op history for a wallet — deposit/redeem timeline with exact Otto fees and a totals summary
$0.001
POST
/swap
Get swap quote + calldata on X Layer via OKX DEX (V1: not broadcast)
$0.01
GET
/market-alpha
X Layer token market intelligence — live pricing for curated tokens
$0.005
GET
/price?token=0x...
Single token USD price via OKX DEX quote
$0.002
GET
/all-tokens
Full list of all tokens supported on X Layer DEX
$0.002
GET
/approve?token=0x...&amount=N
ERC-20 approval calldata for DEX router (needed before swap)
$0.005
GET
/
This landing page (HTML) or JSON service discovery (Accept: application/json).
Free
GET
/health
Service health check.
Free
GET
/tokens
Curated X Layer token registry.
Free
GET
/llm.txt
AI-readable service catalog.
Free
GET
/llms.txt
Long-form AI-readable catalog.
Free
GET
/.well-known/x402
x402 discovery document (JSON).
Free
GET
/openapi.json
OpenAPI 3.1 description — the machine invocation contract (method, query params, body schema, price).
Free
GET
/otto.md
Otto Intelligence Plugin skill file.
Free
GET
/supported-protocols
DeFi allowlist — protocol × chain × token combinations Otto will execute against.
Free
GET
/sub-wallet/preview?address=0x...
Read-only lookup — is a sub-wallet already provisioned for this address? Never provisions; provisioning is triggered by your first paid /auto-* call.
Free
GET
/defi-positions?address=0x...
Read active DeFi positions for a sub-wallet.
Free
Quick start
Hit your first endpoint in 30 seconds.
Every example below is copy-paste runnable against the live service. The one-call /auto-swap flow is documented in full detail in the
docs.
# Look up your sub-wallet — read-only, never provisions
curl "https://xlayer.ottoai.services/sub-wallet/preview?address=0xYOUR_WALLET"
# Service discovery (x402scan-compatible)
curl "https://xlayer.ottoai.services/.well-known/x402"