MCP App Store
by KeenEthics
Finance
Unusual Whales icon

Unusual Whales

by Unusual Whales Inc

Overview

Unusual Whales helps users research markets through ChatGPT with options flow, option chains, equity fundamentals, insider and congressional trading, macro rates, charts, and related market data.

Tools

get_analyst_ratings

ChatGPT
Get the latest analyst ratings with price targets. Use this to filter analyst activity by ticker, rating action, recommendation, published time, or minimum upside to price target. Returns the same analyst rating data including ticker, analyst, firm, recommendation, action, target, timestamp, and sector.

get_api_examples

ChatGPT
Lists and fetches scripts from github.com/unusual-whales/api-examples. Use this when the user wants to build, clone, or adapt a dashboard, alert worker, trading bot, websocket stream, or notebook. Omit arguments to list examples. Pass query to search. Pass example to get one example's files. Set include_files true only when you need file bodies under the size cap. Results include resource_link URIs (uw://example/{slug}/{path}) so clients can attach files instead of inlining them.

get_atm_chains

ChatGPT
Get the at-the-money call and put option contracts nearest the underlying price for each requested expiration. Use this for concise ATM comparisons across one or more specific expirations. Do not use this when the user needs a broad strike range or the full chain for an expiration. Open-interest interpretation: - Open Interest Changes need confirmation from the next morning's updated open-interest data. - Do not assume option volume equals open interest or new positioning. Volume can suggest possible activity, but it can include opening, closing, spread, roll, hedge, or same-day trades that do not become new OI. - When OI confirmation is unavailable, describe volume-over-OI or high-volume activity as unconfirmed until the next OI update.

get_average_return_per_month_by_ticker

ChatGPT
Get a ticker's historical seasonality statistics for each calendar month. Use this to compare average, median, minimum, and maximum returns and positive-month frequency across all months for one ticker. Do not use this to rank multiple stocks for one month; use get_month_performers instead.

get_balance_sheet_screener

ChatGPT
enables precise screening and sorting of balance sheet data, covering critical indicators of liquidity, solvency, and capital structure. It provides deep visibility into asset composition—from cash and inventory to goodwill and PPE—alongside a detailed breakdown of current and long-term liabilities. By organizing these core accounting fields, the tool allows for the rapid assessment of shareholder equity, debt obligations, and overall financial stability across specific fiscal periods Supports filtering by min_<field> / max_<field> on any numeric or date field and by tickers for a specific symbol list. Combine multiple criteria in a single call instead of issuing repeated ranked calls.

get_balance_sheets

ChatGPT
Get detailed balance sheet data for a ticker, including total assets/liabilities, current/non-current breakdowns, cash & equivalents, inventory, receivables, PP&E, intangibles, goodwill, debt structure (short-term, long-term, lease obligations), shareholder equity, retained earnings, treasury stock, and shares outstanding. Use this for balance sheet analysis, debt structure review, and asset composition.

get_build_recipe

ChatGPT
Returns a playbook for building with the Unusual Whales API or MCP tools: the tools to use, source examples and next steps for one goal (getting_started, dashboard, confluence_alert, trading_bot, data_stream, backtest), with the full playbook markdown unless detail is summary. Use this when the user wants to build, scaffold, automate, or monitor a dashboard, custom alert feed, trading bot, websocket stream, or backtest. Related tools: get_api_examples returns real source from github.com/unusual-whales/api-examples; get_public_api_docs returns the exact REST paths and parameters.

get_cash_flow_screener

ChatGPT
screening and sorting of cash flow data by categorizing activities into operating, investing, and financing streams. It provides visibility into critical capital movements, including capital expenditures, dividend payouts, debt issuances, and stock-based compensation, to track how a company generates and spends its cash. By organizing these detailed line items across fiscal periods, the tool facilitates a clear assessment of a firm's liquidity, reinvestment strategies, and overall cash position Supports filtering by min_<field> / max_<field> on any numeric or date field and by tickers for a specific symbol list. Combine multiple criteria in a single call instead of issuing repeated ranked calls.

get_cash_flows

ChatGPT
Get detailed cash flow statement data for a ticker, including operating/investing/financing cashflows, capital expenditures, stock buyback payments, dividend payouts, stock-based compensation, debt issuance/repayment, depreciation, and changes in working capital. Use this for free cash flow analysis, capital allocation review, and cash generation assessment.

get_central_bank_rates

ChatGPT
Get central banks with their latest policy rate and historical rate series.

get_chains_for_expiry

ChatGPT
Get option chains for a ticker at a specific expiry date. Returns chain rows plus current underlying price data for the given expiry date. Use this when looking at a specific expiry date and want to see the chains for that expiry. Do not use this for upcoming earnings dates/calendars or analyst-rating actions. Open-interest interpretation: - Open Interest Changes need confirmation from the next morning's updated open-interest data. - Do not assume option volume equals open interest or new positioning. Volume can suggest possible activity, but it can include opening, closing, spread, roll, hedge, or same-day trades that do not become new OI. - When OI confirmation is unavailable, describe volume-over-OI or high-volume activity as unconfirmed until the next OI update.

get_company_info

ChatGPT
Get company profile and metadata for a ticker.

get_correlations

ChatGPT
Get stock correlation pairs based on historical price movement to find similarly performing or inversely moving stocks. Use this when the user wants statistically similar or opposite movers, hedging candidates, or pair-trade idea generation from one or more seed tickers. Do not use this for real-time price action, intraday chart analysis, fundamentals, options flow, or catalyst/event lookups. When to use examples: "What names are most correlated with NVDA?", "Show me inversely correlated stocks to XLE", "Find pair-trade candidates for AAPL and MSFT." When not to use examples: "What is AAPL doing right now?", "Show me TSLA options sweeps", "What are this week's earnings catalysts for semis?"

get_crypto_ohlc_candles

