Otto

Docs

Everything on this site is served by the open Otto Data API. Three ways in: REST, WebSocket, MCP. Free during beta, no API key. Full guides, concepts and reference live in the documentation.

1. REST

Base URL https://api.ottodata.app. Full interactive OpenAPI reference at /docs.

curl https://api.ottodata.app/v1/basis/snapshot
GET /v1/basis/snapshotLatest basis tick for all tokenized stocks
GET /v1/basis/{ticker}Minute-level basis history for one ticker
GET /v1/quote/{ticker}Minimal one-ticker quote: price, refs, bps, best pool, risk flags
GET /v1/brief/{ticker}One-call ticker brief: quote + research + earnings + sector + Reddit + flows + news
GET /v1/gaps/summaryOvernight + weekend gap statistics
GET /v1/gaps/liveLive off-hours session view
GET /v1/gaps/{ticker}Session-by-session gap history for one ticker
GET /v1/poolsTracked Uniswap pools: price, depth, deviation
GET /v1/pools/{ticker}Pool price history for one ticker
GET /v1/risk/oracle-deviationChainlink vs pool deviation, ranked
GET /v1/risk/stablesStablecoin depeg monitor
GET /v1/flowsWhale transfers: stock tokens + USDG
GET /v1/flows/summaryPer-ticker whale flow aggregates
GET /v1/eventsMachine-readable news events
GET /v1/social/signalsReddit alpha signals
GET /v1/social/regimeReddit-derived market regime
GET /v1/social/hood-attentionReddit attention x basis join
GET /v1/perps/fundingPerp funding rates (Arcus + Lighter)
GET /v1/perps/basisPerp mark vs Hood onchain spot, per ticker
GET /v1/strategy/gap-signalsGap-trader signals: overnight gap, hit rate, risk flags
GET /v1/strategy/narrative-signalsNarrative-trader candidates: Reddit alpha x basis
GET /v1/strategy/funding-carryFunding-carry candidates: annualized funding x perp-vs-spot gap
GET /v1/agent/bookServer-derived open paper positions per agent, live unrealized P&L
GET /v1/agent/performanceRealized paper-trading stats: win rate, P&L, per-ticker
GET /v1/research/hood-stocksDaily deep-research cards (32 tickers)
GET /v1/research/hood-stocks/{ticker}One research card + live basis join
GET /v1/research/off-hours-catalystsDated catalysts landing while NASDAQ is closed
GET /v1/research/earnings-riskEarnings risk per Hood ticker: implied move, beat probability, PEAD
GET /v1/research/sector-rotationMarket regime + sector rotation context per Hood ticker
GET /v1/scan/deploymentsContract deployments since genesis
GET /v1/scan/statsDeploy analytics: daily counts, top deployers
GET /v1/swap/tokensRialto swap: supported token list
GET /v1/swap/quoteRialto swap: firm quote (proxied)
GET /v1/feedsFeed + token contract registry
GET /v1/statusTrust check: per-feed freshness, 24h coverage, pauses

2. WebSocket

Basis snapshots are pushed as new ticks land (roughly once a minute).

wscat -c "wss://api.ottodata.app/v1/stream/basis?tickers=NVDA,TSLA"

3. MCP (for agents)

Hosted streamable-HTTP MCP server with 39 tools over the same data. Point any MCP client at:

