# impliedoptions.com — options data your agent can call # Product: options flow, chains, implied volatility, GEX/max pain, expected moves, multi-leg P&L, positions, watchlist and alerts as typed tools. # Canonical origin: https://impliedoptions.com # MCP (Streamable HTTP): https://impliedoptions.com/mcp # OpenAPI 3.1: https://impliedoptions.com/api/v1/openapi.json # REST: POST https://impliedoptions.com/api/v1/tools/{name} with a JSON body of the tool arguments; read tools also accept GET with flat query params. # Auth: header `Authorization: Bearer io_live_…` (API key from /account) or an OAuth 2.1 access token; `?api_key=` is accepted for URL-only hosts. # Auth: MCP clients may use OAuth 2.1 with PKCE — discovery at /.well-known/oauth-authorization-server, dynamic registration at /oauth/register. # Auth: anonymous calls work only for tools marked (anonymous), with delayed data and a shared quota. ## Tools market.status — Whether US equity markets are open right now, the current session, and the next regular-session open. — https://impliedoptions.com/tools/market.status (anonymous) flow.search — Unusual options prints (blocks, sweeps, complex, strategies) filtered by ticker, type, side, premium and DTE. Free callers get 15-minute delayed prints capped at 50 rows. — https://impliedoptions.com/tools/flow.search (anonymous) flow.summary — Aggregate options-flow posture over a window: print counts by type, buy vs sell, net call/put premium and the top tickers by premium. — https://impliedoptions.com/tools/flow.summary (anonymous) flow.filings — Recent stock transactions disclosed by members of Congress or by corporate insiders (SEC Form 4). Insider lookups require tickers. — https://impliedoptions.com/tools/flow.filings (anonymous) screener.run — Market-wide leaderboards: most active tickers, most active option contracts, IV rank leaders, or largest expected moves. Paid callers get the live intraday snapshot; others get the latest end-of-day table. — https://impliedoptions.com/tools/screener.run (anonymous) ticker.research — One-call research brief for a symbol: price and volume, IV rank and percentile, expected moves, gamma exposure, max pain and the latest unusual flow. Unavailable sections are null. — https://impliedoptions.com/tools/ticker.research (anonymous) chain.get — Option chain for one expiration with bid/ask, volume, open interest, IV and greeks per contract. Defaults to the nearest expiration; free callers are 15-minute delayed and capped at 50 contracts. — https://impliedoptions.com/tools/chain.get (anonymous) quote.get — Last price, change and previous close for up to 25 symbols. Free callers are 15-minute delayed. — https://impliedoptions.com/tools/quote.get (anonymous) iv.context — Current 30-day IV with rank, percentile and 52-week range, the last year of daily IV history, monthly seasonality, and realised volatility. IVs are decimals (0.25 = 25%); rank and percentile are 0–100. — https://impliedoptions.com/tools/iv.context (anonymous) expected.move — One- and two-sigma expected-move bands for a symbol over several horizons, from spot × IV × √(days/365) using the current 30-day IV. Pass `date` to compute from a past trade date. — https://impliedoptions.com/tools/expected.move (anonymous) gex.levels — Dealer gamma exposure (GEX) by expiration and by strike for one symbol, with the net total, sign interpretation and flip strike. Strike levels are for the requested expiration or the nearest one. — https://impliedoptions.com/tools/gex.levels (paid) maxpain.levels — Max pain strike for each listed expiration of one symbol, with call/put open interest totals. `max_pain` is the strike for the requested expiration or the nearest one. — https://impliedoptions.com/tools/maxpain.levels (anonymous) pnl.model — Black-Scholes P&L for a 1–8 leg option position: P&L grid now and at expiration, per-leg and net Greeks, break-evens, max profit/loss and probability of profit. Missing prices, IVs and spot are marked from the live chain. — https://impliedoptions.com/tools/pnl.model (anonymous) positions.list — Returns the signed-in user’s open option positions, newest first. — https://impliedoptions.com/tools/positions.list positions.add — Records one open position per leg for the signed-in user. Use dry_run to preview the rows without saving. — https://impliedoptions.com/tools/positions.add (write) positions.close — Closes an open position at close_price, recording the realized P&L in the track record and removing it from open positions. — https://impliedoptions.com/tools/positions.close (write) positions.history — Returns the signed-in user’s closed and imported trades with realized P&L, newest close first. — https://impliedoptions.com/tools/positions.history watchlist.get — Returns the signed-in user’s watchlist symbols. — https://impliedoptions.com/tools/watchlist.get watchlist.add — Adds symbols to the watchlist; symbols already present are ignored. — https://impliedoptions.com/tools/watchlist.add (write) watchlist.remove — Removes symbols from the watchlist; symbols not on the list are ignored. — https://impliedoptions.com/tools/watchlist.remove (write) alerts.list — Returns the signed-in user’s flow alerts, newest first. — https://impliedoptions.com/tools/alerts.list alerts.create — Creates a flow alert that fires when new options flow matches the filters. Free accounts may hold one alert. — https://impliedoptions.com/tools/alerts.create (write) alerts.delete — Deletes one of the signed-in user’s flow alerts by id. — https://impliedoptions.com/tools/alerts.delete (write) ## Response envelope { "data": , "meta": { "tool", "args", "freshness": "realtime|delayed", "as_of", "truncated?", "total?", "next_cursor?", "duration_ms" } } Errors are RFC 9457 application/problem+json: { type, title, status, detail?, tool?, retry_after?, errors? }. Error codes: unauthorized, forbidden, quota_exceeded, tier_required, invalid_args, symbol_unknown, not_found, conflict, upstream_unavailable, internal. ## Limits Free: 15-minute delayed data, 50 rows per response, 500 calls/day. Anonymous runs share a smaller per-IP quota. Paid: realtime data, up to 2000 rows per response, unlimited calls. Responses report meta.truncated and meta.total when capped. ## Analysis setup URL Canonical form: https://impliedoptions.com/analysis?setup={SETUP} SETUP is a pipe-delimited DSL. The query value may be literal or percent-encoded. setup = ticker-field "|" positions-field [ "|" expiration-field ] ticker-field = "ticker:" SYMBOL positions-field = "positions:" position *( "," position ) expiration-field = "exp:" YYYY-MM-DD position = [quantity] SYMBOL YYMMDD right strike "@" price quantity = "+" / "-" / [ "+" / "-" ] positive-integer right = "C" / "P" SYMBOL = 1-6 uppercase ASCII letters YYMMDD = valid expiration date with a two-digit year; 260821 means 2026-08-21 YYYY-MM-DD = valid ISO calendar date; selects the chart expiration strike = positive decimal without OCC padding; use 617 or 617.5 price = non-negative decimal entry price; use 0.00 when unknown Quantity rules: - omitted or "+" means buy 1 - "-" means sell 1 - "+2" means buy 2; "-3" means sell 3 - every leg must use the same SYMBOL as ticker-field Examples: 1. Buy one SPY 617 call expiring 2026-08-21 at 6.47: https://impliedoptions.com/analysis?setup=ticker:SPY|positions:+SPY260821C617@6.47 2. Two-contract SPY call debit spread: https://impliedoptions.com/analysis?setup=ticker:SPY|positions:+2SPY260821C617@6.47,-2SPY260821C625@3.10 3. Sell one NVDA 120 put and select its chart expiration: https://impliedoptions.com/analysis?setup=ticker:NVDA|positions:-NVDA260918P120@4.20|exp:2026-09-18 ## Paste input on /analysis The visible "Paste position" action accepts: - a full /analysis URL containing the setup query - a bare SETUP DSL string - OCC-style text, one leg per line, with optional quantity and entry price +2 SPY260821C00617000 @ 6.47 SPY 260821C617 - plain-English buy/sell text, one leg per line buy 2 SPY 617c aug 21 2026 @ 6.47 sell 1 SPY 600 put 8/21/26 @ 2.45 ## Required generator behavior When asked to analyze, construct, share, or link an options position, emit a complete https://impliedoptions.com/analysis?setup=... URL. Do not return only the DSL or prose. Use one positions entry per leg and preserve buy/sell signs and contract counts.