ChatGPT
Get OHLC candle data for a crypto pair. Use this for crypto price action, historical candles, intraday crypto bars, and OHLCV analysis on pairs like BTC-USD or ETH-USD. Returns pair, open, high, low, close, volume, start_time, and timestamp.

get_crypto_pair_state

ChatGPT
Get the latest state for a crypto pair, including 24-hour OHLCV data. Use this for current crypto pair snapshots, latest 24h open/high/low/close/volume, or quick pair state checks for pairs like BTC-USD or ETH-USD. Returns pair, date, open_24h, high_24h, low_24h, close_24h, volume_24h, and timestamp.

get_dark_pool_trades

ChatGPT
Screen and rank off-exchange (dark pool/TRF) stock prints by size, premium, market-cap, and session context. Use this for dark-pool block-flow discovery and filtering, not listed-options contract activity. Supports session scoping (market_times) and relative-size filters versus daily/30-day volume. Results can be opened at https://unusualwhales.com/large-trades?tab=dark-pool with matching query params.

get_dark_pool_volume_price_group

ChatGPT
Get per-price-level volume concentration for a single ticker on the latest market session, including stock dark-pool/regular volume and options call/put volume at each price. Use this for price-level concentration and support/resistance context on one symbol, not for scanning many tickers or listing individual dark-pool prints.

get_earnings_history

ChatGPT
Get earnings history for a ticker with reported EPS, estimated EPS, surprise amount, surprise percentage, report date, and report timing (pre/post market). Use this for earnings surprise analysis, EPS trends, and beat/miss history.

get_earnings_report

ChatGPT
Get earnings call transcript text for a company ticker. Use this when the user asks for transcript content, management commentary, prepared remarks, or Q&A excerpts. Provide both quarter and year to target a specific period; if either is missing, returns the most recent transcript. Do not use this for upcoming earnings dates/calendars or analyst-rating actions.

get_earnings_screener

ChatGPT
screen and sort corporate earnings performance by tracking reported versus estimated earnings per share (EPS). It allows for rapid analysis of earnings surprises—both in absolute value and percentage—while organizing data by report dates and timing. By focusing on these core performance metrics, the tool helps identify significant market-moving events and historical trends in analyst accuracy. order_by and order_direction are optional. If order_by is omitted, no explicit user-requested sort is applied. If order_by is provided without order_direction, the downstream defaults to descending order. Supports filtering by min_<field> / max_<field> on any numeric or date field and by tickers for a specific symbol list. Combine multiple criteria in a single call instead of issuing repeated ranked calls.

get_extended_technical_indicator

ChatGPT
Get a technical indicator time series for any ticker, including international stocks, OTC, and others that may lack intraday candle data. Use this as a fallback when get_ticker_indicator_series returns empty data, or for daily/weekly indicators with long history (20+ years). Supports an extended technical indicator function set covering 50+ indicators.

get_flow_alert_rules

ChatGPT
Get available alert rule definitions.

get_flow_alerts

ChatGPT
Screen for options flow alert hits generated by predefined unusual-activity rules. Covers repeated-hits/fill-pattern clusters, floor trades by market-cap bucket, sweeps-followed-by-floor, volume-over-OI, low-historic-volume floor, and OTM earnings floor. Best for rule-triggered event discovery and filtering, not for full raw tape reconstruction or every individual print. Open-interest interpretation: - Open Interest Changes need confirmation from the next morning's updated open-interest data. - Do not assume option volume equals open interest or new positioning. Volume can suggest possible activity, but it can include opening, closing, spread, roll, hedge, or same-day trades that do not become new OI. - When OI confirmation is unavailable, describe volume-over-OI or high-volume activity as unconfirmed until the next OI update. Time range defaults to the last 2 months. If newer_than is more than 2 months before older_than, it is clamped. Results can be opened at https://unusualwhales.com/option-flow-alerts with matching query params.

get_flow_per_expiry

ChatGPT
Get aggregated option flow for a ticker grouped by expiration date for the last trading day. Returns call/put premium, ask-side and bid-side premium, volume, OTM volume/premium, and trade counts per expiry. Use this for expiry-level totals. Do not pair it with get_flow_per_strike as if those strike rows belong to one expiry. get_flow_per_strike sums every expiration at each strike. This tool has no date argument and only returns the last trading day. For ticker-day Call Ask, Call Bid, Put Ask, and Put Bid volume on a historical date, use get_flow_per_strike with date and sum the side volume fields. Use this for expiry-level flow concentration and directional premium comparisons, not for individual trade tape prints.

get_flow_per_strike

ChatGPT
Get aggregated option flow for a ticker grouped by strike for a trading day. Returns call/put premium, ask-side and bid-side premium, volume, trade counts, timestamp, and ticker per strike. Each row is one strike. Call and put premium, volume, and trade counts on that row sum every expiration for that strike on the given date. There is no expiry filter. Do not present these strike totals as a single expiration, such as the earnings-week or 0DTE expiry. For ticker-day Call Ask, Call Bid, Put Ask, and Put Bid volume or premium, sum call_volume_ask_side, call_volume_bid_side, put_volume_ask_side, and put_volume_bid_side across every strike row, and do the same for the matching premium fields. Pass date for a historical trading day. For expiry-level totals, use get_flow_per_expiry. For strike-level prints limited to one expiration, use get_option_trades with expiry_dates. Use this for strike-level flow concentration and directional premium comparisons, not for individual trade tape prints.

get_fundamental_breakdown

ChatGPT
Get filing-based fundamentals for a ticker, including earnings, revenue, cash flow, dividends, EPS, balance sheet trends, and revenue breakdowns by product or geography. Use this for company financial statement analysis and medium/long-term fundamental context. Each rev_breakdown row has period_months, the number of months its value covers. 3 is a quarter, and a 10-K row with 3 holds the fiscal fourth quarter. 12 is the full fiscal year. 6 and 9 appear only with period all. null means the value is a count at a point in time, such as the number of stores, or that the row was stored before period_months existed. Each rev_breakdown row also has chart: "product" or "region" when the row is part of the breakdown chosen for that chart, null otherwise. A filing often reports several overlapping breakdowns and subtotals next to their parts, so summing all rows double counts. For a breakdown of a report's revenue, use the rows with the same chart, report_date and period_months, labelled by chart_member. Do not use this for real-time price action, intraday options flow, or event-calendar style upcoming catalysts.

