
Otto MCP server
Which servers in the official MCP registry are Otto's own, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.
read 2026-10-20
- Registry nameapp.ottodata/ottoverified in the MCP registry
The registry name sits under ottodata.app. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.
- Stateanswerschecked 2026-10-20
- Tools39
- Server calls itselfotto-data
- Server version1.29.1
- Protocol version2025-06-18
On 2026-10-20 the server answered initialize and tools/list without a sign-in. First answer in 185 ms.
- Whether its tools do the product's job has not been judged yet.
Once connected
- For "Compare onchain tokenized stock prices with Nasdaq closes", the likely first call is hood_basis_snapshot.
- Parameters are untyped or undescribed in 31 of 39 tools: check arguments before calling.
Said by rules from the measurements above. The likely first call is a model's pick from the tool list; read its description before relying on it.
- INITE MCP score93 of 100answers 100 · definitions 87 · context 83
- Answered100% of days7 of 7 daily checks
- Median first answer204 ms
- Space in an agent's context≈ 5,578 tokensthe definitions of all its tools (39), which an agent carries on every turn
- Tool definitionsB · 87 of 100
- Typed results0 of 39 toolsdeclared outputSchema: results come typed, read once
- Parameters without a description: in 31 of 39
What an agent can do with it
- can do · Compare onchain tokenized stock prices with Nasdaq closes
- not sure · Monitor overnight gap risk on tokenized stocks
- not sure · Track Reddit sentiment for Robinhood Chain tokens
Each of the product's use cases, put to Jev against this server's tool list: can an agent do it with these tools?
Worth a look
None of the five warning signs in these definitions.
A program checks the server once a day: initialize and tools/list, no model. Tokens are the definitions' length at about four characters a token. The grade averages six checks of every tool's name, description, schema and annotations; it says how well the tools are described, not whether they work. The score weighs what was measured and nothing else: answering (30%), doing the product's job (25%), definitions (20%), context (10%) and use (15%). A part that was not measured is left out, and a hidden instruction caps the score at 40. The state of vendors' MCP servers: method and numbers →
hood_basis_snapshotCurrent basis (premium/discount) snapshot for all Robinhood Chain tokenized stocks. Per ticker: chainlink_px (on-chain price), ref_last (NASDAQ), basis_bps (+ = token trades at a premium), overnight_bps (move vs last close) and the…
hood_basis_historyMinute-level basis history for one ticker (newest first). Example tickers: NVDA, TSLA, SPY. limit max 5000.
hood_gaps_summaryOvernight and weekend premium/discount statistics for all tickers: average, min/max and latest value (bps). Tokens trade 24/5, so this measures the drift that builds up while NASDAQ is closed.
hood_gaps_liveLive view of the current off-hours session: which tickers trade at the largest premium/discount vs their last close. Returns 'regular' when the stock market is open.
hood_gap_sessionsSession-by-session gap history for one ticker (each overnight/weekend session is a separate row).
hood_feedsRegistry of all tokenized stock and crypto feeds tracked on Robinhood Chain (Chainlink proxy + token contract addresses).
reddit_alpha_signalsTicker alpha signals extracted from Reddit (novelty, mention velocity and cross-sub spread components). signal_type: ticker_alpha|crowded_trade| event_mispricing|squeeze_watch. tickers is comma-separated (NVDA,TSLA).
reddit_market_regimeCurrent market regime inferred from Reddit chatter (e.g. mag7_only_rally, risk_on_call_chase) + confidence + flags to watch.
hood_attentionReddit attention/alpha score joined with live basis for Hood tokenized stocks: which tokens have social interest AND an on-chain premium/discount at the same time. Fan-out (same post, many tickers) is deduplicated.
hood_poolsTracked Uniswap (Hood) pools: pool price per token, liquidity (USD) and deviation vs the Chainlink oracle price (dev_bps). Refreshed every 5 min.
oracle_deviationChainlink-vs-Uniswap pool price deviation (bps, sorted by absolute value). status: ok (<100), warning (100-500), alert (>500). Large deviations are normal in low-liquidity pools — check liquidity_usd.
stable_riskDeviation of USDG and other stablecoins from $1 parity (depeg risk, bps).
market_eventsMachine-readable news events (crypto + stocks). symbols is comma-separated (NVDA,BTC), event_type: listing|hack|regulation|earnings| etf|partnership|macro|liquidation|stablecoin|general. importance 0-100.
token_flowsLarge on-chain token transfers (whale flows): 32 stock tokens + USDG above the USD threshold. direction: mint|burn|transfer. Mints/burns show the tokenized stock supply changing (issuance/redemption).
flow_summaryWhale-flow summary per ticker: transfer count, total USD volume, mint/burn USD (supply change) and the largest transfer.
hood_stock_researchDaily deep-research report: score (0-100), rating (strong_buy|buy|hold| avoid) and 4 analysis columns per Hood tokenized stock: thesis, dated catalysts (off_hours-flagged, verified earnings dates), financials (PE ttm/fwd, growth, margins…
hood_off_hours_catalystsDated catalysts that can move token prices while NASDAQ is closed (nights/weekends) — flattened from all research cards, sorted by date. For agents watching overnight gap and weekend risk.
hood_earnings_riskEarnings risk for Hood tokenized stocks (weekly earnings radar): per ticker report_date/time, days_to_earnings, implied_move_pct (option-implied expected move), beat_probability (0-100), PEAD status + live basis join. Earnings released…
hood_sector_rotationSector rotation context for Hood tokenized stocks (API-only tracker refreshed every 3h): market regime (risk_on|risk_off|mixed), an 11-SPDR sector score/label/flow board and a per-ticker join — sector score (0-100), label…
service_statusTrust status of the Otto data layer: per-feed freshness (age_sec/stale), 24h tick coverage, NASDAQ reference availability and oracle-pause count. Call before making trading decisions — status: ok|degraded|down.
chain_statsRobinhood Chain deployment statistics: daily deploy/token counts, top deployers, total contract/verified counts (Ottoscan analytics).
chain_deploymentsNew contract deployments on Robinhood Chain (Ottoscan; full history since genesis). tokens_only=True returns only new token contracts.
gap_trade_signalsDeterministic signals for the gap-trader strategy: per Hood ticker the overnight gap it currently carries (bps), a signal (long_at_open | avoid_or_reduce | none), 14-day gap statistics, the hit rate of pre-open gap direction vs open…
perp_fundingHourly funding rates on tokenized-stock perps (Arcus + Lighter). Without params: latest value per venue+ticker pair (funding_apr_pct = annualized %). With ticker: history. Tokens trade 24/7 while the stock market does not…
perp_spot_basisPerp mark price vs Hood on-chain spot (Chainlink per-share + pool), deviation in bps per ticker. A large |perp_vs_chainlink_bps| means the perp and spot price the same stock differently — a cross-venue opportunity or a stale-oracle…
funding_carry_signalsDeterministic funding-carry candidates joining perp funding (Arcus/Lighter) with perp-vs-spot basis. Per ticker: funding rate + annualized funding_apr_pct, perp-vs-Chainlink gap (bps) and a label — carry_long_spot_short_perp (hold Hood…
narrative_trade_signalsDeterministic candidates for the narrative-trader strategy: per Hood ticker the highest-alpha Reddit signal (alpha_score, evidence, themes), a signal bias (long_candidate = rising attention | avoid_or_fade = crowded trade | context =…
hood_quoteMinimal fast quote for one Hood ticker: Chainlink price (token + per-share), NASDAQ references (ref_last, ref_prev_close), basis/overnight bps, the most liquid pool's price/liquidity/deviation and oracle_paused/stale flags. Use for sizing…
hood_ticker_briefOne-call brief for a single Hood ticker: live quote (price, basis, pool, risk flags), research card (rating/score/thesis/catalysts), earnings risk, sector rotation context, best Reddit attention signal, 24h whale-flow summary and recent…
agent_position_bookServer-side derived open position book for a trading agent: every order_filled event without a later matching position_closed on the same ticker counts as open, joined with the live Chainlink price for unrealized P&L (bps and USD)…
agent_performanceRealized trading performance for an agent, derived from position_closed events: trade count, win rate, total/average P&L (bps), total P&L (USD), average holding hours, per-ticker breakdown and the last 20 closed trades. agent: gap-trader…
report_agent_statusStatus report from a trading agent — the live panel on ottodata.app/agents renders this stream. kind: run_started | signals | order_proposed | order_approved | order_filled | order_skipped | position_closed | run_summary | error. agent…
execute_onchain_swapExecute a REAL on-chain swap on Robinhood Chain via the Rialto router, signed by Otto's server-side trading wallet. side=buy spends `usd_amount` USDG to buy the ticker's Hood token; side=sell sells `qty` tokens back to USDG. The server…
competition_paper_tradePlace a PAPER fill in Otto's trading competition on behalf of the key's owner. No real funds move — the fill is priced server-side at the latest Chainlink price (callers can never supply a price). api_key: the personal otto_pk_ key issued…
competition_my_portfolioThe competition paper portfolio behind an otto_pk_ key: cash, equity, return %, realized/unrealized P&L, open positions with live prices, recent trades (each tagged with its source: your MCP agent or Otto's hosted gap/narrative engine)…
competition_leaderboardPublic leaderboard of Otto's paper trading competition: every participant ranked by return % on the shared $10,000 starting budget, with equity, P&L, open position count, trade count and last activity. No key required. Fills are…
partner_swap_quoteGet an UNSIGNED Rialto swap quote for an approved partner. YOU sign and broadcast the returned transaction yourself, with your own wallet's private key, on your own infrastructure — Otto never sees or holds your key and never submits…
partner_report_fillReport a fill you already signed and broadcast yourself (via partner_swap_quote) so it appears in Otto's records. Otto does NOT verify the transaction on-chain in this version — it trusts the partner it already approved. side: buy | sell…
partner_my_tradesRecent fills you've reported with partner_report_fill, most recent first.
How to connect
Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:
{
"mcpServers": {
"otto": {
"type": "http",
"url": "https://api.ottodata.app/mcp"
}
}
}Add it
Claude Code, in a terminal
claude mcp add --transport http ottodata https://api.ottodata.app/mcpclaude.ai, ChatGPT and other clients: add https://api.ottodata.app/mcp as a custom connector in the settings.
Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.
Cookies
Before we count this visit
Analytics and ad measurement tell us which pages and which of our ads do their job: Google Analytics and Google Ads, the Meta pixel, Yandex Metrica, and one first-party id of our own. Nothing is stored until you answer, and declining changes nothing about the site.