Otto Data — Robinhood Chain
REMOTE · API.OTTODATA.APP · SCANNED SEP 23
Live Robinhood Chain tokenized-stock data: basis vs NASDAQ, gaps, pools, whale flows.
Available components
Recent critical change
Authorization (3 Sept 2026). See the changelog before you install this server.
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (execute_onchain_swap). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability85
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4015 tokens (~102/item across 39 items; 39 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage67
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 40 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the Otto Data — Robinhood Chain MCP server?
Otto Data — Robinhood Chain is a hosted endpoint at https://api.ottodata.app/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · api.ottodata.app
claude mcp add --transport http app-ottodata-otto 'https://api.ottodata.app/mcp'
{
"mcpServers": {
"app-ottodata-otto": {
"url": "https://api.ottodata.app/mcp"
}
}
} {
"servers": {
"app-ottodata-otto": {
"type": "http",
"url": "https://api.ottodata.app/mcp"
}
}
} [mcp_servers.app-ottodata-otto] url = "https://api.ottodata.app/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"app-ottodata-otto": {
"type": "remote",
"url": "https://api.ottodata.app/mcp",
"enabled": true
}
}
} openclaw mcp add app-ottodata-otto --url 'https://api.ottodata.app/mcp' --transport streamable-http
mcp_servers:
app-ottodata-otto:
url: "https://api.ottodata.app/mcp" {
"McpServers": {
"app-ottodata-otto": {
"Transport": "http",
"Url": "https://api.ottodata.app/mcp"
}
}
} assistant mcp add app-ottodata-otto -t streamable-http -u 'https://api.ottodata.app/mcp'
{
"mcpServers": {
"app-ottodata-otto": {
"type": "http",
"url": "https://api.ottodata.app/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 14 Sept 26 +1
- Stability: 0.97 → pass security
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 10 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 7 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.
- 6 Sept 26 −4
- Stability: pass → 0.73 functional
- 3 Sept 26 +57
- Authorization: unverified → fail ▼ critical
- Injection markers: unverified → pass ▲ security
- Stability: unverified → pass ▲ security
- HSTS header: fail → pass ▲ security
- Transport: fail → pass ▲ security
- Endpoint reachability: not serving MCP → reachable ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- Schema quality: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Server version: 1.29.0 → 1.29.1 functional
- 2 Sept 26 −57
- Endpoint reachability: reachable → not serving MCP ▼ security
- Stability: pass → unverified ▼ security
- Authorization: fail → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Transport: pass → fail ▼ security
- HSTS header: pass → fail ▼ security
- Schema quality: 100 → unverified ▼ functional
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- 26 Aug 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 23 Sept 2026 · Probed https://api.ottodata.app/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=api.ottodata.app | CN=WE1,O=Google Trust Services,C=US | 13 Sept 2026 | 12 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | e867d2bb2564a3650eefb92bf4a6748c |
| SANs: api.ottodata.app | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of api.ottodata.app. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| app. | present | 23684 | 8 | Verified |
| ottodata.app. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | no-referrer |
| permissions-policy | camera=(), microphone=(), geolocation=() |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://api.ottodata.app/mcp | Verified | 200 | |
| http (plaintext) | http://api.ottodata.app/mcp | HTTPS enforced | 301 | https://api.ottodata.app/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
agent_performance ~118
Realized 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 | narrative-trader. mode: '' (all) | paper | live | onchain — filter trades by execution mode.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | string | – | – |
| days | integer | – | – |
| mode | string | – | – |
No output schema declared.
No examples provided.
agent_position_book ~119
Server-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). Replaces rebuilding the book from raw agent events. agent: gap-trader | narrative-trader. mode: '' (all) | paper | live | onchain — filter positions by execution mode.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | string | – | – |
| mode | string | – | – |
No output schema declared.
No examples provided.
chain_deployments ~61
New contract deployments on Robinhood Chain (Ottoscan; full history since genesis). tokens_only=True returns only new token contracts.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| tokens_only | boolean | – | – |
| verified_only | boolean | – | – |
No output schema declared.
No examples provided.
chain_stats ~43
Robinhood Chain deployment statistics: daily deploy/token counts, top deployers, total contract/verified counts (Ottoscan analytics).
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | – |
No output schema declared.
No examples provided.
competition_leaderboard ~90
Public 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 server-priced from Chainlink, so rankings cannot be gamed with self-reported prices.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
No output schema declared.
No examples provided.
competition_my_portfolio ~96
The 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) and the entry's strategy prefs. Check this before sizing a new competition_paper_trade.
| Name | Type | Req | Description |
|---|---|---|---|
| api_key | string | yes | – |
No output schema declared.
No examples provided.
competition_paper_trade ~215
Place 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 when the wallet joined at ottodata.app/competition. side: buy | sell. qty: token quantity (shares). Include a short `reason` — it shows up in the owner's trade history. Rules enforced server-side: $10,000 starting budget, long-only, max $2,000 notional per trade, max 10 open positions, max 40 trades/day. On a rule violation the response is {"error": "..."} — read it and adjust instead of retrying blindly.
| Name | Type | Req | Description |
|---|---|---|---|
| api_key | string | yes | – |
| qty | number | yes | – |
| reason | string | – | – |
| side | string | yes | – |
| ticker | string | yes | – |
No output schema declared.
No examples provided.
execute_onchain_swap ~272
Execute 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 enforces hard guardrails independently of the caller: USDG<->allowlisted-token pairs only, per-trade and daily USD caps, and a slippage cap. On success the matching order_filled/position_closed event (payload mode=onchain, with tx_hash) is written automatically — the position book, performance stats and trade chart update without a separate report_agent_status call. key: the operator's OTTO_AGENT_KEY. agent: gap-trader | narrative-trader. Returns tx_hash, fill qty/price/usd and pnl_bps (sells with a known entry).
| Name | Type | Req | Description |
|---|---|---|---|
| agent | string | – | – |
| key | string | yes | – |
| qty | number | – | – |
| reason | string | – | – |
| run_id | string | – | – |
| side | string | yes | – |
| slippage_bps | integer | – | – |
| ticker | string | yes | – |
| usd_amount | number | – | – |
No output schema declared.
No examples provided.
flow_summary ~43
Whale-flow summary per ticker: transfer count, total USD volume, mint/burn USD (supply change) and the largest transfer.
| Name | Type | Req | Description |
|---|---|---|---|
| hours | integer | – | – |
No output schema declared.
No examples provided.
funding_carry_signals ~143
Deterministic 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 spot, short the perp, collect positive funding), carry_short_spot_long_perp (inverse) or no_carry — plus the standard risk flags. min_abs_bps filters on |perp_vs_chainlink_bps|. Signals are NOT orders.
| Name | Type | Req | Description |
|---|---|---|---|
| min_abs_bps | number | – | – |
No output schema declared.
No examples provided.
gap_trade_signals ~165
Deterministic 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 direction (hit_rate_14d) and risk flags (oracle_paused, stale, low_liquidity, earnings_within_48h). Signals are NOT orders — sizing and approval belong to the user. The most informative window is pre-open 09:15-09:29 ET; signals are suppressed while the market is open (session=regular).
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | – |
| min_abs_bps | number | – | – |
No output schema declared.
No examples provided.
hood_attention ~67
Reddit 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.
| Name | Type | Req | Description |
|---|---|---|---|
| min_alpha | number | – | – |
No output schema declared.
No examples provided.
hood_basis_history ~56
Minute-level basis history for one ticker (newest first). Example tickers: NVDA, TSLA, SPY. limit max 5000.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| ticker | string | yes | – |
No output schema declared.
No examples provided.
hood_basis_snapshot ~75
Current 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 oracle_paused flag.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
hood_earnings_risk ~124
Earnings 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 while NASDAQ is closed make the token gap — watch small days_to_earnings for off-hours risk management. tickers: CSV filter (empty = full Hood universe).
| Name | Type | Req | Description |
|---|---|---|---|
| days_ahead | integer | – | – |
| tickers | string | – | – |
No output schema declared.
No examples provided.
hood_feeds ~34
Registry of all tokenized stock and crypto feeds tracked on Robinhood Chain (Chainlink proxy + token contract addresses).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
hood_gap_sessions ~44
Session-by-session gap history for one ticker (each overnight/weekend session is a separate row).
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | – |
| ticker | string | yes | – |
No output schema declared.
No examples provided.
hood_gaps_live ~49
Live 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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
hood_gaps_summary ~63
Overnight 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.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | – |
No output schema declared.
No examples provided.
hood_off_hours_catalysts ~54
Dated 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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
hood_pools ~51
Tracked Uniswap (Hood) pools: pool price per token, liquidity (USD) and deviation vs the Chainlink oracle price (dev_bps). Refreshed every 5 min.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
hood_quote ~93
Minimal 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 and fill pricing instead of pulling the full 32-ticker snapshot.
| Name | Type | Req | Description |
|---|---|---|---|
| ticker | string | yes | – |
No output schema declared.
No examples provided.
hood_sector_rotation ~142
Sector 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 (inflow|interest|neutral|outflow_leaning|outflow), flow trend, theme matches + live basis. Answers where money is rotating and whether your token's sector is in inflow or outflow. tickers: CSV filter (empty = full Hood universe).
| Name | Type | Req | Description |
|---|---|---|---|
| tickers | string | – | – |
No output schema declared.
No examples provided.
hood_stock_research ~182
Daily 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, valuation_label: expensive|fair|discount|n_a), competitors (peers + positioning) and news_summary ([+]/[=]/[-] tagged). The api_data field carries exact API numbers (price, market cap, 1d/7d/30d, 52w, target mean/hi/lo, analyst rec counts) — use it when precision matters. With ticker: one card + live basis join; empty: full report.
| Name | Type | Req | Description |
|---|---|---|---|
| ticker | string | – | – |
No output schema declared.
No examples provided.
hood_ticker_brief ~110
One-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 tagged news. Replaces 6-7 separate tool calls when an agent researches one ticker. Missing upstream sources fail-soft: the field is null.
| Name | Type | Req | Description |
|---|---|---|---|
| ticker | string | yes | – |
No output schema declared.
No examples provided.
market_events ~97
Machine-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.
| Name | Type | Req | Description |
|---|---|---|---|
| event_type | string | – | – |
| limit | integer | – | – |
| min_importance | integer | – | – |
| symbols | string | – | – |
No output schema declared.
No examples provided.
narrative_trade_signals ~125
Deterministic 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 = regime info), live Chainlink price, basis and risk flags. The `reason` field is the Reddit summary — carry it into status reports and the chart as the buy/sell rationale. Signals are NOT orders.
| Name | Type | Req | Description |
|---|---|---|---|
| hours | integer | – | – |
| min_alpha | number | – | – |
No output schema declared.
No examples provided.
oracle_deviation ~72
Chainlink-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.
| Name | Type | Req | Description |
|---|---|---|---|
| min_abs_bps | number | – | – |
No output schema declared.
No examples provided.
partner_my_trades ~40
Recent fills you've reported with partner_report_fill, most recent first.
| Name | Type | Req | Description |
|---|---|---|---|
| api_key | string | yes | – |
| limit | integer | – | – |
No output schema declared.
No examples provided.
partner_report_fill ~135
Report 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. tx_hash: the transaction hash from your own broadcast.
| Name | Type | Req | Description |
|---|---|---|---|
| api_key | string | yes | – |
| price | number | – | – |
| qty | number | – | – |
| reason | string | – | – |
| side | string | yes | – |
| ticker | string | yes | – |
| tx_hash | string | yes | – |
| usd | number | – | – |
No output schema declared.
No examples provided.
partner_swap_quote ~239
Get 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 anything on your behalf. api_key: the otto_pn_ key Otto's admin issued you directly. sell_token/buy_token: Hood token contract addresses (0x...). sell_amount: human units of sell_token (e.g. "25" USDG, not wei). taker: the wallet address that will actually sign and hold the position. Returns the raw Rialto quote including tx.to, tx.data, tx.value and min_buy_amount — everything needed to build and sign the transaction. After broadcasting, call partner_report_fill so the trade shows up in Otto's records.
| Name | Type | Req | Description |
|---|---|---|---|
| api_key | string | yes | – |
| buy_token | string | yes | – |
| sell_amount | string | yes | – |
| sell_token | string | yes | – |
| slippage_bps | integer | – | – |
| taker | string | yes | – |
No output schema declared.
No examples provided.
perp_funding ~104
Hourly 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 — weekend/overnight funding is the price of that mismatch.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| ticker | string | – | – |
| venue | string | – | – |
No output schema declared.
No examples provided.
perp_spot_basis ~93
Perp 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 signal. Fields are null for markets without a Hood spot.
| Name | Type | Req | Description |
|---|---|---|---|
| min_abs_bps | number | – | – |
No output schema declared.
No examples provided.
reddit_alpha_signals ~95
Ticker 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).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| min_alpha | number | – | – |
| signal_type | string | – | – |
| tickers | string | – | – |
No output schema declared.
No examples provided.
reddit_market_regime ~41
Current market regime inferred from Reddit chatter (e.g. mag7_only_rally, risk_on_call_chase) + confidence + flags to watch.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
report_agent_status ~178
Status 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: gap-trader | narrative-trader. key: the operator's OTTO_AGENT_KEY value (wrong keys are rejected). Call at every runbook step; keep message short and human-readable (e.g. 'BUY 3 NVDA @ 184.20 limit — gap +82bps').
| Name | Type | Req | Description |
|---|---|---|---|
| agent | string | – | – |
| key | string | yes | – |
| kind | string | yes | – |
| message | string | yes | – |
| payload | – | – | – |
| run_id | string | – | – |
| ticker | string | – | – |
No output schema declared.
No examples provided.
service_status ~58
Trust 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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
stable_risk ~30
Deviation of USDG and other stablecoins from $1 parity (depeg risk, bps).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
token_flows ~98
Large 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).
| Name | Type | Req | Description |
|---|---|---|---|
| direction | string | – | – |
| hours | integer | – | – |
| limit | integer | – | – |
| min_usd | number | – | – |
| ticker | string | – | – |
No output schema declared.
No examples provided.
What is the Otto Data — Robinhood Chain MCP server?
Otto Data — Robinhood Chain is an MCP server listed in the public MCP registry as app.ottodata/otto. Live Robinhood Chain tokenized-stock data: basis vs NASDAQ, gaps, pools, whale flows. This page covers its hosted endpoint (https://api.ottodata.app/mcp).
Is the Otto Data — Robinhood Chain MCP server safe to use?
Otto Data — Robinhood Chain scores 80 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Otto Data — Robinhood Chain MCP server expose?
Otto Data — Robinhood Chain exposes 39 tools: hood_basis_snapshot, hood_basis_history, hood_gaps_summary, hood_gaps_live, hood_gap_sessions, and 34 more. Their descriptions and schemas cost roughly 3,914 tokens of context every time the server is loaded.
Does the Otto Data — Robinhood Chain MCP server require authentication?
No. We connected to Otto Data — Robinhood Chain without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Otto Data — Robinhood Chain MCP server still maintained?
Otto Data — Robinhood Chain is still listed as active in the MCP registry. We last reached this channel on 23 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.