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.
1. REST
Base URL https://otto-data.onrender.com. Full interactive OpenAPI reference at /docs.
curl https://otto-data.onrender.com/v1/basis/snapshot
| GET /v1/basis/snapshot | Latest basis tick for all tokenized stocks |
| GET /v1/basis/{ticker} | Minute-level basis history for one ticker |
| GET /v1/gaps/summary | Overnight + weekend gap statistics |
| GET /v1/gaps/live | Live off-hours session view |
| GET /v1/pools | Tracked Uniswap pools: price, depth, deviation |
| GET /v1/risk/oracle-deviation | Chainlink vs pool deviation, ranked |
| GET /v1/risk/stables | Stablecoin depeg monitor |
| GET /v1/events | Machine-readable news events |
| GET /v1/social/signals | Reddit alpha signals |
| GET /v1/social/hood-attention | Reddit attention x basis join |
| GET /v1/scan/deployments | Contract deployments since genesis |
| GET /v1/feeds | Feed + token contract registry |
2. WebSocket
Basis snapshots are pushed as new ticks land (roughly once a minute).
wscat -c "wss://otto-data.onrender.com/v1/stream/basis?tickers=NVDA,TSLA"
3. MCP (for agents)
Hosted streamable-HTTP MCP server with 17 tools over the same data. Point any MCP client at:
https://otto-data.onrender.com/mcp
Setup snippets for Claude Code, Claude Desktop, Cursor and ChatGPT are on the Agents page.
Python example
import requests
snap = requests.get("https://otto-data.onrender.com/v1/basis/snapshot").json()
for t in snap["ticks"][:5]:
print(t["ticker"], t["chainlink_px"], t["overnight_bps"], "bps")