get_gex_heatmap

ChatGPT
Gamma, charm and vanna exposure for one ticker as an interactive strike by expiry heatmap, with per-strike totals, the call wall, put wall, gamma flip and gamma magnet. Use this for any question about GEX, dealer gamma, where the walls or flip are, or which strikes pin a stock. Based on open interest for the requested market date (default the latest session). For SPX, note that spot GEX is model based.

get_gex_levels

ChatGPT
Get a ticker's key gamma-exposure (GEX) price levels for a market date: call_wall, put_wall, gamma_magnet, gamma_flip, and nearby_flips. This is the tool for GEX Heatmap Call Wall / Put Wall / Gamma Flip questions, including Directionalized Volume readings. call_wall is the strike above spot with the largest positive net gamma (resistance). put_wall is the strike below spot with the largest positive net gamma (support). gamma_magnet is the strike with the largest-magnitude net gamma. gamma_flip is the interpolated price nearest spot where net dealer gamma crosses zero. source selects the exposure basis: vol is directionalized volume from the day's ask/bid sided flow (default, updates through the session); oi is open interest. time is when the exposure snapshot behind those levels was calculated. There is no premarket, clock time, or expiry argument. Do not present these levels as premarket walls or as 0DTE walls. If the user asks for a specific time of day, quote time and say this tool cannot return a snapshot at that clock time. Do not use get_options_chain or get_greek_exposure_by_strike to invent these levels. Use this tool instead. For a full per-strike GEX profile after you have the levels, use get_greek_exposure_by_strike. For the largest Call/Put Gamma bar on one expiration (Largest GEX by Strike & Expiry), use get_greek_exposure_by_strike_expiry. The response names the ticker it was computed for. When you have asked about more than one ticker, check that field against the ticker you asked for before quoting any level, and re-read the strikes against that ticker's spot price: walls or a flip far away from spot mean you are holding another ticker's rows. Do not copy SPX or SPY walls onto ES, /ES, or E-mini futures. This tool does not compute ES futures levels. The ticker ES is the listed equity, not E-mini S&P 500 futures. Those equity walls sit near the stock price, not near the SPX index. For an ES futures price snapshot, use get_futures_indices with type indices-futures.

get_greek_exposure_by_expiry

ChatGPT
Get a ticker's Greek exposure grouped by option expiry for a market date, including call and put gamma, delta, charm, vanna, and DTE values. Use this for current or historical ticker-level gamma exposure (GEX) broken down by expiration date. The response names the ticker it was computed for. When you have asked about more than one ticker, check that field against the ticker you asked for before quoting any level, and re-read the strikes against that ticker's spot price: walls or a flip far away from spot mean you are holding another ticker's rows.

get_greek_exposure_by_strike

ChatGPT
Get a ticker's Greek exposure grouped by strike price for a market date, including call and put gamma, delta, charm, and vanna values. Use this for current or historical ticker-level gamma exposure (GEX) broken down by option strike. This returns the per-strike profile, not named Call Wall / Put Wall / Gamma Flip levels. For those GEX Heatmap or GEX levels, use get_gex_levels. The response names the ticker it was computed for. When you have asked about more than one ticker, check that field against the ticker you asked for before quoting any level, and re-read the strikes against that ticker's spot price: walls or a flip far away from spot mean you are holding another ticker's rows.

get_greek_exposure_by_strike_expiry

ChatGPT
Get a ticker's Greek exposure grouped by strike price for a specific option expiry and market date, including call and put gamma, delta, charm, vanna, and DTE values. Use this for current or historical ticker-level gamma exposure (GEX) by strike within one expiration date, including Largest GEX by Strike & Expiry for a chosen expiry. Do not use this for session-wide GEX Heatmap Call Wall / Put Wall / Gamma Flip; use get_gex_levels for those. The response names the ticker it was computed for. When you have asked about more than one ticker, check that field against the ticker you asked for before quoting any level, and re-read the strikes against that ticker's spot price: walls or a flip far away from spot mean you are holding another ticker's rows.

get_greek_exposure_by_ticker

ChatGPT
Get a ticker's historical daily Greek exposure, including call and put gamma, delta, charm, and vanna values. Use this for ticker-level gamma exposure (GEX) or dealer Greek exposure over a date range. Do not use this for Call Wall, Put Wall, Gamma Flip, or GEX Heatmap levels; use get_gex_levels instead. The response names the ticker it was computed for. When you have asked about more than one ticker, check that field against the ticker you asked for before quoting any level, and re-read the strikes against that ticker's spot price: walls or a flip far away from spot mean you are holding another ticker's rows.

get_greek_flow

ChatGPT
Get a flow group's minute-by-minute greek flow for a market day, including delta flow, vega flow, call/put premium, volume, and transaction counts. Use this for intraday delta and vega flow trends across thematic or sector flow groups such as airline, bank, semi, mag7, technology, energy, or financial services.

get_greek_flow_by_expiry

ChatGPT
Get a flow group's minute-by-minute greek flow for a specific option expiry and market day, including delta flow, vega flow, call/put premium, volume, and transaction counts. Use this for intraday delta and vega flow trends by expiry across thematic or sector flow groups such as airline, bank, semi, mag7, technology, energy, or financial services.

get_greek_flow_by_ticker

ChatGPT
Get a ticker's minute-by-minute Greek flow for a market day, including total and directional delta and vega flow, OTM flow, volume, and transaction counts. Use this for intraday delta and vega flow trends for a specific ticker such as SPY, AAPL, TSLA, or NVDA. The response names the ticker it was computed for. When you have asked about more than one ticker, check that field against the ticker you asked for before quoting any figure.

get_historic_chains

