Docs
Every capability is a typed tool. Call it over MCP, REST or an SDK; the names, arguments and responses are identical.
Quickstart
Paste one snippet. Replace <YOUR_KEY> with a key from /connect. ChatGPT signs in with OAuth instead.
{
"mcpServers": {
"impliedoptions": {
"url": "https://impliedoptions.com/mcp",
"headers": {
"Authorization": "Bearer <YOUR_KEY>"
}
}
}
}Authentication
API keys
Keys look like io_live_… and inherit your plan. Send them as a bearer token.
Authorization: Bearer io_live_…Hosts that only accept a URL can pass ?api_key=io_live_… on https://impliedoptions.com/mcp. The key then appears in logs and history; prefer the header when you can.
OAuth 2.1 for connectors
MCP clients that support OAuth (Claude, ChatGPT) register themselves and sign in with PKCE; no key is needed. Scopes: read, write.
Calling tools
MCP: https://impliedoptions.com/mcp (Streamable HTTP). REST: POST https://impliedoptions.com/api/v1/tools/{name} with a JSON body { "args": { … } }. Read tools also accept GET with flat query parameters (arrays comma-separated).
curl "https://impliedoptions.com/api/v1/tools/flow.search?tickers=SPY,QQQ&min_premium=1000000" \
-H "Authorization: Bearer io_live_…"Every success returns { data, meta }. meta echoes the normalized args and carries freshness (realtime | delayed), as_of, and truncated + total when a row cap applied.
Write tools take idempotency_key (or the Idempotency-Key header) and dry_run: true (or X-Dry-Run: true) to preview the change without saving.
Limits
| Limit | Anonymous | Free | Paid |
|---|---|---|---|
| Data delay | 15 min | 15 min | Realtime |
| Calls per day | 100 | 500 | Unlimited within fair use |
| Rows per response | 50 | 50 | Full |
| Write tools | No | Yes | Yes |
| Paid tools (gex.levels) | No | No | Yes |
| Flow alerts | — | 1 | Unlimited |
Quotas reset at 00:00 UTC. Every REST response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Compare plans.
Errors
REST errors are RFC 9457 application/problem+json; MCP returns the same body with isError: true. Fields: type, title, status, detail, tool, and retry_after or errors[] when relevant.
| Type | Status | When |
|---|---|---|
| invalid_args | 400 | Arguments failed the tool schema; `errors[]` lists each path and message. |
| unauthorized | 401 | Missing, invalid or expired key or token, or the tool requires an account. |
| forbidden | 403 | Credential lacks the `write` scope needed by a write tool. |
| tier_required | 403 | Tool or option is Paid only. |
| not_found | 404 | Unknown tool, or a resource id (position, alert, expiration) that does not exist. |
| symbol_unknown | 404 | No data for the symbol. |
| conflict | 409 | A write collides with an existing row (for example a duplicate alert name). |
| quota_exceeded | 429 | Daily call limit reached; `retry_after` seconds and `Retry-After` header are set. |
| upstream_unavailable | 502 | A data backend did not answer; safe to retry. |
| internal | 500 | Unexpected failure on our side. |
Tools
23 tools. Each page has the input and output schema, an example in every syntax, and a runner. Index.
Data
- market.statusMarket status
- flow.searchSearch options flow
- flow.summaryFlow summary
- flow.filingsCongress and insider filings
- screener.runRun screener
- ticker.researchTicker research
- chain.getOption chain
- quote.getUnderlying quotes
Model
- iv.contextImplied volatility context
- expected.moveExpected move bands
- gex.levelsPaidGamma exposure levels
- maxpain.levelsMax pain by expiration
- pnl.modelModel position P&L
Track
- positions.listList open positions
- positions.addwriteAdd position
- positions.closewriteClose position
- positions.historyClosed trades
- watchlist.getGet watchlist
- watchlist.addwriteAdd to watchlist
- watchlist.removewriteRemove from watchlist
- alerts.listList flow alerts
- alerts.createwriteCreate flow alert
- alerts.deletewriteDelete flow alert
Agent files
Generated from the same registry; point an agent at any of them.
- /api/v1/openapi.jsonOpenAPI 3.1 for REST and SDK generation
- /llms.txtOne line per tool, auth, base URLs
- /SKILL.mdAgent skill with canonical recipes
- /AGENTS.mdRecipes for coding agents plus SDK install lines
- /mcpMCP Streamable HTTP endpoint