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.

Settings → Developer → Edit config
{
  "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

LimitAnonymousFreePaid
Data delay15 min15 minRealtime
Calls per day100500Unlimited within fair use
Rows per response5050Full
Write toolsNoYesYes
Paid tools (gex.levels)NoNoYes
Flow alerts1Unlimited

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.

TypeStatusWhen
invalid_args400Arguments failed the tool schema; `errors[]` lists each path and message.
unauthorized401Missing, invalid or expired key or token, or the tool requires an account.
forbidden403Credential lacks the `write` scope needed by a write tool.
tier_required403Tool or option is Paid only.
not_found404Unknown tool, or a resource id (position, alert, expiration) that does not exist.
symbol_unknown404No data for the symbol.
conflict409A write collides with an existing row (for example a duplicate alert name).
quota_exceeded429Daily call limit reached; `retry_after` seconds and `Retry-After` header are set.
upstream_unavailable502A data backend did not answer; safe to retry.
internal500Unexpected 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

Model

Track

Agent files

Generated from the same registry; point an agent at any of them.