ChatGPT
Get daily historical time-series for a single option contract, including volume, open interest, OI deltas, OHLC price fields, and IV. Use for contract-specific trend and delta questions (for example, largest OI increase over the last N days). Open-interest interpretation: - Open Interest Changes need confirmation from the next morning's updated open-interest data. - Do not assume option volume equals open interest or new positioning. Volume can suggest possible activity, but it can include opening, closing, spread, roll, hedge, or same-day trades that do not become new OI. - When OI confirmation is unavailable, describe volume-over-OI or high-volume activity as unconfirmed until the next OI update.

get_implied_volatility_term_structure

ChatGPT
Get the implied volatility term structure for a ticker on a market date. Returns each option expiration's volatility, implied move, implied move percentage, and days to expiration. Use this to compare near-term and longer-dated implied volatility or identify contango and backwardation in a ticker's option volatility curve.

get_income_statement_screener

ChatGPT
provides granular filtering and sorting capabilities for corporate earnings data across key financial metrics, including revenue, operating expenses, and profitability indicators like EBIT and EBITDA. It enables users to analyze specific fiscal periods by comparing net income, debt expenses, and R&D investments to evaluate a company's financial health and operational efficiency, and to identify of trends in both top-line growth and bottom-line performance. Supports filtering by min_<field> / max_<field> on any numeric or date field and by tickers for a specific symbol list. Combine multiple criteria in a single call instead of issuing repeated ranked calls.

get_income_statements

ChatGPT
Get detailed income statement data for a ticker, including revenue, cost of revenue, gross profit, operating income, EBIT, EBITDA, net income, R&D expenses, SG&A, depreciation & amortization, interest income/expense, tax expense, and comprehensive income. Use this for deep income statement analysis beyond what get_fundamental_breakdown provides.

get_insider_activity_by_ticker

ChatGPT
Get all known SEC insiders associated with a ticker, including insider CIK, name, slug, person flag, and logo URL when available. Returns the same data as the public API /api/insider/{ticker} endpoint.

get_insider_sector_flow

ChatGPT
Get aggregated SEC Form 4 insider buy and sell flow for a sector by trading date. Use this to compare insider buying and selling trends across a market sector.

get_insider_ticker_flow

ChatGPT
Get aggregated SEC Form 4 insider buy and sell flow for a ticker by trading date. Use this to inspect insider buying and selling trends for one company. Returns the same data as the public API /api/insider/{ticker}/ticker-flow endpoint.

get_insider_transactions

ChatGPT
Get grouped SEC Form 4 insider trades with filters for reporter role, transaction type, trade size/value, dates, watchlists, and company fundamentals. Results group related transactions from the same filing together and include the transaction count and underlying trade IDs when available. Returns trades matching all provided filters; omit filters to broaden results.

get_institution_holdings

ChatGPT
Get ticker-level 13F holdings for a single institution, plus optional activity and holdings breakdown metadata. Use this when the user asks for what one institution holds (by institution name/CIK/ticker), position-level filters, or institution-specific holdings activity. Do not use this for searching institutions broadly or asking who owns a ticker; use get_institutions for those cases.

get_institutional_ownership_by_ticker

ChatGPT
Get institutional owners of a ticker from 13F filings. Use this when the user asks which institutions own a ticker, how ownership changed, or wants owners filtered by report date, institution tags, or position metrics. Do not use this to inspect the holdings of one institution; use get_institution_holdings instead.

get_institutions

ChatGPT
Search or list 13F institutions by name or CIK. Use this for broad institution lookup. For institutions that own a ticker, use get_institutional_ownership_by_ticker. For the holdings of one institution, use get_institution_holdings.

get_market_etf_tide

ChatGPT
Get ETF-holdings options Market Tide data for a current or past market date. Unlike get_market_tide, this is based only on options activity of the holdings of the specified ETF. Returns timestamped net_call_premium, net_put_premium, net_volume, and underlying_price. Use ticker to select the ETF and date for a historical trading date.

get_market_events