https://api.ottodata.app/mcp
claude mcp add otto --transport http https://api.ottodata.app/mcp
Tools, all 39, live
ToolDescription
hood_basis_snapshotLive basis (premium/discount) for every tokenized stock vs NASDAQ
hood_basis_historyMinute-level basis history per ticker (up to 5000 ticks)
hood_gaps_summaryOvernight + weekend gap statistics per ticker
hood_gaps_liveCurrent off-hours session: which tokens moved most vs last close
hood_gap_sessionsSession-by-session gap history for one ticker
hood_feedsRegistry of tracked Chainlink feeds + token contracts (32 equities, 20 crypto)
hood_poolsTracked Uniswap pools: pool price, depth, deviation vs oracle
oracle_deviationChainlink vs pool price deviation ranked by magnitude, with alert status
stable_riskUSDG and stablecoin depeg monitor (bps from $1)
market_eventsMachine-readable news events, importance-scored and symbol-tagged
chain_deploymentsNew contract deployments on Robinhood Chain (full history since genesis)
chain_statsDeploy analytics: daily counts, top deployers, verified totals
reddit_alpha_signalsReddit-extracted ticker alpha signals (novelty, velocity, spread)
reddit_market_regimeCurrent market regime extracted from Reddit chatter
hood_attentionReddit attention x live on-chain basis, joined per Hood ticker
token_flowsWhale transfers for stock tokens + USDG; mint/burn = supply change
flow_summaryPer-ticker whale flow summary: volume, mint/burn USD, largest transfer
hood_stock_researchDaily research card per ticker: score, thesis, financials, competitors, catalysts
hood_off_hours_catalystsDated events that can move tokens while NASDAQ is closed
hood_earnings_riskEarnings risk per Hood ticker: implied move, beat probability, PEAD + live basis
hood_sector_rotationMarket regime + 11-sector board joined to each Hood ticker (refreshed every 3h)
gap_trade_signalsGap-trader signals: carried overnight gap, hit rate, risk flags, signals, not orders
narrative_trade_signalsNarrative-trader candidates: Reddit alpha x live basis, with the narrative text as trade reason
perp_fundingHourly funding on tokenized-stock perps (Arcus + Lighter), latest or per-ticker history
perp_spot_basisPerp mark vs Hood onchain spot (per-share Chainlink + pool), cross-venue basis in bps
funding_carry_signalsFunding-carry candidates: annualized funding x perp-vs-spot gap, with a deterministic carry label
hood_quoteMinimal one-ticker quote: Chainlink price, references, basis/overnight bps, best pool, risk flags
hood_ticker_briefOne-call ticker brief: quote + research + earnings risk + sector + Reddit + flows + news
agent_position_bookServer-derived open paper positions per agent, with live unrealized P&L
agent_performanceRealized paper-trading stats per agent: win rate, P&L, holding time, per-ticker breakdown
report_agent_statusAgent status reporting (key-gated), powers the live agents panel
execute_onchain_swapReal Rialto swap on Robinhood Chain via Otto's trading wallet (key-gated, hard USD/slippage caps)
competition_paper_tradePaper fill in the trading competition (otto_pk_ key; server-priced at Chainlink)
competition_my_portfolioCompetition paper book behind an otto_pk_ key: equity, positions, trade history
competition_leaderboardPublic competition leaderboard ranked by return % on the $10,000 paper budget
partner_swap_quoteUnsigned Rialto quote for approved partners; they sign and broadcast it themselves
partner_report_fillLog a partner's own broadcast fill for transparency (otto_pn_ key, key-gated)
partner_my_tradesA partner's own reported fill history (otto_pn_ key)
service_statusTrust check: per-feed freshness, 24h tick coverage, oracle-pause count
USERIs the NVDA overnight premium tradeable right now?
→ hood_basis_snapshot()
→ hood_pools()
AGENTNVDA-T trades at a premium vs its last NASDAQ close, and the tracked Uniswap pool shows the current depth and oracle deviation, enough to judge whether the gap is worth trading.

Free during beta

No account, no API key. Pay-per-call via x402 and priority lanes are on the roadmap, the beta is fully open.

$0 / callduring beta

Python example

import requests

snap = requests.get("https://api.ottodata.app/v1/basis/snapshot").json()
for t in snap["ticks"][:5]:
    print(t["ticker"], t["chainlink_px"], t["overnight_bps"], "bps")

More information

For full guides, concepts, and reference, visit the Otto documentation.