OptionsBell Options Flow
Measured conclusion: Alive, not deep-tested. L2 outcome: not_attempted.
Unusual options activity on 7,000+ US stocks: top prints, streaks, IV rank, sentiment, sectors.
| Author | com.optionsbell |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Alive, not deep-tested |
| L1 liveness | alive |
| L1 latency | 1972 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"OptionsBell Options Flow": {
"url": "https://optionsbell.com/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (13)
pingLiveness check for the OptionsBell MCP server. No API key required.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_dataset_statsDiscover what data is available before querying: date ranges, contract counts, symbol counts and sector coverage for the unusual-activity dataset and its daily aggregates. Call this first when unsure about available history.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_unusual_activityContract-level unusual options activity scan across 7,000+ US stocks (the dataset behind OptionsBell alerts). Filter by symbols, side and thresholds: Vol/OI ratio, premium (USD), IV, days-to-expiration, volume, open interest. Rows include strike, expiry, volume, open interest, IV, delta, sector and an estimated premium. Use for questions like 'what unusual put buying hit TSLA today?'
Parameters:
raw— boolean — true = skip the always-on base floor (Vol/OI>=1.5, OI>=100, premium>=$25k).date— string — Trading day, YYYY-MM-DD. Defaults to the latest available day.type— string — Side: c = calls, p = puts (default all).limit— integer — Max rows (default 300).since— string — ISO-8601 timestamp; only contracts last seen intraday at or after this time (for polling).min_iv— number — Minimum implied volatility in percent, e.g. 60.min_oi— number — Minimum open interest.offset— integer — Rows to skip for paging; the response reports filtered_total and has_more.date_to— string — Range end, YYYY-MM-DD inclusive.max_dte— integer — Maximum days to expiration, e.g. 30.symbols— string — Comma-separated tickers, e.g. 'AAPL,NVDA,TSLA'.date_from— string — Range start, YYYY-MM-DD inclusive.min_voloi— number — Minimum volume/open-interest ratio, e.g. 5.min_volume— number — Minimum contract volume.min_premium— number — Minimum estimated premium in USD, e.g. 250000.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_symbol_flowEvery unusual contract on a single ticker, ranked by score (Vol/OI weighted by premium). Use when the question is about one specific stock's unusual options flow.
Parameters:
symbol(required) — string — Single ticker, e.g. 'TSLA'.date— string — Trading day, YYYY-MM-DD. Defaults to the latest available day.type— stringlimit— integerdate_to— string — Range end, YYYY-MM-DD inclusive.date_from— string — Range start, YYYY-MM-DD inclusive.min_voloi— numbermin_premium— number
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_top_printsThe day's biggest options bets ranked by estimated premium - the same view OptionsBell alert emails lead with. Perfect for 'what were the largest options trades today?'
Parameters:
date— string — Trading day, YYYY-MM-DD. Defaults to the latest available day.type— stringlimit— integer — Max rows (default 20).offset— integer — Rows to skip for paging; the response reports filtered_total and has_more.symbols— string — Comma-separated tickers, e.g. 'AAPL,NVDA,TSLA'.min_premium— number — Minimum premium in USD (default 25000).
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_flow_historyEnd-of-day series of one symbol's UNUSUAL options flow (aggregated from the contracts that passed the unusual filter - not the full tape): daily call/put volume, premium, C/P ratios, average IV, net delta and the consecutive-day streak. ~75 trading days - the series behind back-tests and 'how has unusual flow on NVDA developed?'
Parameters:
symbol(required) — string — Single ticker, e.g. 'TSLA'.limit— integer — Max rows, newest first (default 90).date_to— string — Range end, YYYY-MM-DD inclusive.date_from— string — Range start, YYYY-MM-DD inclusive.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_flow_streaksSymbols with unusual options activity on N+ consecutive trading days, with the dominant side (call/put). Persistent unusual flow is a stronger signal than a single print - use for 'where does money keep showing up?'
Parameters:
date— string — Trading day, YYYY-MM-DD. Defaults to the latest available day.side— string — Dominant side by C/P volume ratio.limit— integeroffset— integer — Rows to skip for paging; the response reports filtered_total and has_more.symbols— string — Comma-separated tickers, e.g. 'AAPL,NVDA,TSLA'.min_streak— integer — Minimum consecutive days (default 3).min_volume— number
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_expiry_concentrationWhere the day's unusual premium sits along the expiry axis, in DTE buckets (0-7, 8-30, 31-90, 90+) with call/put splits. Heavy short-dated premium reads as event bets; heavy long-dated as positioning.
Parameters:
date— string — Trading day, YYYY-MM-DD. Defaults to the latest available day.symbols— string — Comma-separated tickers, e.g. 'AAPL,NVDA,TSLA'.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_flow_sentimentBullish/bearish classification of each symbol's unusual flow with a 0-9 strength score, based on call/put volumes, premium and net delta. Pass a symbol for that ticker's sentiment time series (date_from, date_to, limit apply); omit it for the cross-market snapshot (filterable by sector, side, minimum strength or premium).
Parameters:
date— string — Trading day, YYYY-MM-DD. Defaults to the latest available day.side— string — Only rows classified with this signal side (snapshot only).limit— integeroffset— integer — Snapshot only. Rows to skip for paging; the response reports filtered_total and has_more.sector— string — GICS sector name, e.g. 'Information Technology' (snapshot only).symbol— string — Single ticker for its sentiment series; omit for the market-wide snapshot.date_to— string — Range end, YYYY-MM-DD inclusive.symbols— string — Comma-separated tickers, e.g. 'AAPL,NVDA,TSLA'.date_from— string — Range start, YYYY-MM-DD inclusive.min_premium— number — Minimum call+put premium in USD (snapshot only).signal_only— boolean — Only rows with an active bullish/bearish signal (snapshot only).min_strength— integer — Snapshot only; rows without a signal count as 0.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_iv_rankIV rank and IV percentile per symbol against its rolling history (needs 20+ days). Pass a symbol for its IV-rank time series (lookback_days, limit apply); omit it for a ranked snapshot (e.g. side=put&min_rank=0.8 finds elevated put IV; side=both ranks by the higher of call/put IV rank).
Parameters:
side— string — Snapshot only (default both).limit— integersymbol— string — Single ticker for its IV-rank series; omit for the snapshot.max_rank— number — Snapshot only.min_rank— number — Snapshot only.lookback_days— integer
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_oi_changesDay-over-day open-interest change per symbol (total, calls, puts) - fresh positioning being built or unwound. Pass a symbol for its OI-change series (date_from, date_to, limit apply); omit it for market-wide gainers/losers.
Parameters:
date— string — Trading day, YYYY-MM-DD. Defaults to the latest available day.side— string — Market-wide view only.limit— integeroffset— integer — Market-wide view only. Rows to skip for paging; the response reports filtered_total and has_more.symbol— string — Single ticker for its OI-change series; omit for the market-wide view.date_to— string — Range end, YYYY-MM-DD inclusive.symbols— string — Comma-separated tickers, e.g. 'AAPL,NVDA,TSLA'.date_from— string — Range start, YYYY-MM-DD inclusive.min_prev_oi— number — Minimum prior-day OI to filter low-base noise (default 1000; market-wide only).min_change_pct— number — Minimum absolute day-over-day change, e.g. 0.5 = 50% (market-wide only).
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_sector_flowWhich sectors the day's unusual options premium is concentrating in: total premium, volume, average net delta and bullish/bearish symbol counts per sector label (11 GICS sectors plus Diversified, Unknown and Unclassified; only labels with activity, at most 14 rows).
Parameters:
date— string — Trading day, YYYY-MM-DD. Defaults to the latest available day.limit— integer — Default 50 returns every group.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_market_regimeMarket-wide breadth of unusual flow per trading day: breadth score 0-100, aggregate call/put ratio, regime label (bullish/bearish/mixed) and signal counts. Use for 'what's the overall tone of the unusual-flow tape?'
Parameters:
date— string — Trading day, YYYY-MM-DD. Defaults to the latest available day.limit— integer — Max daily rows, newest first (default 30).date_to— string — Range end, YYYY-MM-DD inclusive.date_from— string — Range start, YYYY-MM-DD inclusive.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.