ChatGPT
Get economic calendar events including earnings, Fed events, and macro data releases. Use this for date-scoped market event calendar queries. Do not infer chairs, speakers, or officials from training knowledge. Do not use this for ranked earnings screens; use get_upcoming_earnings for that workflow. Each event includes time (UTC) and time_local (weekday, date, and clock time in the user's timezone). When presenting events to the user, copy the weekday and clock time from time_local. Do not infer weekdays from the UTC date.

get_market_map_chart

ChatGPT
Renders an interactive Market Map bubble chart: one bubble per optionable ticker, coloured by sector, positioned by any two metrics and sized by a third. Use this whenever the user wants to see or visualize the market map, a heat map of the market, or how a whole universe of tickers compares on two metrics at once (for example implied volatility vs realized volatility, 1-month vs 1-year change, or percent change vs option volume). Only tickers with meaningful call and put volume are included.

get_market_seasonality

ChatGPT
Get historical monthly seasonality statistics for SPY, QQQ, IWM, and market sector ETFs. Use this to compare average, median, minimum, and maximum returns and positive-month frequency by calendar month. Do not use this for live market conditions, individual stocks, or daily seasonality curves.

get_market_sector_etfs

ChatGPT
Get the current trading day's SPDR sector ETF statistics for SPY and the major sector ETFs. Returns ticker, full_name, open, high, low, last, prev_close, prev_date, stock volume, marketcap, 52-week range, option volume averages, call/put volume, bullish/bearish premium, and call/put premium. Use this for market overview sector ETF snapshots, sector-relative strength, and top-down market dashboard summaries.

get_market_sector_tide

ChatGPT
Get sector-level options Market Tide data for a current or past market date. Unlike get_market_tide, this is based only on options activity of companies in the specified sector. Returns timestamped net_call_premium, net_put_premium, and net_volume. Use sector to select the GICS sector and date for a historical trading date. For ETF-holdings tide, use get_market_etf_tide instead.

get_market_state

ChatGPT
Get the latest market-wide daily options snapshot for the most recent market-open date. Returns stable keys: date, call_volume, put_volume, call_premium, put_premium, put_call_ratio. Resolves to last_open trading date (not intraday bar data). If no persisted row exists for that date, returns fallback payload %{date, is_open} where is_open reflects current market-open status.

get_market_tide_chart

ChatGPT
Renders an interactive Market Tide chart showing market-wide net call premium, net put premium and net volume over time, overlaid with the SPY price. Use this whenever the user wants to see or visualize market tide, net premium flow, or overall market options flow. Timeframes are intraday lookbacks (10min, 30min, 1h) or market days (1, 2, 3, 7, 14, 30).

get_max_pain

ChatGPT
Get a ticker's max-pain level for each option expiry on a market date. Use this for max-pain questions by ticker/expiration.

get_midterms_ratings

ChatGPT
Get the latest midterms ratings summary from FEC stats for the upcoming election cycle.

get_month_performers

ChatGPT
Get stocks with the strongest historical performance for a calendar month. Use this to rank and filter tickers by monthly return statistics, data history, sector, index membership, and open interest. Do not use this for broad-market ETF seasonality across all months; use get_market_seasonality instead.

get_multi_trades

ChatGPT
Get detected multi-leg option strategy trades reconstructed from their individual legs. Use this for strategy-level flow analysis of spreads, condors, butterflies, calendars, diagonals, straddles, strangles, and other multi-leg structures — not for single-leg tape prints. Returns matching multi-leg trades sorted newest first with net premium, net greeks, strikes, DTE, leg count, max profit/loss, and strategy classification. Results must satisfy every filter you provide; omit filters to broaden results. Queries are limited to a 24-hour range. If both time bounds span more than 24 hours, newer_than is clamped to 24 hours before older_than. Results can be opened at https://unusualwhales.com/multi-leg-flow with matching query params.

get_open_interest_changes

ChatGPT
Screen and rank option contracts by open-interest behavior (OI build/accumulation, OI change %, consecutive OI increase days). Best for broad filters and top-contract discovery, not single-contract date-by-date history. Open-interest interpretation: - Open Interest Changes need confirmation from the next morning's updated open-interest data. - Do not assume option volume equals open interest or new positioning. Volume can suggest possible activity, but it can include opening, closing, spread, roll, hedge, or same-day trades that do not become new OI. - When OI confirmation is unavailable, describe volume-over-OI or high-volume activity as unconfirmed until the next OI update. Results can be opened at https://unusualwhales.com/flow/chain_oi_changes with matching query params.

get_option_stance_ranking

ChatGPT
Rank a single ticker's option contracts by how well their mechanics fit a chosen trade STANCE, across all recent expiries and strikes. Returns a 0-5 fit_score plus named 0-1 sub-scores (iv_regime, greeks_fit, dte_fit, liquidity, earnings_timing), a rank_metric, and a plain-language explanation per contract, plus a context header (stock price, IV rank, IV percentile). This is DESCRIPTIVE analysis of greeks / IV context / liquidity mechanics — NOT trade advice or a recommendation. Present fit_score as "stance fit", surface the returned disclaimer, and never tell the user to buy or sell a specific contract. Use for questions like "which options fit selling premium on RBLX" or "good LEAPs on MSFT". Any stance threshold can be overridden by passing the matching filter (e.g. max_dte). Pass option_symbol to score ONE specific contract for the stance (e.g. "score NVDA 275 put for a directional buy") instead of ranking the chain — data then returns just that single scored contract, even off-profile.

get_option_trades

ChatGPT
Live options flow tape from Unusual Whales: individual option prints for the current session, newest first, rendered as an interactive table the user can filter by ticker, calls or puts, side and minimum premium. Use this for any question about today's option flow, unusual options activity, sweeps, large premium prints or what is being bought on a ticker. Filters combine. Premium and size filters apply to aggregated prints when add_agg_trades is true (the default). On a free Unusual Whales plan the tape is delayed two trading sessions and the result says so.

get_options_chain

ChatGPT
Get the options chain for a ticker and optional expiry, including strikes, IV, and greeks. Use this for chain structure analysis, contract discovery, and strike/expiry selection. If you need the current or most recent stock price before choosing how wide the strike range should be, call get_company_info first with the same ticker, then use that price context to choose a larger limit up to 500. Do not use this for historical daily open-interest deltas by contract, full trade tape analytics, or non-options fundamentals. Open-interest interpretation: - Open Interest Changes need confirmation from the next morning's updated open-interest data. - Do not assume option volume equals open interest or new positioning. Volume can suggest possible activity, but it can include opening, closing, spread, roll, hedge, or same-day trades that do not become new OI. - When OI confirmation is unavailable, describe volume-over-OI or high-volume activity as unconfirmed until the next OI update.

get_options_screener

ChatGPT
Screen today's option contracts by volume, open interest, premium, implied volatility, days to expiration, strike, stock price and fill side, rendered as an interactive table the user can re-sort and refine. Use this to find the most active or unusual contracts, contracts where volume exceeds open interest, or the hottest contracts on a ticker. Rows are one contract per line with session volume, OI, total premium, IV, ask and bid side volume split and trade count. On a free Unusual Whales plan results are delayed two trading sessions.

get_politics_flow

ChatGPT
Get congressional trading flow. Filter by ticker, politician attributes, buy/sell transaction type, transaction or disclosure date ranges, trade size, company sector or industry, market cap, and unusual-activity tags. Results can be opened at https://unusualwhales.com/politics?view=flow with matching query params.

get_politics_overview

ChatGPT
Get a high-level overview of congressional trading activity. Returns a most_held list of stocks with high congressional ownership. Returns a daily trade volume stats for buying and selling with high/low estimates

get_prediction_insiders

ChatGPT
Get potential insider-style activity in prediction markets. Use this when the user wants suspicious, likely informed, or potentially early prediction market trading activity. This tool does not take filters.

get_prediction_market

ChatGPT
Get full details for a single prediction market by asset ID, including question, pricing, volume, and other market metadata. Use this after you already know the exact market to inspect. Do not use this for discovery or ranking workflows; use the other prediction market tools first. For bid/ask order-book liquidity, spread, and depth, use get_prediction_market_liquidity.

get_prediction_market_liquidity

ChatGPT
Get order-book liquidity for a single prediction market by asset ID, including bids, asks, best bid/ask, mid price, spread, and bid/ask liquidity. Use this after you already know the exact market asset ID. Do not use this for market discovery, trader lookup, or general market metadata; use get_prediction_market for those.

get_prediction_smart_money

ChatGPT
Get profitable prediction market traders, optionally filtered by category and price range. Use this for leaderboard-style queries about high-performing prediction accounts rather than individual market details.

get_prediction_unusual_markets

ChatGPT
Get prediction markets with unusual recent trading activity, optionally filtered by category. Use this to discover active or anomalous markets before drilling into one market or trader. Results are paginated with limit and offset. Default limit is 25.

get_prediction_user

ChatGPT
Get a prediction market user profile by user or wallet ID. Use this after identifying a specific trader from whale, smart money, or insider results and you need the account profile.

get_prediction_whales

ChatGPT
Get large prediction market traders ("whales"). Use this for leaderboard-style queries about the biggest prediction accounts, not for a specific market or user profile. This tool does not take filters.

get_price_change_per_month_per_year

ChatGPT
Get a ticker's realized price change for each historical month and year. Use this for month-by-month returns with open and close prices across multiple years. Do not use this for aggregated calendar-month averages; use get_average_return_per_month_by_ticker instead.

get_public_api_docs

ChatGPT
Retrieves the raw Unusual Whales Public API OpenAPI documentation. Use this when the user asks about public API endpoints, endpoint parameters, response fields, or API examples. Users create and manage API tokens at https://unusualwhales.com/dashboard/api. Websocket channels are documented at https://api.unusualwhales.com/docs/websocket. Search with endpoint-related terms such as flow alerts, dark pool, or gex. Multi-word queries match endpoints that contain those terms in the path, summary, description, or tags; the words do not need to appear as one contiguous phrase. Search results include docs_url for the relevant API documentation page; include that URL in your answer when explaining an endpoint.

get_recent_congress_trades

ChatGPT
Get the latest trades made by members of Congress. Filter by ticker or return trades transacted on or before a given date.

get_recent_crypto_whale_trades

ChatGPT
Get recent large crypto whale trades across all crypto pairs. Use this for recent crypto whale prints, large exchange trades, pair-level whale trade activity, and trade tape-style crypto whale lookups. Returns pair, symbol, exchange, price, size, total value, side, and whale trade timestamp.

get_short_data_by_ticker

ChatGPT
Get historical short availability and borrow-rate data for a single ticker. Returns rebate rate, fee rate, short shares available, company name, symbol, and timestamp. Use this for ticker-specific short borrow availability and rate history, not for screening many tickers by short interest or days to cover.

get_short_screener

ChatGPT
Screen short interest and float data across tickers using filters. Use this for short-interest discovery, days-to-cover filters, percent-of-float screens, borrow fee/rebate rate filters, and short-shares-available screens. Do not use this for intraday price action, options tape flow, or single-ticker historical short-interest timelines.

get_short_volume_ratio_by_exchange

ChatGPT
Get historical short volume data broken down by exchange for a single ticker. Returns date, exchange name, market center, short volume, and total volume. The default range is the latest 2 years and requests wider than 5 years are clamped. Use this for ticker-specific short volume by exchange, not for borrow availability, rebate rates, or aggregate short volume ratio history.

get_short_volume_ratio_by_ticker

ChatGPT
Get historical short volume and short volume ratio data for a single ticker. Returns market date, short volume, total volume, and short volume ratio for the latest 500 records. Use this for ticker-specific short volume ratio history, not for borrow availability, rebate rates, or short-interest screening.

get_stock_chart

ChatGPT
Displays a stock price chart with historical prices and options-implied price moves. Supports comparing two tickers.

get_stock_screener

ChatGPT
Screen stocks by price, option activity, volatility, earnings, and company filters. Returns prices, option volume and premium, fixed-horizon implied volatility, IV ranks and percentiles, realized volatility, GEX, price performance, earnings and share-count growth, dividends, insider volume, and bid/ask quotes. Use this for multi-ticker discovery, ranking, and filtering across the stock universe. Do not use this for single-ticker intraday candles, tape-level prints, or per-contract option-chain detail. For advanced filtering pass a query language expression in query; stock_screener_query_language returns the current fields, operators, and scopes. The expression is combined with any structured filters. Query examples: - Volume based gamma exposure at least twice the magnitude of OI based gamma exposure: where abs(gex_gamma_per_one_percent_move_oi) > 0 and abs(gex_gamma_per_one_percent_move_vol) >= abs(gex_gamma_per_one_percent_move_oi) 2 - Price at least two ATRs above the 20 day EMA: where atr_14 > 0 and price - ema_20 >= atr_14 2 - Call volume at least twice put volume: where put_volume > 0 and call_volume >= put_volume 2 - Call to put volume ratio at least 10 or at most 0.1: where call_volume > 0 and put_volume > 0 and (call_volume / put_volume >= 10 or call_volume / put_volume <= 0.1) - Ratio of 7 day IV to 30 day IV at least 1.5 or at most 1 / 1.5: where iv7d > 0 and iv30d > 0 and (iv7d / iv30d >= 1.5 or iv7d / iv30d <= 1 / 1.5) - Price in the top 20% of its 52 week range on a logarithmic scale: where week_52_low > 0 and week_52_high > week_52_low and price > 0 and price <= week_52_high and log(price / week_52_low) / log(week_52_high / week_52_low) >= 0.8 - Absolute log return since the previous close at least two approximate daily standard deviations using 30 day IV: where change > -1 and iv30d > 0 and abs(ln(1 + change)) >= 2 iv30d sqrt(1 / 251) - The same daily return screen using 7 day IV: where change > -1 and iv7d > 0 and abs(ln(1 + change)) >= 2 iv7d * sqrt(1 / 251) - Distance from the 20 day EMA at least the 7 day expected move: where implied_move_7 > 0 and abs(price - ema_20) >= implied_move_7 - Momentum excluding the latest month above 10%, with RSI at or below 30: where one_year_close > 0 and ((one_month_close / one_year_close) - 1) > 0.10 and rsi_14 <= 30 The logarithmic position is 0 at the low and 1 at the high. Equal steps represent equal proportional price moves. The momentum example combines a Gray and Vogel inspired momentum measure with an RSI pullback condition. one_month_close and one_year_close are the latest regular closes on or before one calendar month and one calendar year before the row date. The one_year_close > 0 guard keeps the denominator positive. This filter is not the full Quantitative Momentum strategy. Gamma-dominance flips: aggregate gamma provides a view into trader sentiment over short timeframes because near-the-money gamma tends to be highest in the closest expiries. Bearish flip from call gamma-dominance to put gamma-dominance: min_oi 50000, max_gex_perc_change -1, max_gex_net_change 0. Equivalent query: where open_interest >= 50000 and gex_perc_change <= -1 and gex_net_change <= 0. Bullish flip from put gamma-dominance to call gamma-dominance: min_oi 50000, max_gex_perc_change -1, min_gex_net_change 0. Equivalent query: where open_interest >= 50000 and gex_perc_change <= -1 and gex_net_change >= 0. A minimum open interest of 50,000 screens for relatively active names. gex_perc_change is (current net gamma - previous net gamma) / previous net gamma. A value below -1 indicates a sign change in either direction. max_gex_net_change 0 selects the downward direction and min_gex_net_change 0 selects the upward direction. These thresholds are inclusive. A strict flip has gex_perc_change < -1. Percentage change is null when previous net gamma is zero, and gex_ratio is null when call gamma is zero. Decimal values are strings. Fractional returns use 0.05 for 5 percent. Missing metrics are null. Earlier dates return stored snapshots with null bid/ask quotes. Defaults to 10 …

get_support_info

ChatGPT
Gets relevant FAQ, support, billing, subscription, product, and tutorial excerpts from Unusual Whales based on the user's question. Use this for website/UI questions, subscription or Pro plan questions, AI chat model-selector questions (including dollar-sign cost indicators next to models such as Barracuda, Mako, Beluga, and Orca), and other product-support questions. The question is submitted to a vector search over help articles and FAQs and returns matching excerpts. It does not invent policy. If the returned excerpts do not actually answer the user's question, say that you cannot confirm the answer from the available docs and direct the user to message support@unusualwhales.com. Do not invent chart toolbar controls such as a gear icon, three-dot menu, eye icon, status line, or OHLC toggle unless those exact controls appear in the returned excerpts. Charting study excerpts describe study settings such as Period. They do not document how to hide the OHLCV or date table on /charting. Users create and manage public API tokens at https://unusualwhales.com/dashboard/api. When the user asks for a new API key, send them to that page. Do not invent a Settings or account menu path. Never treat AI model names as stock tickers and never link them as /stock/{name}.

get_ticker_candles_by_range

ChatGPT
Get intraday OHLC candles for a ticker at 1m, 5m, 10m, 15m, 30m, 1h, or 4h. Supports date range filtering with interval (start anchor), end_interval (end anchor), and session (regular, premarket, postmarket). Use relative date anchors only for interval and end_interval: 1d, 5d, 2w, 1m, 3m, 1y, or ytd. Do not pass YYYY-MM-DD dates. end_interval is an independent upper bound relative to now, not a duration after interval. Example: interval=5d and end_interval=1d means from 5 days ago through the end of yesterday. For 1m and 5m candles, the start anchor is adjusted to market-open day boundaries, so use end_interval to cap the right side of the window. Returns payload with data, levels, one_min_data, and is_index. Each candle in data has these fields (prices are numbers, not strings): - o: open - h: high - l: low - c: close - start: candle start time (ISO 8601, UTC) - end: candle end time (ISO 8601, UTC) - vol: volume traded during the candle - tv: cumulative session volume at the candle end - market: session, "r" (regular), "pr" (premarket), or "po" (postmarket) - ticker: symbol Returns up to 2,500 bars; for index symbols without required access, returns empty data. Use this for intraday chart windows and bar-by-bar analysis (including weekly highs/lows, gaps, support/resistance context), not for long preset close-only windows.

get_ticker_close_prices

ChatGPT
Get close-only price history for a ticker across preset timeframes: 1D, 1W, 1M, 3M, 1Y, 5Y, 10Y, and YTD. Use this for trend context over standard windows, not for custom intraday OHLC bars. Response shape depends on timeframe: 1D returns 1-minute close candles, 1W returns 10-minute close candles, and 1M returns 1-hour close candles; these data points include c, start_time, end_time, and market_time. 3M, 1Y, 5Y, 10Y, and YTD return daily close points with c and date. Successful responses include prev_close, market_time, and returns; 1D also includes outside_market_data, while the other presets include extra_data. When market_time is premarket, compare outside_market_data prices to the last regular-session close from data, not prev_close; prev_close is the prior trading day's close relative to the regular-session data window and may be one session older. Index symbols may require additional access; when denied, this tool returns empty data with a minimal payload.

get_ticker_indicator_events

ChatGPT
Count and list indicator-driven events from ticker candles (MA bounce/crossover/breakout-retest, indicator touch, and breach-then-reclaim for MA/ATR levels/Bollinger). Use for 'how many times did X happen' questions, not full indicator value series. Use relative date anchors only for interval and end_interval: 1d, 5d, 2w, 1m, 3m, 1y, or ytd. Do not pass YYYY-MM-DD dates. end_interval is an independent upper bound relative to now, not a duration after interval. Example: interval=5d and end_interval=1d means from 5 days ago through the end of yesterday. For 1m and 5m candles, the start anchor is adjusted to market-open day boundaries, so use end_interval to cap the right side of the window. Provide event type to count (e.g., 'ma_bounce', 'ma_crossover', 'breakout_retest', 'indicator_touch', 'indicator_breach_reclaim').

get_ticker_indicator_series

ChatGPT
Compute indicator time series from ticker candles (SMA/EMA/ATR/ATR levels/RSI/MACD/Bollinger/VWAP/Stochastic/Williams %R/ADX-DI/Supertrend/Donchian/OBV/CMF). Use when the user wants indicator values over time, not event counts. Use relative date anchors only for interval and end_interval: 1d, 5d, 2w, 1m, 3m, 1y, or ytd. Do not pass YYYY-MM-DD dates. end_interval is an independent upper bound relative to now, not a duration after interval. Example: interval=5d and end_interval=1d means from 5 days ago through the end of yesterday. For 1m and 5m candles, the start anchor is adjusted to market-open day boundaries, so use end_interval to cap the right side of the window. Provide indicators to compute (e.g., ['sma', 'ema', 'atr', 'atr_levels', 'rsi', 'macd', 'bollinger', 'vwap', 'stochastic', 'williams_r', 'adx_di', 'supertrend', 'donchian', 'obv', 'cmf']).

get_ticker_lit_flow

ChatGPT
Get lit exchange stock trades for a single ticker on a trading day. Use this for ticker-specific listed exchange prints, tape timing, trade size, premium, NBBO, market-center, sale-condition, and consolidated-volume context. Do not use this for off-exchange/dark-pool prints or options contract flow. Results can be opened at https://unusualwhales.com/large-trades?tab=whale with matching query params.

get_ticker_ohlc_latest_or_date

ChatGPT
Get a HISTORICAL daily time series of ticker day-state rows for one symbol, one row per market-open day, ending at date (or the latest market-open date when omitted/invalid) and going back limit trading days (up to 500 ≈ ~2 years). This is the tool for historical and event-based (e.g. around past earnings) daily implied volatility: each row includes IV rank (iv_rank), interpolated IV implied move and volatility (implied_move_30/60, implied_move_perc_30/60, volatility_30/60), plus OHLC and options-flow metrics: call/put volume, call/put premium, bullish/bearish premium, net_premium, call/put open interest, total_open_interest, ask-side vs bid-side call/put volume, and rolling 3/7/30-day call/put volume averages plus 30-day OI averages. To study IV around a specific date (e.g. T-1 vs T+1 of an earnings print), request a window that spans it (use a recent date with a limit large enough to reach back to the event) and read the per-day rows. Use get_ticker_candles_by_range for intraday bars and get_ticker_close_prices for standard long-horizon presets. Premium users can request up to 500 rows; non-premium users are capped to 5 rows server-side. Interpolated IV (implied_move_/volatility_) older than the last ~5 open days requires a super plan; iv_rank has no such limit.

get_ticker_performances

ChatGPT
Get cross-sectional ticker performance snapshots with benchmark comparison rows, sortable by return windows and filterable by sector/market cap/watchlists. Use this for relative performance comparisons across many symbols or focused screens with return-based filters. Do not use this for intraday candles, tape-level flow, or contract-level options data.

get_trading_states

ChatGPT
Get recent stock trading state events. Returns trading, pause, halt, and quote-only-period events from the latest available trading-state window, sorted newest first. Each row may include symbol, state, reason, executed_at, last_price, prev_close, volume, full_name, sector, and has_options. Use ticker_symbol to filter one or more comma-separated symbols, state to filter a specific trading state, and limit for result size.

get_trump_activity

ChatGPT
Get the latest social media posts and presidential schedule for donald trump.

get_upcoming_earnings

ChatGPT
Get upcoming earnings events with expected move context for a date range and optional ticker filter. Use this for near-term earnings calendar discovery and scheduling. Do not use this for historical earnings performance analysis, full fundamentals, or intraday/options flow activity.

get_yield_curve

ChatGPT
Get the latest U.S. Treasury yield curve snapshot.

open_unusual_whales

ChatGPT
Open the Unusual Whales app: a tabbed workspace with live options flow, the gamma exposure heatmap, the options screener and market tide. Use this when the user wants to browse or watch rather than ask a single question, for example 'open Unusual Whales', 'show me the flow tape for NVDA' or 'pull up the GEX dashboard'. Pass tab and ticker to land on the right view. For a specific data question, call the individual tools instead.

query_internal_knowledge

ChatGPT
Retrieves internal knowledge of stock, options, and predictions market trading from Unusual Whales based on your question. This function gets vector search results from Unusual Whales tutorials and help articles that may contain information relevant to determining how to answer a trading or market-data question. Do not use this for product, billing, subscription, AI chat model-selector, or website UI support questions; use get_support_info instead.

search_option_contracts

ChatGPT
Search option contracts by compact OCC symbol (for example, AAPL250214C00180000) or description to resolve a specific contract identifier before using contract-level tools.

search_tickers

ChatGPT
Search equities/ETFs/indices by company name or symbol to resolve the correct ticker before running other data tools. If a company-name search returns no results, do not rely on prior knowledge to determine whether the company is publicly traded.

settings.read

ChatGPT
Read the user's Unusual Whales app settings: default tab, default ticker, minimum premium and auto-refresh.

settings.update

ChatGPT
Update one or more Unusual Whales app settings. Pass the changed fields under set; unchanged fields are preserved.

stock_screener_query_language

ChatGPT
Get the stock screener query language used by the query argument of get_stock_screener and /api/screener/stocks. Returns the EBNF grammar, syntax notes, examples, function argument counts, supported fields, aliases, types, descriptions, keywords, operators, functions, scopes, and watchlist names. Use this when writing a stock screener query expression for get_stock_screener.

Capabilities

InteractiveWrites

Example Prompts

Click any prompt to copy it.

App Stats

101

Tools

3

Prompts

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily