Unusual options activity on 7,000+ US stocks: top prints, streaks, IV rank, sentiment, sectors.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Your OptionsBell API key (sms_...). Generate at https://optionsbell.com/settings - requires an active subscription. Alternatively connect via a personal connector URL from Settings, which needs no header at all.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Discover 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.
This tool takes no arguments.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Discover 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.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Where 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.
| Argument | Type | Description |
|---|---|---|
| date | string | Trading day, YYYY-MM-DD. Defaults to the latest available day. |
| symbols | string | Comma-separated tickers, e.g. 'AAPL,NVDA,TSLA'. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Trading day, YYYY-MM-DD. Defaults to the latest available day."
},
"symbols": {
"type": "string",
"description": "Comma-separated tickers, e.g. 'AAPL,NVDA,TSLA'."
}
}
}End-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?'
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max rows, newest first (default 90). |
| symbol* | string | Single ticker, e.g. 'TSLA'. |
| date_to | string | Range end, YYYY-MM-DD inclusive. |
| date_from | string | Range start, YYYY-MM-DD inclusive. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"symbol"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Max rows, newest first (default 90)."
},
"symbol": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Single ticker, e.g. 'TSLA'."
},
"date_to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Range end, YYYY-MM-DD inclusive."
},
"date_from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Range start, YYYY-MM-DD inclusive."
}
}
}Bullish/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).
| Argument | Type | Description |
|---|---|---|
| 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 | integer | |
| offset | 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 |
Symbols 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?'
| Argument | Type | Description |
|---|---|---|
| date | string | Trading day, YYYY-MM-DD. Defaults to the latest available day. |
| side | string | Dominant side by C/P volume ratio. |
| limit | integer | |
| 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_streak | integer | Minimum consecutive days (default 3). |
| min_volume | number |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Trading day, YYYY-MM-DD. Defaults to the latest available day."
},
"side": {
"enum": [
"call",
"put",
"all"
],
"type": "string",
"description": "Dominant side by C/P volume ratio."
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip for paging; the response reports filtered_total and has_more."
},
"symbols": {
"type": "string",
"description": "Comma-separated tickers, e.g. 'AAPL,NVDA,TSLA'."
},
"min_streak": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"description": "Minimum consecutive days (default 3)."
},
"min_volume": {
"type": "number"
}
}
}IV 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).
| Argument | Type | Description |
|---|---|---|
| side | string | Snapshot only (default both). |
| limit | integer | |
| symbol | 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 |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"side": {
"enum": [
"call",
"put",
"both"
],
"type": "string",
"description": "Snapshot only (default both)."
},
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1
},
"symbol": {
"type": "string",
"description": "Single ticker for its IV-rank series; omit for the snapshot."
},
"max_rank": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Snapshot only."
},
"min_rank": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Snapshot only."
},
"lookback_days": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1
}
}
}Market-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?'
| Argument | Type | Description |
|---|---|---|
| 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. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Trading day, YYYY-MM-DD. Defaults to the latest available day."
},
"limit": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"description": "Max daily rows, newest first (default 30)."
},
"date_to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Range end, YYYY-MM-DD inclusive."
},
"date_from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Range start, YYYY-MM-DD inclusive."
}
}
}Day-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.
| Argument | Type | Description |
|---|---|---|
| date | string | Trading day, YYYY-MM-DD. Defaults to the latest available day. |
| side | string | Market-wide view only. |
| limit | integer | |
| offset | 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). |
Which 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).
| Argument | Type | Description |
|---|---|---|
| date | string | Trading day, YYYY-MM-DD. Defaults to the latest available day. |
| limit | integer | Default 50 returns every group. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Trading day, YYYY-MM-DD. Defaults to the latest available day."
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Default 50 returns every group."
}
}
}Every 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.
| Argument | Type | Description |
|---|---|---|
| date | string | Trading day, YYYY-MM-DD. Defaults to the latest available day. |
| type | string | |
| limit | integer | |
| symbol* | string | Single ticker, e.g. 'TSLA'. |
| date_to | string | Range end, YYYY-MM-DD inclusive. |
| date_from | string | Range start, YYYY-MM-DD inclusive. |
| min_voloi | number | |
| min_premium | number |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"symbol"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Trading day, YYYY-MM-DD. Defaults to the latest available day."
},
"type": {
"enum": [
"c",
"p",
"all"
],
"type": "string"
},
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1
},
"symbol": {
"type": "string",
"maxLength": 10,
"minLength": 1,
"description": "Single ticker, e.g. 'TSLA'."
},
"date_to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Range end, YYYY-MM-DD inclusive."
},
"date_from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Range start, YYYY-MM-DD inclusive."
},
"min_voloi": {
"type": "number"
},
"min_premium": {
"type": "number"
}
}
}The 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?'
| Argument | Type | Description |
|---|---|---|
| date | string | Trading day, YYYY-MM-DD. Defaults to the latest available day. |
| type | string | |
| limit | 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). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Trading day, YYYY-MM-DD. Defaults to the latest available day."
},
"type": {
"enum": [
"c",
"p",
"all"
],
"type": "string"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Max rows (default 20)."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip for paging; the response reports filtered_total and has_more."
},
"symbols": {
"type": "string",
"description": "Comma-separated tickers, e.g. 'AAPL,NVDA,TSLA'."
},
"min_premium": {
"type": "number",
"description": "Minimum premium in USD (default 25000)."
}
}
}Contract-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?'
| Argument | Type | Description |
|---|---|---|
| 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 |
Liveness check for the OptionsBell MCP server. No API key required.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}| 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. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Trading day, YYYY-MM-DD. Defaults to the latest available day."
},
"side": {
"enum": [
"bullish",
"bearish"
],
"type": "string",
"description": "Only rows classified with this signal side (snapshot only)."
},
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Snapshot only. Rows to skip for paging; the response reports filtered_total and has_more."
},
"sector": {
"type": "string",
"description": "GICS sector name, e.g. 'Information Technology' (snapshot only)."
},
"symbol": {
"type": "string",
"description": "Single ticker for its sentiment series; omit for the market-wide snapshot."
},
"date_to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Range end, YYYY-MM-DD inclusive."
},
"symbols": {
"type": "string",
"description": "Comma-separated tickers, e.g. 'AAPL,NVDA,TSLA'."
},
"date_from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Range start, YYYY-MM-DD inclusive."
},
"min_premium": {
"type": "number",
"description": "Minimum call+put premium in USD (snapshot only)."
},
"signal_only": {
"type": "boolean",
"description": "Only rows with an active bullish/bearish signal (snapshot only)."
},
"min_strength": {
"type": "integer",
"maximum": 9,
"minimum": 0,
"description": "Snapshot only; rows without a signal count as 0."
}
}
}| min_change_pct |
| number |
| Minimum absolute day-over-day change, e.g. 0.5 = 50% (market-wide only). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Trading day, YYYY-MM-DD. Defaults to the latest available day."
},
"side": {
"enum": [
"gainers",
"losers",
"all"
],
"type": "string",
"description": "Market-wide view only."
},
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Market-wide view only. Rows to skip for paging; the response reports filtered_total and has_more."
},
"symbol": {
"type": "string",
"description": "Single ticker for its OI-change series; omit for the market-wide view."
},
"date_to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Range end, YYYY-MM-DD inclusive."
},
"symbols": {
"type": "string",
"description": "Comma-separated tickers, e.g. 'AAPL,NVDA,TSLA'."
},
"date_from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Range start, YYYY-MM-DD inclusive."
},
"min_prev_oi": {
"type": "number",
"description": "Minimum prior-day OI to filter low-base noise (default 1000; market-wide only)."
},
"min_change_pct": {
"type": "number",
"description": "Minimum absolute day-over-day change, e.g. 0.5 = 50% (market-wide only)."
}
}
}| 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. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"raw": {
"type": "boolean",
"description": "true = skip the always-on base floor (Vol/OI>=1.5, OI>=100, premium>=$25k)."
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Trading day, YYYY-MM-DD. Defaults to the latest available day."
},
"type": {
"enum": [
"c",
"p",
"all"
],
"type": "string",
"description": "Side: c = calls, p = puts (default all)."
},
"limit": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Max rows (default 300)."
},
"since": {
"type": "string",
"description": "ISO-8601 timestamp; only contracts last seen intraday at or after this time (for polling)."
},
"min_iv": {
"type": "number",
"description": "Minimum implied volatility in percent, e.g. 60."
},
"min_oi": {
"type": "number",
"description": "Minimum open interest."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip for paging; the response reports filtered_total and has_more."
},
"date_to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Range end, YYYY-MM-DD inclusive."
},
"max_dte": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Maximum days to expiration, e.g. 30."
},
"symbols": {
"type": "string",
"description": "Comma-separated tickers, e.g. 'AAPL,NVDA,TSLA'."
},
"date_from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Range start, YYYY-MM-DD inclusive."
},
"min_voloi": {
"type": "number",
"description": "Minimum volume/open-interest ratio, e.g. 5."
},
"min_volume": {
"type": "number",
"description": "Minimum contract volume."
},
"min_premium": {
"type": "number",
"description": "Minimum estimated premium in USD, e.g. 250000."
}
}
}