Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,558Letters: 14Defects: 1,336counted just now
teppi

Server definition

Hash
sha256:734965cb072b4d7534d8691e450cbc95340ae7f8bb6c48578f28704fde0a93c7
What it is
What a remote MCP server returned when asked what it offers: 39 tools

The blob, as servednamed by its sha256

{ "instructions": "Live market data for Robinhood Chain (Hood) tokenized stocks: Chainlink-vs-NASDAQ basis, overnight/weekend gaps, Uniswap pool prices, oracle deviation, whale flows, Reddit alpha signals, news events and contract deployments. Tools are read-only queries over the public Otto Data REST API, except three key-gated agent tools (report_agent_status, execute_onchain_swap, competition_paper_trade). Not financial advice; not affiliated with Robinhood Markets, Inc.", "tools": [ { "description": "Realized trading performance for an agent, derived from\n position_closed events: trade count, win rate, total/average P&L (bps),\n total P&L (USD), average holding hours, per-ticker breakdown and the last\n 20 closed trades. agent: gap-trader | narrative-trader.\n mode: '' (all) | paper | live | onchain — filter trades by execution mode.", "inputSchema": { "properties": { "agent": { "default": "gap-trader", "title": "Agent", "type": "string" }, "days": { "default": 30, "title": "Days", "type": "integer" }, "mode": { "default": "", "title": "Mode", "type": "string" } }, "title": "agent_performanceArguments", "type": "object" }, "name": "agent_performance", "outputSchema": null }, { "description": "Server-side derived open position book for a trading agent:\n every order_filled event without a later matching position_closed on the\n same ticker counts as open, joined with the live Chainlink price for\n unrealized P&L (bps and USD). Replaces rebuilding the book from raw\n agent events. agent: gap-trader | narrative-trader.\n mode: '' (all) | paper | live | onchain — filter positions by execution mode.", "inputSchema": { "properties": { "agent": { "default": "gap-trader", "title": "Agent", "type": "string" }, "mode": { "default": "", "title": "Mode", "type": "string" } }, "title": "agent_position_bookArguments", "type": "object" }, "name": "agent_position_book", "outputSchema": null }, { "description": "New contract deployments on Robinhood Chain (Ottoscan; full history\n since genesis). tokens_only=True returns only new token contracts.", "inputSchema": { "properties": { "limit": { "default": 50, "title": "Limit", "type": "integer" }, "tokens_only": { "default": false, "title": "Tokens Only", "type": "boolean" }, "verified_only": { "default": false, "title": "Verified Only", "type": "boolean" } }, "title": "chain_deploymentsArguments", "type": "object" }, "name": "chain_deployments", "outputSchema": null }, { "description": "Robinhood Chain deployment statistics: daily deploy/token counts, top\n deployers, total contract/verified counts (Ottoscan analytics).", "inputSchema": { "properties": { "days": { "default": 30, "title": "Days", "type": "integer" } }, "title": "chain_statsArguments", "type": "object" }, "name": "chain_stats", "outputSchema": null }, { "description": "Public leaderboard of Otto's paper trading competition: every\n participant ranked by return % on the shared $10,000 starting budget,\n with equity, P&L, open position count, trade count and last activity.\n No key required. Fills are server-priced from Chainlink, so rankings\n cannot be gamed with self-reported prices.", "inputSchema": { "properties": { "limit": { "default": 25, "title": "Limit", "type": "integer" } }, "title": "competition_leaderboardArguments", "type": "object" }, "name": "competition_leaderboard", "outputSchema": null }, { "description": "The competition paper portfolio behind an otto_pk_ key: cash, equity,\n return %, realized/unrealized P&L, open positions with live prices,\n recent trades (each tagged with its source: your MCP agent or Otto's\n hosted gap/narrative engine) and the entry's strategy prefs. Check this\n before sizing a new competition_paper_trade.", "inputSchema": { "properties": { "api_key": { "title": "Api Key", "type": "string" } }, "required": [ "api_key" ], "title": "competition_my_portfolioArguments", "type": "object" }, "name": "competition_my_portfolio", "outputSchema": null }, { "description": "Place a PAPER fill in Otto's trading competition on behalf of the\n key's owner. No real funds move — the fill is priced server-side at the\n latest Chainlink price (callers can never supply a price). api_key: the\n personal otto_pk_ key issued when the wallet joined at\n ottodata.app/competition. side: buy | sell. qty: token quantity (shares).\n Include a short `reason` — it shows up in the owner's trade history.\n Rules enforced server-side: $10,000 starting budget, long-only, max\n $2,000 notional per trade, max 10 open positions, max 40 trades/day.\n On a rule violation the response is {\"error\": \"...\"} — read it and\n adjust instead of retrying blindly.", "inputSchema": { "properties": { "api_key": { "title": "Api Key", "type": "string" }, "qty": { "title": "Qty", "type": "number" }, "reason": { "default": "", "title": "Reason", "type": "string" }, "side": { "title": "Side", "type": "string" }, "ticker": { "title": "Ticker", "type": "string" } }, "required": [ "api_key", "ticker", "side", "qty" ], "title": "competition_paper_tradeArguments", "type": "object" }, "name": "competition_paper_trade", "outputSchema": null }, { "description": "Execute a REAL on-chain swap on Robinhood Chain via the Rialto router,\n signed by Otto's server-side trading wallet. side=buy spends `usd_amount`\n USDG to buy the ticker's Hood token; side=sell sells `qty` tokens back to\n USDG. The server enforces hard guardrails independently of the caller:\n USDG<->allowlisted-token pairs only, per-trade and daily USD caps, and a\n slippage cap. On success the matching order_filled/position_closed event\n (payload mode=onchain, with tx_hash) is written automatically — the\n position book, performance stats and trade chart update without a\n separate report_agent_status call. key: the operator's OTTO_AGENT_KEY.\n agent: gap-trader | narrative-trader. Returns tx_hash, fill qty/price/usd\n and pnl_bps (sells with a known entry).", "inputSchema": { "properties": { "agent": { "default": "gap-trader", "title": "Agent", "type": "string" }, "key": { "title": "Key", "type": "string" }, "qty": { "default": 0, "title": "Qty", "type": "number" }, "reason": { "default": "", "title": "Reason", "type": "string" }, "run_id": { "default": "", "title": "Run Id", "type": "string" }, "side": { "title": "Side", "type": "string" }, "slippage_bps": { "default": 50, "title": "Slippage Bps", "type": "integer" }, "ticker": { "title": "Ticker", "type": "string" }, "usd_amount": { "default": 0, "title": "Usd Amount", "type": "number" } }, "required": [ "key", "ticker", "side" ], "title": "execute_onchain_swapArguments", "type": "object" }, "name": "execute_onchain_swap", "outputSchema": null }, { "description": "Whale-flow summary per ticker: transfer count, total USD volume,\n mint/burn USD (supply change) and the largest transfer.", "inputSchema": { "properties": { "hours": { "default": 24, "title": "Hours", "type": "integer" } }, "title": "flow_summaryArguments", "type": "object" }, "name": "flow_summary", "outputSchema": null }, { "description": "Deterministic funding-carry candidates joining perp funding\n (Arcus/Lighter) with perp-vs-spot basis. Per ticker: funding rate +\n annualized funding_apr_pct, perp-vs-Chainlink gap (bps) and a label —\n carry_long_spot_short_perp (hold Hood spot, short the perp, collect\n positive funding), carry_short_spot_long_perp (inverse) or no_carry —\n plus the standard risk flags. min_abs_bps filters on\n |perp_vs_chainlink_bps|. Signals are NOT orders.", "inputSchema": { "properties": { "min_abs_bps": { "default": 0, "title": "Min Abs Bps", "type": "number" } }, "title": "funding_carry_signalsArguments", "type": "object" }, "name": "funding_carry_signals", "outputSchema": null }, { "description": "Deterministic signals for the gap-trader strategy: per Hood ticker the\n overnight gap it currently carries (bps), a signal (long_at_open |\n avoid_or_reduce | none), 14-day gap statistics, the hit rate of pre-open\n gap direction vs open direction (hit_rate_14d) and risk flags\n (oracle_paused, stale, low_liquidity, earnings_within_48h). Signals are\n NOT orders — sizing and approval belong to the user. The most informative\n window is pre-open 09:15-09:29 ET; signals are suppressed while the market\n is open (session=regular).", "inputSchema": { "properties": { "days": { "default": 14, "title": "Days", "type": "integer" }, "min_abs_bps": { "default": 50, "title": "Min Abs Bps", "type": "number" } }, "title": "gap_trade_signalsArguments", "type": "object" }, "name": "gap_trade_signals", "outputSchema": null }, { "description": "Reddit attention/alpha score joined with live basis for Hood tokenized\n stocks: which tokens have social interest AND an on-chain premium/discount\n at the same time. Fan-out (same post, many tickers) is deduplicated.", "inputSchema": { "properties": { "min_alpha": { "default": 0, "title": "Min Alpha", "type": "number" } }, "title": "hood_attentionArguments", "type": "object" }, "name": "hood_attention", "outputSchema": null }, { "description": "Minute-level basis history for one ticker (newest first). Example\n tickers: NVDA, TSLA, SPY. limit max 5000.", "inputSchema": { "properties": { "limit": { "default": 200, "title": "Limit", "type": "integer" }, "ticker": { "title": "Ticker", "type": "string" } }, "required": [ "ticker" ], "title": "hood_basis_historyArguments", "type": "object" }, "name": "hood_basis_history", "outputSchema": null }, { "description": "Current basis (premium/discount) snapshot for all Robinhood Chain\n tokenized stocks. Per ticker: chainlink_px (on-chain price), ref_last\n (NASDAQ), basis_bps (+ = token trades at a premium), overnight_bps (move\n vs last close) and the oracle_paused flag.", "inputSchema": { "properties": {}, "title": "hood_basis_snapshotArguments", "type": "object" }, "name": "hood_basis_snapshot", "outputSchema": null }, { "description": "Earnings risk for Hood tokenized stocks (weekly earnings radar): per\n ticker report_date/time, days_to_earnings, implied_move_pct (option-implied\n expected move), beat_probability (0-100), PEAD status + live basis join.\n Earnings released while NASDAQ is closed make the token gap — watch small\n days_to_earnings for off-hours risk management. tickers: CSV filter\n (empty = full Hood universe).", "inputSchema": { "properties": { "days_ahead": { "default": 30, "title": "Days Ahead", "type": "integer" }, "tickers": { "default": "", "title": "Tickers", "type": "string" } }, "title": "hood_earnings_riskArguments", "type": "object" }, "name": "hood_earnings_risk", "outputSchema": null }, { "description": "Registry of all tokenized stock and crypto feeds tracked on Robinhood\n Chain (Chainlink proxy + token contract addresses).", "inputSchema": { "properties": {}, "title": "hood_feedsArguments", "type": "object" }, "name": "hood_feeds", "outputSchema": null }, { "description": "Session-by-session gap history for one ticker (each overnight/weekend\n session is a separate row).", "inputSchema": { "properties": { "days": { "default": 14, "title": "Days", "type": "integer" }, "ticker": { "title": "Ticker", "type": "string" } }, "required": [ "ticker" ], "title": "hood_gap_sessionsArguments", "type": "object" }, "name": "hood_gap_sessions", "outputSchema": null }, { "description": "Live view of the current off-hours session: which tickers trade at the\n largest premium/discount vs their last close. Returns 'regular' when the\n stock market is open.", "inputSchema": { "properties": {}, "title": "hood_gaps_liveArguments", "type": "object" }, "name": "hood_gaps_live", "outputSchema": null }, { "description": "Overnight and weekend premium/discount statistics for all tickers:\n average, min/max and latest value (bps). Tokens trade 24/5, so this\n measures the drift that builds up while NASDAQ is closed.", "inputSchema": { "properties": { "days": { "default": 14, "title": "Days", "type": "integer" } }, "title": "hood_gaps_summaryArguments", "type": "object" }, "name": "hood_gaps_summary", "outputSchema": null }, { "description": "Dated catalysts that can move token prices while NASDAQ is closed\n (nights/weekends) — flattened from all research cards, sorted by date.\n For agents watching overnight gap and weekend risk.", "inputSchema": { "properties": {}, "title": "hood_off_hours_catalystsArguments", "type": "object" }, "name": "hood_off_hours_catalysts", "outputSchema": null }, { "description": "Tracked Uniswap (Hood) pools: pool price per token, liquidity (USD) and\n deviation vs the Chainlink oracle price (dev_bps). Refreshed every 5 min.", "inputSchema": { "properties": {}, "title": "hood_poolsArguments", "type": "object" }, "name": "hood_pools", "outputSchema": null }, { "description": "Minimal fast quote for one Hood ticker: Chainlink price (token +\n per-share), NASDAQ references (ref_last, ref_prev_close), basis/overnight\n bps, the most liquid pool's price/liquidity/deviation and\n oracle_paused/stale flags. Use for sizing and fill pricing instead of\n pulling the full 32-ticker snapshot.", "inputSchema": { "properties": { "ticker": { "title": "Ticker", "type": "string" } }, "required": [ "ticker" ], "title": "hood_quoteArguments", "type": "object" }, "name": "hood_quote", "outputSchema": null }, { "description": "Sector rotation context for Hood tokenized stocks (API-only tracker\n refreshed every 3h): market regime (risk_on|risk_off|mixed), an 11-SPDR\n sector score/label/flow board and a per-ticker join — sector score\n (0-100), label (inflow|interest|neutral|outflow_leaning|outflow), flow\n trend, theme matches + live basis. Answers where money is rotating and\n whether your token's sector is in inflow or outflow. tickers: CSV filter\n (empty = full Hood universe).", "inputSchema": { "properties": { "tickers": { "default": "", "title": "Tickers", "type": "string" } }, "title": "hood_sector_rotationArguments", "type": "object" }, "name": "hood_sector_rotation", "outputSchema": null }, { "description": "Daily deep-research report: score (0-100), rating (strong_buy|buy|hold|\n avoid) and 4 analysis columns per Hood tokenized stock: thesis, dated\n catalysts (off_hours-flagged, verified earnings dates), financials (PE\n ttm/fwd, growth, margins, valuation_label: expensive|fair|discount|n_a),\n competitors (peers + positioning) and news_summary ([+]/[=]/[-] tagged).\n The api_data field carries exact API numbers (price, market cap, 1d/7d/30d,\n 52w, target mean/hi/lo, analyst rec counts) — use it when precision\n matters. With ticker: one card + live basis join; empty: full report.", "inputSchema": { "properties": { "ticker": { "default": "", "title": "Ticker", "type": "string" } }, "title": "hood_stock_researchArguments", "type": "object" }, "name": "hood_stock_research", "outputSchema": null }, { "description": "One-call brief for a single Hood ticker: live quote (price, basis,\n pool, risk flags), research card (rating/score/thesis/catalysts), earnings\n risk, sector rotation context, best Reddit attention signal, 24h\n whale-flow summary and recent tagged news. Replaces 6-7 separate tool\n calls when an agent researches one ticker. Missing upstream sources\n fail-soft: the field is null.", "inputSchema": { "properties": { "ticker": { "title": "Ticker", "type": "string" } }, "required": [ "ticker" ], "title": "hood_ticker_briefArguments", "type": "object" }, "name": "hood_ticker_brief", "outputSchema": null }, { "description": "Machine-readable news events (crypto + stocks). symbols is\n comma-separated (NVDA,BTC), event_type: listing|hack|regulation|earnings|\n etf|partnership|macro|liquidation|stablecoin|general. importance 0-100.", "inputSchema": { "properties": { "event_type": { "default": "", "title": "Event Type", "type": "string" }, "limit": { "default": 50, "title": "Limit", "type": "integer" }, "min_importance": { "default": 0, "title": "Min Importance", "type": "integer" }, "symbols": { "default": "", "title": "Symbols", "type": "string" } }, "title": "market_eventsArguments", "type": "object" }, "name": "market_events", "outputSchema": null }, { "description": "Deterministic candidates for the narrative-trader strategy: per Hood\n ticker the highest-alpha Reddit signal (alpha_score, evidence, themes), a\n signal bias (long_candidate = rising attention | avoid_or_fade = crowded\n trade | context = regime info), live Chainlink price, basis and risk\n flags. The `reason` field is the Reddit summary — carry it into status\n reports and the chart as the buy/sell rationale. Signals are NOT orders.", "inputSchema": { "properties": { "hours": { "default": 48, "title": "Hours", "type": "integer" }, "min_alpha": { "default": 0.5, "title": "Min Alpha", "type": "number" } }, "title": "narrative_trade_signalsArguments", "type": "object" }, "name": "narrative_trade_signals", "outputSchema": null }, { "description": "Chainlink-vs-Uniswap pool price deviation (bps, sorted by absolute\n value). status: ok (<100), warning (100-500), alert (>500). Large\n deviations are normal in low-liquidity pools — check liquidity_usd.", "inputSchema": { "properties": { "min_abs_bps": { "default": 0, "title": "Min Abs Bps", "type": "number" } }, "title": "oracle_deviationArguments", "type": "object" }, "name": "oracle_deviation", "outputSchema": null }, { "description": "Recent fills you've reported with partner_report_fill, most recent\n first.", "inputSchema": { "properties": { "api_key": { "title": "Api Key", "type": "string" }, "limit": { "default": 50, "title": "Limit", "type": "integer" } }, "required": [ "api_key" ], "title": "partner_my_tradesArguments", "type": "object" }, "name": "partner_my_trades", "outputSchema": null }, { "description": "Report a fill you already signed and broadcast yourself (via\n partner_swap_quote) so it appears in Otto's records. Otto does NOT\n verify the transaction on-chain in this version — it trusts the\n partner it already approved. side: buy | sell. tx_hash: the\n transaction hash from your own broadcast.", "inputSchema": { "properties": { "api_key": { "title": "Api Key", "type": "string" }, "price": { "default": 0, "title": "Price", "type": "number" }, "qty": { "default": 0, "title": "Qty", "type": "number" }, "reason": { "default": "", "title": "Reason", "type": "string" }, "side": { "title": "Side", "type": "string" }, "ticker": { "title": "Ticker", "type": "string" }, "tx_hash": { "title": "Tx Hash", "type": "string" }, "usd": { "default": 0, "title": "Usd", "type": "number" } }, "required": [ "api_key", "ticker", "side", "tx_hash" ], "title": "partner_report_fillArguments", "type": "object" }, "name": "partner_report_fill", "outputSchema": null }, { "description": "Get an UNSIGNED Rialto swap quote for an approved partner. YOU sign\n and broadcast the returned transaction yourself, with your own wallet's\n private key, on your own infrastructure — Otto never sees or holds your\n key and never submits anything on your behalf. api_key: the otto_pn_\n key Otto's admin issued you directly. sell_token/buy_token: Hood token\n contract addresses (0x...). sell_amount: human units of sell_token (e.g.\n \"25\" USDG, not wei). taker: the wallet address that will actually sign\n and hold the position. Returns the raw Rialto quote including tx.to,\n tx.data, tx.value and min_buy_amount — everything needed to build and\n sign the transaction. After broadcasting, call partner_report_fill so\n the trade shows up in Otto's records.", "inputSchema": { "properties": { "api_key": { "title": "Api Key", "type": "string" }, "buy_token": { "title": "Buy Token", "type": "string" }, "sell_amount": { "title": "Sell Amount", "type": "string" }, "sell_token": { "title": "Sell Token", "type": "string" }, "slippage_bps": { "default": 50, "title": "Slippage Bps", "type": "integer" }, "taker": { "title": "Taker", "type": "string" } }, "required": [ "api_key", "sell_token", "buy_token", "sell_amount", "taker" ], "title": "partner_swap_quoteArguments", "type": "object" }, "name": "partner_swap_quote", "outputSchema": null }, { "description": "Hourly funding rates on tokenized-stock perps (Arcus + Lighter). Without\n params: latest value per venue+ticker pair (funding_apr_pct = annualized\n %). With ticker: history. Tokens trade 24/7 while the stock market does\n not — weekend/overnight funding is the price of that mismatch.", "inputSchema": { "properties": { "limit": { "default": 200, "title": "Limit", "type": "integer" }, "ticker": { "default": "", "title": "Ticker", "type": "string" }, "venue": { "default": "", "title": "Venue", "type": "string" } }, "title": "perp_fundingArguments", "type": "object" }, "name": "perp_funding", "outputSchema": null }, { "description": "Perp mark price vs Hood on-chain spot (Chainlink per-share + pool),\n deviation in bps per ticker. A large |perp_vs_chainlink_bps| means the\n perp and spot price the same stock differently — a cross-venue opportunity\n or a stale-oracle signal. Fields are null for markets without a Hood spot.", "inputSchema": { "properties": { "min_abs_bps": { "default": 0, "title": "Min Abs Bps", "type": "number" } }, "title": "perp_spot_basisArguments", "type": "object" }, "name": "perp_spot_basis", "outputSchema": null }, { "description": "Ticker alpha signals extracted from Reddit (novelty, mention velocity\n and cross-sub spread components). signal_type: ticker_alpha|crowded_trade|\n event_mispricing|squeeze_watch. tickers is comma-separated (NVDA,TSLA).", "inputSchema": { "properties": { "limit": { "default": 50, "title": "Limit", "type": "integer" }, "min_alpha": { "default": 0.3, "title": "Min Alpha", "type": "number" }, "signal_type": { "default": "", "title": "Signal Type", "type": "string" }, "tickers": { "default": "", "title": "Tickers", "type": "string" } }, "title": "reddit_alpha_signalsArguments", "type": "object" }, "name": "reddit_alpha_signals", "outputSchema": null }, { "description": "Current market regime inferred from Reddit chatter (e.g.\n mag7_only_rally, risk_on_call_chase) + confidence + flags to watch.", "inputSchema": { "properties": {}, "title": "reddit_market_regimeArguments", "type": "object" }, "name": "reddit_market_regime", "outputSchema": null }, { "description": "Status report from a trading agent — the live panel on\n ottodata.app/agents renders this stream. kind: run_started | signals |\n order_proposed | order_approved | order_filled | order_skipped |\n position_closed | run_summary | error. agent: gap-trader |\n narrative-trader. key: the operator's OTTO_AGENT_KEY value (wrong keys are\n rejected). Call at every runbook step; keep message short and\n human-readable (e.g. 'BUY 3 NVDA @ 184.20 limit — gap +82bps').", "inputSchema": { "properties": { "agent": { "default": "gap-trader", "title": "Agent", "type": "string" }, "key": { "title": "Key", "type": "string" }, "kind": { "title": "Kind", "type": "string" }, "message": { "title": "Message", "type": "string" }, "payload": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": null, "title": "Payload" }, "run_id": { "default": "", "title": "Run Id", "type": "string" }, "ticker": { "default": "", "title": "Ticker", "type": "string" } }, "required": [ "key", "kind", "message" ], "title": "report_agent_statusArguments", "type": "object" }, "name": "report_agent_status", "outputSchema": null }, { "description": "Trust status of the Otto data layer: per-feed freshness (age_sec/stale),\n 24h tick coverage, NASDAQ reference availability and oracle-pause count.\n Call before making trading decisions — status: ok|degraded|down.", "inputSchema": { "properties": {}, "title": "service_statusArguments", "type": "object" }, "name": "service_status", "outputSchema": null }, { "description": "Deviation of USDG and other stablecoins from $1 parity (depeg risk, bps).", "inputSchema": { "properties": {}, "title": "stable_riskArguments", "type": "object" }, "name": "stable_risk", "outputSchema": null }, { "description": "Large on-chain token transfers (whale flows): 32 stock tokens + USDG\n above the USD threshold. direction: mint|burn|transfer. Mints/burns show\n the tokenized stock supply changing (issuance/redemption).", "inputSchema": { "properties": { "direction": { "default": "", "title": "Direction", "type": "string" }, "hours": { "default": 24, "title": "Hours", "type": "integer" }, "limit": { "default": 50, "title": "Limit", "type": "integer" }, "min_usd": { "default": 0, "title": "Min Usd", "type": "number" }, "ticker": { "default": "", "title": "Ticker", "type": "string" } }, "title": "token_flowsArguments", "type": "object" }, "name": "token_flows", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:734965cb072b4d7534d8691e450cbc95340ae7f8bb6c48578f28704fde0a93c7 | sha256sum