MCP App Store
by KeenEthics
Options Analysis Suite icon

Options Analysis Suite

By Options Analysis Suite, LLC

Get New App Alerts

Overview

Options Analysis Suite lets users research options markets and review their synced analysis data in ChatGPT. It supports implied volatility, Greeks, options chains, gamma exposure and regime analysis, FINRA and SEC market-structure data, company fundamentals, pricing-analysis history, FFT scanner results, AI Compute Suite runs, and portfolio and risk snapshots. All tools are read-only and return analyst-oriented summaries for research workflows.

Tools

compute_black_scholes

ChatGPT
Price a European option with Black-Scholes from explicit inputs and return the price, all seventeen Greeks, the expected move and the risk-neutral probability of finishing in the money. Greeks are published in the same convention as the commercial API (greekConvention: "dapi"): vega, rho, epsilon and phi per 1 percentage point; theta, charm and color per day; veta per percentage point per day; dcharmDvol per day per unit of volatility; vanna, vomma, zomma and ultima per unit of volatility; delta, gamma, speed and lambda unscaled. The five time Greeks are what one day of time passing does (greekTimeConvention: "time-passing"): theta the change in price (negative for a long option losing value), charm in delta, color in gamma and veta in vega; dcharmDvol is the change in that daily charm per unit of volatility, which is the day's change in vanna. The expected move is an at-the-money straddle scaled by 0.85, independent of the strike priced. The probability is N(d2) under the pricing measure, not a real-world probability. Supply exactly one of t (years) or daysToExpiry. Supply r and q, or a symbol so they are read from stored market data for the option's own tenor; they are never defaulted, and a symbol whose rate or yield cannot be resolved is refused with the reason. Volatility is a decimal (0.25 for 25%). Requires a Pro subscription or above. For the other pricing models, calibration and multi-model runs use the REST API or Python SDK; this tool is Black-Scholes only.

compute_scenario

ChatGPT
Reprice a multi-leg options strategy across spot moves, implied-volatility shocks and days elapsed, and return a P&L grid, the base position Greeks, and optionally how the strategy fits beside the positions you already hold. Legs are supplied in the call (up to ten: calls, puts and stock), or by strategyKey: a strategy the user sent from the Strategy page (listed by get_snapshot type "strategy"), whose symbol, legs, premiums, vols, rates and spot are read from the record with source "record" and the record's date, a value supplied in the call still winning. Spot and each leg's IV are taken as supplied, else resolved from the stored end-of-day snapshot and chain for the symbol with their source and date named; r and q are supplied or resolved for the symbol, never defaulted: each option leg prices at its own rate (legs[i].r), as the Strategy page prices each leg - a supplied r prices every leg, a strategy sent from the Strategy page gives each leg the rate the page priced it with (source "record"), and otherwise the leg reads the Treasury series matched to its own tenor, named in its source (the 3-month series, with a warning, when the matched series cannot be read); a leg keeps its rate across the whole grid (days elapsed age its life, never its rate), and inputs.r is the shortest option leg's, the strategy's one rate on the Strategy page; q comes from the symbol's stored dividend data (its trailing yield, else its stored dividend over spot), also for a recorded strategy; a request with an input that cannot be resolved is refused naming every missing field. Vol shocks are in vol points (0.20 plus 5 points is 0.25); days elapsed are on dayCount, and a leg whose time has elapsed is valued at its intrinsic, never through the pricer's one-minute floor. Default axes: spot -10, -5, -2, 0, 2, 5 and 10 percent; vol -5, 0 and 5 points; days 0, 7, 14 and the shortest leg's expiry. Cells are pnl[spotMove][ivShock][daysElapsed] in currency: signed quantity times the multiplier (100 per contract, 1 per share) against each leg's entry premium. A supplied or record entry premium carries impliedVol, the vol that premium implies at the leg's own model, and volGapPoints, that vol less the leg's in points; both are null with impliedVolReason when no vol prices the premium ("below-zero-vol-value", "above-max-vol-value") or when the premium sits on a stretch where vols are not told apart ("not-identifiable": a deep in-the-money American leg worth its intrinsic across many vols), and a premium equal to the leg's own price is its own vol with no gap. Past a point the answer warns, since the base P&L then carries a gap that is the premium disagreeing with the vol (a broker's IV snapshot can lag its quote), not a move. Greeks are published in the commercial API's convention (greekConvention: "dapi"), summed as signed quantity times 100 per option leg; a stock leg adds its shares to delta. The five time Greeks are what one day of time passing does to the position (greekTimeConvention: "time-passing"). Units: theta, charm and color per day; vega, rho, epsilon and phi per percentage point; veta per point per day; dcharmDvol per day per unit of volatility, not per point (divide by 100 for one point); vanna, vomma, zomma and ultima per unit of volatility, not per point (to read one per point divide by 100 for each order in volatility: vanna and zomma by 100, vomma by 10,000, ultima by 1,000,000); delta, gamma and speed unscaled. lambda is the position's own elasticity, delta times spot over the position's value, for a net-debit position, and null for a credit or flat one, where a percent of a negative or zero value means nothing. portfolioFit takes the positions you hold (up to 25 underlyings, 40 legs), resolved by the same rules: headline Greeks for held, candidate and combined by underlying, expiration and sector; the candidate's Pearson correlation with each held underlying over the last 60 common daily log returns (null with a reason below 40 observations, with no history, when the history could not be read, or with zero varianc…

get_activist_filings

ChatGPT
Get Schedule 13D/13G beneficial-ownership filings for a symbol. Default response prioritizes the latest above-threshold holder snapshot per filer and summarizes below-threshold amendments separately so current holders stay visible.

get_analysis_history

ChatGPT
Get the user's options pricing analysis history — past calculations run in the platform. Each result includes the model used (Black-Scholes, Heston, SABR, etc.), input parameters (spot, strike, volatility, DTE), computed option price, and Greeks. Includes calibration data and model-specific sensitivities when available. Default view collapses near-identical reruns from the same pricing sweep.

get_analysis_rollups

ChatGPT
Get pre-computed daily or weekly aggregates of the user's analysis activity per symbol. Default response returns compact rollup rows plus a cross-period summary of volatility, spot, and model usage trends.

get_analyst_data

ChatGPT
Get Wall Street analyst ratings, price targets, and consensus estimates for a symbol. Default response keeps the nearest forward estimate periods, price-target summaries, rating snapshot, summarized rating-history streaks, and recent rating changes.

get_company_profile

ChatGPT
Get company profile data for a symbol with a compact normalized default view. Returns sector, industry, market cap, float metrics, key identifiers, and a trimmed business description.

get_compute_runs

ChatGPT
Get the user's AI Compute Suite run history — portfolio-wide batch analyses across multiple pricing models. Default response returns compact run summaries, model-dispersion highlights, exposure levels, and representative position/model consensus summaries. Use view='detailed' to inspect per-model outputs for one matched run; detailed view only takes effect when exactly one run matches, and multi-run responses are always summarized.

get_congress_trades

ChatGPT
Get trades by members of Congress (Senate and House) and their spouses and dependents, from their STOCK Act periodic transaction reports. scope="symbol" (default) gives one company's: summary (transactions, purchases, sales, other, members, by chamber, first and last trade, last disclosed) over every transaction on file, and the newest trades first. scope="market" gives the trades first disclosed over the last days days of disclosures on file (1-365, default 30; an amended report re-listing an older trade is not new), of a chamber and kind: summary, topCompanies (the tickers traded most, with purchases, sales and members) and the newest disclosures first. Each trade: member with party on the trade date (caucus for an independent who caucuses with a party), chamber, seat (state, and district for the House) and label (e.g. D-CA-31), symbol (the company that traded under the ticker on the trade date; symbolFiled when the report named another ticker; null for a bond, fund or private stock, with the report's asset), assetType, type (Purchase, Sale (Full), Sale (Partial), Sale, Exchange), owner, amountRange (the report's range: text, min, max), tradeDate, disclosedDate (the first disclosure), disclosureLagDays, report (the filing's URL) and alsoInLaterReports. coverage gives the disclosures on file per chamber, tradesMeta how many are shown of how many, and congressNote the rules (ranges, amendments counted once, party by date, ticker matching by date). congressStatus says when none are on record.

get_custom_indicator_spec

ChatGPT
Get the format reference for custom indicator scripts on the Stock Charts page - the exact text the page's Copy-AI-prompt button gives a model, so you can write or convert an indicator the user pastes into the page. Call without a section for the index of fetchable sections (the whole reference is about 100 KB, over one answer's budget), then fetch sections by id: 'format.*' for the API, 'ta' for the technical-analysis library, 'examples' or one example, 'pineConversion' to convert Pine Script / ThinkScript / Python.

get_dark_pool_data

ChatGPT
Get FINRA OTC (dark pool / non-ATS) and ATS (Alternative Trading System) weekly trading statistics for a symbol. The view param controls the granularity: • view="summary" (default) — aggregate weekly OTC + ATS volume/trade trends with a compact summary + trend analysis. • view="dealers" — per-DEALER breakdown of OTC (non-ATS) activity. Top 15 MPIDs per week with participant name, shares, and trades. Answers "who is executing this flow off-exchange, off-ATS?" • view="venues" — per-VENUE breakdown of ATS activity. Top 15 dark-pool venues per week with MPID, venue name, shares, and trades. Answers "which dark pools are matching this ticker?" • view="all" — returns summary + dealers + venues in one payload. Larger — expect more token usage. Optional: weeks (1..260, default 12) narrows the history window for dealers/venues/all. High dark-pool activity can signal institutional accumulation or distribution; per-dealer and per-venue views surface who specifically is active.

get_dealer_positioning

ChatGPT
Get END-OF-DAY dealer positioning for a symbol from the most recent session on file, over the 0-60 day expiration window (get_options_snapshot and get_options_analytics_history report net GEX and DEX over ALL expirations, so they differ from these for the same session, and neither is wrong: Long-dated contracts carry large delta, so the two can differ even in sign (SPY 2026-09-29: net DEX -16,795,316,756 over all expirations against +16,246,461,968 over 0-60 days)): net GEX and DEX, the dealer regime, the gamma flip, the call wall and put wall (the call wall is the strike with the largest positive call gamma and the put wall the strike with the most negative put gamma (ties go to the lower strike; a side with no such strike leaves that wall null), and nothing orders them, so the put wall can sit above the call wall), the gamma magnet (largest absolute gamma strike), the 30-day expected move (as a decimal fraction of spot, and in dollars), and the top contributing strikes. Covers roughly 5,500 listed equities and ETFs. Positive net gamma means dealers hedge against moves and dampen them; negative means they hedge with moves and amplify them. dealerRegime is the sign of the 0-60 day net gamma interpolated at spot between the two strikes that bracket it (the nearest strike's gamma when spot is outside the strike range), not the sign of netGex and not which side of gammaFlip spot sits on; it can disagree with both (SPY on 2026-09-17: netGex -5.5 billion, spot 763.01 below the flip 764.97, regime positive), and only with fewer than two gamma-bearing strikes in that window is it the sign of netGex itself. The gamma flip here is a coarse-grid level from the stored snapshot with no search status or resolution; for the flip as of NOW, repriced from a live chain with its search status, use get_live_dealer_positioning (Pro and above), which is a different claim and is never substituted here. Pass date for a past session; omit it for the most recent on file. date in the result is the session it describes and is authoritative; do not present it as today's close. date is accepted from 1990-01-01 to one day past the current UTC date, the proxy's window, which moves forward with the date; a later weekday date is rejected as INVALID_REQUEST until the window reaches it, marked retryable with the UTC day it can be asked for from, and a later weekend date keeps the rejection as final, since it is never a session. The equity import is scheduled for 01:00 US Eastern the next day and usually lands about 02:30, so in the evening the most recent on file is usually the previous session, and it can be older when an import is late. A not-found for a weekday date inside that window is not final until 09:30 US Eastern on the following calendar day, and is marked retryable until then. That cutoff is this tool's, not a deadline of the producer's, which has none: the import is scheduled for 01:00 US Eastern, retried in half-hour steps to about 06:00, and runs later when it has days to catch up. If that date is a trading session its file usually lands about 02:30 US Eastern the next day (02:31 to 02:34 for every session from 2026-09-08 to 09-17), so before then it is usually not on file yet; a market holiday, a futures contract or a name with no near-term options stays not-found, and this tool cannot tell those apart from the date alone. After the cutoff the response is the proxy's answer for any absent row and says retrying will not succeed; that is the proxy's flag for a row absent on the normal schedule, not a promise that the file can never arrive: a session whose import or exposure computation failed can appear after a later successful import or repair, and nothing here says whether one is coming. Max pain is not here; it is in get_options_snapshot. A symbol with no exposure summary (a futures contract, or a session with no near-term options) reports not-found rather than a neutral regime. sincePriorSession compares this session with the one before it on file, from the same stored end-of-day computation over the same 0-60 day window:…

get_dividends

ChatGPT
Get per-symbol dividend history from Financial Modeling Prep data synced into the platform. Useful for checking dividend cadence, recent ex-dates, and cash amounts when evaluating carry, assignment risk, or discrete-dividend assumptions.

get_earnings

ChatGPT
Get earnings history and estimates for a company. Returns actual EPS, estimates, revenue, and surprise percentages. Earnings events are the largest source of overnight gap risk for options — check if an upcoming earnings date falls within an option's expiration window. Shows last 8 quarters by default.

get_fail_to_deliver

ChatGPT
Get SEC Failure-to-Deliver (FTD) data for a symbol. Default response returns a compact summary with recent history, notable spikes, and threshold overlap. Default window is 180 days because SEC FTD publication lags by about 21 days.

get_fft_results

ChatGPT
Get the user's FFT (Fast Fourier Transform) scanner results — characteristic function-based option pricing signals across multiple models and expirations. Shows which models detected opportunities, calibration quality, and pricing anomalies.

get_fundamentals

ChatGPT
Get company fundamentals: market cap, P/E ratio, EPS, revenue, profit margins, dividend yield, beta, sector, and industry. Useful for assessing whether an options strategy aligns with the fundamental picture. Default response returns compact company metadata, curated TTM ratios/key metrics, and one summarized recent statement entry per financial statement.

get_greeks_history

ChatGPT
Get historical options Greeks (delta, gamma, theta, vega) for a symbol. Shows how sensitivity profiles and dealer hedging pressure have shifted over time. Large windows return a compact recent/trend summary by default.

get_insider_trading

ChatGPT
Get insider trading activity for a company. Default response focuses on economically meaningful open-market buys and sells, groups repeated filing rows into event-level summaries, and summarizes awards/exercises/tax withholding separately.

get_institutional_ownership

ChatGPT
Get a company's (or an ETF's) institutional ownership from quarterly Form 13F filings: who owns it among investment managers and how that changed. For the newest quarter on file: institutions (managers holding shares), shares, reportedValue, pctOfMarketCap (the reported value over the market cap on file within a week before the quarter end, marketCapDate; marketCapSharedWith and marketCapNote when another security of the company, the same issuer number and name on file, carries about the same market cap, so it is likely the company's whole market cap), changeFromPriorQuarter, positionChanges (new, closed, increased and decreased positions), calls and puts (managers and the shares underlying, counted apart from shares), coverage (institutionsWithSharesOnAnotherBasis: in institutions and reportedValue, those shares not in shares; managersUnplaced: managers with lines that may be the company's but could not be matched, those lines in nothing; every history quarter carries its own), and filedThrough (the newest filing date read); topHolders by shares, each with its priorShares (null when the manager has no comparable report for the quarter before, or its earlier or current quantity is not known, as change says; 0 when its comparable report listed none), change, and someSharesOnAnotherBasis when reportedValue includes shares not in shares; and history, the newest quarters on file, newest first and the newest included (as many as quarters asks, 8 at most). newerQuarterNote says when a newer quarter on file holds none of the symbol. The figures are as of each quarter end and filed up to 45 days later, so they are weeks to months old by design. institutionalNote gives the rules: restated filings applied, values as reported, shares that more than one manager reports counted twice, changes only among comparable reports. institutionalStatus says when no quarter on file holds the symbol, or when the 13F read failed (the ETF holders, read apart, still answer). etfHolders lists the ETFs whose latest holdings file shows the security itself, by reported value, with etfHoldersMeta (the basis and what is excluded); shares, value and weight are as reported in each fund's file, holdingsUpdated the data source's update of the file, and splitWarnings flags a split close to or after the file's date.

get_intraday_bars

ChatGPT
Get one session's LIVE intraday bars (1, 5, 15 or 30 minutes) for a stock, ETF or index from the broker credential stored on your Options Analysis Suite account, with the session VWAP and its one-standard-deviation band, a session summary (open, high, low, close, volume) and any Stock Charts indicators asked for, computed on the same bars. This is the only tool with intraday price bars and a session VWAP; get_stock_prices is end-of-day bars, and get_live_quote is the quote now with the session range but no bars. Requires a broker credential saved to the account under Account -> Broker -> Stored broker credentials; a broker connected only in the browser on the website is not visible to this tool. Tradier and Schwab only: tastytrade, Public and moomoo are refused as BARS_NOT_SUPPORTED (no REST candles on tastytrade or Public; moomoo disabled here), naming the two that can, before anything is spent; name provider when more than one credential is stored. Tradier's 30-minute bars aggregate its 15-minute bars on the New York half hour; no 1-hour bars. date is a New York trading day (default today, or the most recent trading day before it when today is not one); session is "regular" (09:30 to 16:00 New York, the default) or "extended" (04:00 to 20:00). The window ends at the close or now, whichever is earlier, so a call during the session returns the bars so far. Bar times are ISO on the New York wall clock with the offset and only bars that START inside the window are returned (16:00 is dropped from regular hours). VWAP is the typical price (high, low and close over three) weighted by volume, cumulative from the first usable session bar (vwap.anchor; with session: "extended" that is the first pre-market bar, so ask for "regular" for the regular-hours VWAP), with stdev the volume-weighted standard deviation about it and upper/lower one deviation either side, as Stock Charts computes it; each bar carries its own vwap as of that bar. When the broker publishes no volume (an index such as SPX: null volume, never a zero-fill), vwap.value is null with reason: "no-volume", never zero. The bars go out as bars.columns and bars.rows, newest last, at most maxBars (default 120) and fewer when the response budget binds, dropping the OLDEST; barsMeta says how many were returned of how many, whether and by what they were trimmed, and the first returned bar's time. The summary, the VWAP line and each indicator's latest value cover the whole session. asOf is when the bars were FETCHED. A repeat (same symbol, date, interval, session, broker and account) within 15 seconds can be answered from a short in-memory cache with the same asOf, spending no broker request, so it is not charged and is answered even when the budget is spent; the cache is per proxy instance, so a repeat can also be fetched afresh, and another account's call never shares it. Cold-call estimate, not actual spend or a cap: 1 request on Tradier or Schwab, each metering 120 a minute shared with the other live tools. rateLimit: proxy snapshot per account and broker, shared by live tools; includes other calls and reservations. Null means unknown. limit minus remaining is not this call's spend. After this call, it gives remaining of limit in broker requests (provider names the broker), resetting in resetSeconds; an error after the live-broker limiter ran carries it beside code (a charged failure, or its own RATE_LIMITED refusal, which charges nothing), one refused before it (a malformed date, a missing credential) none. There is no end-of-day fallback, and no broker text is passed on: a failure's code says what failed and whether retrying helps - BROKER_RATE_LIMITED (retryable; wait retryAfterSeconds when given), BROKER_UNAVAILABLE (brokerFailure says how: "http-status" with brokerStatus, "timeout", "unreadable-response", "no-usable-answer" or "other") or BROKER_REJECTED (the broker refused the request itself: not retryable, another broker may answer). Every number goes out at 15 significant digits at most.

get_iv_history

ChatGPT
Get historical implied volatility (IV) and historical volatility (HV) for a stock or ETF. Shows how option-implied expected moves and realized moves have evolved. High IV relative to HV suggests options are expensive; low IV relative to HV suggests options are cheap. Large windows return a compact recent/trend summary by default.

get_iv_surface

ChatGPT
Get the IV surface/skew across strikes and expirations for a symbol. End-of-day data from the previous trading session. Default response returns a compact term-structure and smile summary.

get_live_dealer_positioning

ChatGPT
Get LIVE dealer positioning for a symbol, computed in real time from the broker credential stored on your Options Analysis Suite account. Returns net GEX and DEX plus net vega, vanna, charm and vomma; the gamma flip (the repriced regime-change level), the call wall and put wall (the gamma levels that act as resistance and support), a gamma magnet, gamma concentration, a dealer regime of positive or negative gamma, and per-strike gamma and delta contributions around spot. Positive net gamma means dealers hedge against moves and dampen them; negative means they hedge with moves and amplify them. The gamma flip is found by repricing the book across a range of spot levels. coverage.gammaFlipMethod says how: "repriced" recomputed gamma from implied volatility for every leg; "frozen-gamma" means no leg had a usable IV, so every published gamma was held constant across the sweep; "mixed" means some legs were repriced and the rest held constant. A held gamma is an approximation that can materially move the level or create one where there was none, and a usable IV is finite, above 0 and at most 5 (500%): a broker-published IV of 0 or above that band counts as absent. Say which method was used when quoting the level. The gamma-flip search samples prices within 20% of spot. A pair of crossings within one sampling interval can be missed; no detected flip does not prove that no crossing exists within or beyond that range. coverage.gammaFlipResolution is the local sampling bracket width where the flip was found, not a confidence interval or an error bound. The reported flip is the nearest crossing detected by that search, and the resolution is null when no level is reported. coverage.gammaFlipSearchStatus describes the search on supported legs: "found" detected a crossing, "not-found" detected none in the sampled range, and "unresolved" means numerical signs or crossing order could not be established reliably. An unresolved null gives no conclusion about whether a crossing exists; a null status means the response did not report a recognized search status. Computed over the nearest four expirations of the live chain, so it reflects the current session rather than the most recent session on file. Outside trading hours the quotes are the broker's last, but time to expiry is measured from the wall clock when the chain rows are built, moments before asOf, so the repriced flip and the time-sensitive totals drift a little between calls with no new quotes; that is the clock, not the market. Metric coverage and statuses distinguish complete, partial, unmeasured, empty and unknown results. Partial values sum only supported option legs; they are not measurements of the whole book. Unmeasured or unknown values are null. Gamma-derived levels require complete coverage. coverage.gammaFlip counts every leg that entered the sweep, repriced or held, so it can read complete while gammaFlipMethod is "mixed"; the method, not the count, says whether those legs were repriced, held, or both. EXPENSIVE: each call is charged five weighted units against the 10-unit-per-minute live-broker limit, so at most two calls a minute. A cold request reads the expirations list and up to four chains; actual upstream request counts vary with the provider and cache state. Do not call it in a loop or for a list of symbols. The risk-free rate and dividend yield are resolved from real market data and never defaulted, because the gamma flip is a repricing that depends on them; resolved reports what was used. Requires a Pro subscription or above and a broker connected under Account -> Broker. For the most recent session on file's positioning over 0-60 days, free and without a broker, use get_dealer_positioning; its gamma flip is a coarse-grid level and is a different claim from the repriced one here.

get_live_options_chain

ChatGPT
Get a LIVE options chain for one expiration, fetched in real time from the broker credential stored on your Options Analysis Suite account. This is the only tool that returns intraday option-chain prices; every other option-chain tool returns end-of-day prices from the most recent session on file. get_regime with scope="intraday" provides intraday exposure, not chain prices. Requires a Pro subscription or above and a broker connected under Account -> Broker. Returns near-the-money strikes, the ATM pair, 25-delta wings and whole-chain volume/open-interest totals. A null field means the broker published nothing for it, which is different from zero. mid is null unless there is a two-sided market; mark is the broker's own valuation, not an executable quote. iv is the broker's published implied volatility where it is usable (finite, above 0 and at most 5, that is 500%); a published 0 or a value above that band is a solver sentinel, not a volatility (brokers emit them for deep in-the-money contracts near expiration and after the close), and is reported as null and counted in totals.<side>.contractsWithoutUsableIv. The delta and the quote beside it are still the broker's and are kept. The Greeks are the broker's as published and are not checked against the quote or the IV beside them. A delta of exactly 0 or 1 can be a genuine limit deep in or out of the money, and it can be the broker's solver (a 755 put quoted 0.63 with iv 0.164 carried delta 0); this tool applies no check that tells the two apart, so treat such a delta as suspect and read it with the quote and IV beside it. asOf is when the chain was FETCHED, not a quote time: outside regular trading hours the quotes are the last ones the broker holds, a bid can sit below intrinsic value, and this tool does not date the quotes individually. Omit expiration for the front month; an unlisted expiration returns the available dates. Rate limited to 10 requests per minute because each call spends your own broker quota. A repeat for the same symbol and expiration within 15 seconds is answered from a short cache, with the same asOf, and still counts as a request. There is no end-of-day fallback: if the broker cannot answer, this reports the failure and whether retrying can help.

get_live_quote

ChatGPT
Get a LIVE quote for one underlying (a stock, ETF or index such as SPX or VIX), fetched in real time from the broker credential stored on your Options Analysis Suite account (provider names the broker): last, bid, ask, bid and ask sizes, mid, the broker's mark, the session's open, high and low, the previous close, volume, the broker's quote and trade times, and the day change (change and changePercent: the broker's own, or computed against the previous close; changeBasis says which). This is the only tool with the underlying's current quote and session range; get_live_options_chain reports a spot at fetch time with no range, and get_stock_prices is end-of-day bars with the prior close. Requires a broker credential saved to the account under Account -> Broker -> Stored broker credentials; a broker connected only in the browser on the website is not visible to this tool. No end-of-day fallback: a failed fetch returns an error; read code and retryable when present. No broker error text is passed on. asOf is when the quote was FETCHED, not a quote time; the broker's own clocks are quoteTime and tradeTime, and on tastytrade quoteTime is a market-data clock that moves without new prices, so it does not date the bid, ask or last; on moomoo quoteTime is its snapshot's update time and it gives no tradeTime. Cold-call estimate, not actual spend or an upper bound: 1 request on every broker, against your broker's own quota, which the live tools share; a repeat for the same symbol and broker by the same account within 5 seconds can be answered from a short cache, uncharged, with the same asOf. A RATE_LIMITED refusal comes from the platform's limiter before any broker request is sent: with rateLimit, rateLimit.provider names the broker whose request was refused; another stored broker has its own budget, though shared limiter capacity can also cause refusal.

get_market_calendar

ChatGPT
Get market calendar events by type. Each type has its own default date window, shaping, and optional filters: • type="economic" — upcoming macro events (FOMC, CPI, NFP, GDP, etc.) that move options vol. Default from=today, to=30d ahead. Supports country (e.g. US, EU, UK). The default view focuses on higher-signal catalysts. • type="ipo" — upcoming and recent public listings. Default from=30d ago, to=60d ahead, limit=50. Optional symbol filter applied after fetch. • type="dividend" — cash dividend events (ex-date, record date, payment date). Default from=7d ago, to=30d ahead, limit=100. Optional symbol filter. • type="split" — stock splits (ratios + dates). Default from=30d ago, to=60d ahead, limit=100. Optional symbol filter. Irrelevant sub-params are ignored (e.g. country on type=ipo, full on type=dividend).

get_news

ChatGPT
Get recent news headlines for a stock. Useful for understanding catalysts behind price or volatility moves, and for assessing event risk before entering an options position. Default response relevance-ranks the latest raw feed against the company profile and suppresses filing-style ownership updates when stronger catalyst news is available.

get_options_analytics_history

ChatGPT
Get daily end-of-day options analytics snapshots for a symbol — historical trend data going back years. Covers ATM IV, HV, IV rank/percentile, VWIV, skew, GEX/DEX/VEX, net vanna/charm/vomma, put/call ratio, max pain, expected move, term structure, dividend yield, and risk-free rate. Best for trend analysis over time. For current authoritative Greek exposures and dealer-positioning levels like call wall, put wall, gamma flip, and abs gamma, use get_regime with scope="symbol" instead. Up to 5000 days. Large windows return a compact recent/trend summary by default.

get_options_chain

ChatGPT
Get the end-of-day options chain snapshot from the latest available completed trading session by default. Default view summarizes expirations, ATM term structure, skew, and representative near-money contracts across the curve while avoiding same-day expiry noise when later expirations exist; set date to query a specific session.

get_options_snapshot

ChatGPT
Get the end-of-day options snapshot for a symbol: spot, max pain, net GEX and DEX, the ATM IV term structure (7/30/90 day), IV rank and percentile, historical vol, put-call ratio, volume and open interest. Pass several comma-separated symbols (up to 50) to compare their headline metrics in ONE request instead of calling this repeatedly: each row carries spot, ATM IV, IV rank and percentile, 20- and 60-day realized vol, IV minus each realized vol (ivMinusHv20d, ivMinusHv60d, the raw volatility risk premium), the 30-day expected move, net GEX and DEX, the 25-delta skew, put/call ratio, volume and open interest. With rankBy the rows come sorted by that metric (largest first unless order is "asc"), a symbol without the metric last and named in rankMeta.unrankedSymbols; without it they stay in the order asked for. This is platform data for any symbol - use get_snapshot instead for the GEX, portfolio and risk snapshots synced from the user's own browser session, which is a different dataset. Set curves to summarize the per-strike payloads: the max-pain curve with its true minimum, per-strike GEX or DEX with totals, or the volatility skew. Curves are omitted by default because they are large. The net GEX and DEX here are over ALL expirations on file; get_dealer_positioning reports the 0-60 day window, so the two differ for the same session and neither is wrong. Long-dated contracts carry large delta, so the two can differ even in sign (SPY 2026-09-29: net DEX -16,795,316,756 over all expirations against +16,246,461,968 over 0-60 days). chainExpiry is, for a stock, ETF or index, the nearest expiration at least a day after the session (the snapshot is stored after that session's own expirations settle; null, with no chain, when none is that far out); a futures contract's snapshot is taken intraday and can name the session's own expiration. analyticsExpiry is the expiration max pain and the probability analytics are computed on: the monthly nearest to 30 days out among those at least 7 days out, a non-monthly nearest to 30 days out when no monthly is that far out, and the first listed expiration when nothing is (so on 2026-09-16 with 09-18 and 10-16 listed it is 10-16, and with only 09-18 listed it is 09-18, two days out). Data is end-of-day from the most recent session on file, not intraday. date in the result is the session it describes and is authoritative: the equity import usually lands in the early hours US Eastern, so in the evening the most recent on file is usually the previous session, and it can be older when an import is late; futures snapshots are written at the close and can already be the current day's. Use get_live_options_chain for live prices. Any symbol the platform holds an options snapshot for, futures contracts with listed options included. A symbol it holds only a price row for reports that rather than returning empty metrics.

get_platform_info

ChatGPT
Get background information about the Options Analysis Suite platform — the 17 available pricing models (10 vanilla + 7 exotic), the 17 Greeks computed across them, and platform capabilities. Call this when you need context about the platform to give better answers.

get_rates

ChatGPT
Get Treasury rate data. Pick the view that matches the question: • view="benchmark" — current platform risk-free rate served at /risk-free-rate (currently a 10Y-based Treasury rate used for options pricing). No params. If you need shorter maturities (1M, 3M, 6M, 2Y, 5Y), use view="curve" instead. • view="curve" — full US Treasury yield curve with a compact current-curve summary by default. Returns key maturities, inversion flags, spreads, and small trend samples.

get_regime

ChatGPT
Get regime data at one of three scopes. Pick the scope that matches the question; irrelevant sub-params are ignored. • scope="market" — MARKET COMPOSITE stress regime (aggregate across SPY/QQQ/IWM/DIA, not per-symbol). Returns composite stress score, confidence, key drivers, feature z-scores. Bands: CALM < -0.5, NORMAL -0.5..0.5, ELEVATED 0.5..1.5, STRESS 1.5..2.5, CRISIS ≥ 2.5. Accepts date (YYYY-MM-DD, default latest) and include_symbols (default false; true also returns up to the top 8 symbols per classification tier sorted by absolute stress score, with raw vector internals stripped). • scope="symbol" — per-symbol daily regime + authoritative Greek exposures (net gamma/delta/vega/vanna/charm/vomma, call wall, put wall, gamma flip, abs gamma anchor, top 10 gamma strikes). REQUIRED: symbol. Accepts days (default 1 = latest, max 30) and full (default false; true keeps less-summarized history with vector internals stripped). This is the correct scope for "what are SPY's Greek exposures?" — do NOT use get_options_analytics_history for current exposures. • scope="intraday" — intraday regime scan history for a symbol: 5 scans/day (open, morning, midday, afternoon, pre-close), each with stress scoring, regime classification, and compact Greek exposure snapshots. REQUIRED: symbol. Accepts days (default 5, max 90), date (overrides days), and interval (filter to a single scan).

get_regime_fits

ChatGPT
Get the calibrated parameters and fit quality for the eight pricing models (Black-Scholes, Heston, SABR, Variance Gamma, Merton, Kou, Bates, eSSVI) for one symbol. Answers "what parameters were fitted, and how well did each model fit" - use get_regime instead for which market regime a symbol is in, which is a different question and a different dataset. Returns each model's latest parameters with its IV RMSE, and a price RMSE for every model except eSSVI, which is fitted on the implied-volatility surface and stores none (priceRmse is null there by design, not a failed fit), plus a short error history showing whether the fit is stable. failedQualityCheck true means the fit was REJECTED: it did not converge, or fewer than three options could be repriced, or its error exceeded the threshold. Only the first substitutes the parameters; the other two leave a real fitted set that was then rejected. Either way the fit was not accepted, so do not present those parameters as a good fit for this symbol. daysFailingQualityCheck counts a model's fits in the window that failed the check and daysQualityCheckUnreported the ones that did not report it (failedQualityCheck null), which are unknown, not passing: only the rest of fitDays passed. Each model's paramsAtBounds names the parameters its latest fit finished exactly on an optimizer bound: such a parameter may be held there by the bound rather than set by the market, so treat it with caution even when failedQualityCheck is false (SPY's Kou p at 0.05 and eta1 at 30 on 2026-09-30). It records where the fit finished, not how it got there: a parameter can also finish on a bound it started at. An empty list means none, and null means the fit did not report it: only Merton, Kou and Bates fits report bounds, so it is always null for the other five models, and for Merton, Kou and Bates fits recorded before their calibration did. Coverage is the regime universe of about 124 symbols; a symbol outside it returns an empty history rather than an error. Requires a Pro subscription or above.

get_sec_filings

ChatGPT
Get recent SEC EDGAR filings for a symbol. Useful for finding 10-K, 10-Q, 8-K, proxy, insider, offering, and activist filings with direct SEC URLs. Default response returns a compact filing list with dates, form types, descriptions, accession numbers, and filing links.

get_short_data

ChatGPT
Get FINRA short-side data for a symbol. Two related but distinct series: • type="volume" — DAILY short-volume activity. Compact summary-first view (latest day + trailing averages + recent-trend flag) by default. • type="interest" — BIWEEKLY short-interest settlement reports (position-based, not flow-based). Compact summary-first view (latest settlement + trailing averages + rising/falling trend) by default. Short-percent-of-float is enriched from the company profile when the FINRA feed omits it. Symbol is required for both.

get_snapshot

ChatGPT
Get the user's synced snapshot history by type. Each type serves a different question: • type="gex" — per-symbol Gamma Exposure snapshots. REQUIRED: symbol. Returns the 3 most recent snapshots (no dedupe — rows may be near-duplicates if recorded back-to-back). Includes per-expiration breakdown, call/put walls, gamma flip point, abs gamma anchor, unusual activity, expected move data, and raw vs in-wall visible combo-strike counts. • type="portfolio" — account-wide portfolio snapshots with market-scaled raw Greeks (no $): first-order delta, gamma, theta/day, vega/1% IV, rho/1% rate; second-order vanna/1% IV, charm/day (delta decay), vomma/1% IV², veta/day (vega decay, sign-flipped for market convention). Default view collapses consecutive identical snapshots to surface the latest distinct states. For $-impact views of the same Greeks, use type="risk". • type="risk" — account-wide risk-analysis snapshots: Value-at-Risk (95%/99%), Conditional VaR, portfolio beta, Sharpe ratio, maximum drawdown, volatility, stress test results, and aggregate Greek $-impact exposure. $-Greeks include first-order dollarDelta, dollarGamma (per 1% move), dollarTheta/day, dollarVega (per 1% IV), dollarRho (per 1% rate) and second-order dollarVanna (per 1% IV move), dollarCharm (daily $Δ decay), dollarVomma (per 1% IV), dollarVeta (daily vega decay). Units & sign convention: var95/var99/cvar95/maxDrawdown/volatility are in PERCENT (e.g., 2.5 = 2.5%); volatility is annualized; var95/var99/cvar95/maxDrawdown are POSITIVE loss magnitudes (e.g., var95=2.5 means a 2.5% loss). beta/sharpeRatio are dimensionless. stressResults[].impact is signed $ P&L; impactPercent is signed % of portfolio. details.historicalVarDetails: worstDay is POSITIVE magnitude of the worst single-day LOSS (worstDay=13.46 means a 13.46% loss, NOT a 13.46% gain); bestDay and avgReturn are SIGNED percent returns. Default view collapses consecutive identical snapshots. For raw-unit Greeks, use type="portfolio".

get_stock_prices

ChatGPT
Get historical OHLCV price data for a stock or ETF with a compact trend summary plus the requested daily bars.

get_stock_splits

ChatGPT
Get per-symbol stock split history from Financial Modeling Prep data synced into the platform. Useful for checking historical split ratios and labels when reconciling price history, options deliverables, or unusual chart moves.

get_threshold_history

ChatGPT
Get SEC Regulation SHO threshold-list history for a symbol with a compact status summary by default. Highlights whether the symbol is currently on the list, recently cleared, or only appeared historically in the requested window.

get_trading_halts

ChatGPT
Get current and recent trading halts. Default view condenses duplicate feed rows, prioritizes the latest active halt state, and highlights material recent news/regulatory events.

query_analysis

ChatGPT
Query your analysis history with filters. Find specific analyses by greek values, volatility ranges, or other criteria. For example: "analyses where delta > 0.7" or "all Heston runs with IV below 30%". Default view collapses near-identical reruns from the same pricing sweep so the results stay diverse and readable.

rank_live_skew_gex

ChatGPT
Rank a WATCHLIST of 1 to 50 symbols LIVE by their 25-delta skew and net GEX (gamma exposure), each with its change since the prior session's close, computed in real time from the broker credential stored on your Options Analysis Suite account: the live counterpart of run_screener's end-of-day put-skew board and its dod-change boards for skew and gex (the website's Put Skew Leaders, Biggest Skew Change and Biggest GEX Change), for the symbols you name. Requires a broker credential saved to the account under Account -> Broker -> Stored broker credentials; a broker connected only in the browser on the website is not visible to this tool. Both sides of every change use this platform's own model (implied volatility solved from bid/ask mids, then Black-Scholes delta and gamma), not the broker's Greeks, so the change is like for like; skew is the 25-delta put IV minus the 25-delta call IV at the listed expiration nearest 30 days out among those at least 7 days out (skew10d the same at 10-delta, same expiration), and net GEX is in dollars per 1% move over the nearest four expirations that may still trade. Outside regular hours the chain is valued at the session's 4:00 PM New York close on quotes that can be stale or one-sided; on moomoo, option quotes are real time only once the moomoo account holds assets or a US position, and until then may be about 15 minutes delayed, unmarked. BUDGET: fresh fetches spend your own broker quota and MAY SPEND ALL OF IT. Further requests to that broker can then be refused (RATE_LIMITED) until the window resets; cache-only answers can still be served. Per-broker quota: 120 requests a minute on Tradier and Schwab, 600 on Public, 120 on tastytrade, 30 on moomoo. Cold-call estimates per symbol, not actual spend or caps: both metrics need the expirations list (1, cached 15 minutes) and four GEX chains, 9 requests on Tradier, Public and moomoo (moomoo reserved and settled to what it spent), 5 on Schwab, 49 reserved on tastytrade and settled to the real count; one more chain when the skew expiration is outside those four, as it often is on a symbol with weekly or daily expirations (2 more on Tradier and Public, so 11 a symbol; 1 on Schwab; 12 reserved on tastytrade; 2 reserved on moomoo), and one more when the first skew candidate fails its checks; metrics "skew" alone is the list and one chain (3 on Tradier and Public, 2 on Schwab, 13 reserved on tastytrade, 3 reserved on moomoo). A long list takes several calls: with both metrics Tradier's 120 a minute covers about ten symbols and Schwab's about twenty, Public paces to about one symbol a second, moomoo's 30 about three fully cold ones (more once its contract lists are cached for the day), and tastytrade's reservation of 49 or more a symbol leaves room for two at a time. Call again with the SAME list after retryAfterSeconds, not in a tight loop. A cached metric younger than maxAgeSeconds is reused at no cost; its ageSeconds is the rounded computation age at the response's asOf, not a quote age. Later calls refresh the oldest rows their budget covers, so on a long list a row can be older than maxAgeSeconds (fifty symbols on Tradier take about five minutes a round): ask for fewer symbols for fresher rows. A failed credential-use audit ends the whole call; no further symbol is sent. A volatility index such as VIX, or an index whose stored dividend yield is unavailable, is refused per symbol in errors (RESOLUTION_FAILED) before anything is spent on it; get_live_dealer_positioning takes a supplied q for it. An errors entry's status is this tool's for that symbol, not an HTTP status from the broker: 404 NO_EXPIRATIONS means no usable expiration dates were obtained, not that the broker returned a 404 (brokerStatus carries the broker's). Use run_screener (put-skew, dod-change) for the market-wide end-of-day boards, get_options_snapshot for the end-of-day skew and GEX of up to 50 symbols at no broker cost, and get_live_dealer_positioning for one symbol's full live positioning (the broker's Greeks) with the gamma flip and walls.

run_screener

ChatGPT
Run one of the 16 options-market screeners (plus market-trends and an earnings-calendar view). Choose the screener via the screener enum; pass sub-params only for the screener that needs them. Irrelevant sub-params are ignored. • most-active / highest-oi / highest-iv / unusual / gex — main tabs. Use view (ticker|contract, default ticker). Support index (all|sp500|sp400|sp600|etf). Note: index=etf returns rows only in view=contract; ticker view's aggregator does not include ETF rows. For unusual, the threshold param's meaning depends on view: contract view = min volume/OI ratio (float, default 1.0); ticker view = min unusual-contract breadth count (integer, default 1). • dod-change — day-over-day leaderboards. Requires metric (gex|iv|put-call|skew|regime). Optional direction (up|down|all) for gex/iv/put-call. To get DoD skew or regime views, use dod-change with metric=skew or metric=regime — the regime-stress / put-skew screener ids always return the level leaderboard, never the change view. • vrp — volatility risk premium. Requires side (high|low). • max-pain — requires mode (pinning: spot near max pain + high gamma concentration; divergence: spot vs max pain in implied-move σ units). • unusual-directional — requires side (call|put). • market-trends — market-wide avg IV / volume / P/C time series. Optional days (passthrough to proxy; proxy default 365, capped at 730). For token-budget reasons, an LLM may want to pass a smaller days (e.g. 30–90). • earnings-calendar — upcoming earnings reports. Defaults to the next 14 days from today, matching the Morning Report window. Optional symbol to filter to a single ticker; optional days to widen/shorten the window (1..90). • Everything else takes only limit. Returns the raw proxy payload; shape varies by screener. Ranking endpoints typically return { data: Row[], currentDate, priorDate?, metric, ... } where Row includes the ranking metric plus supporting fields (spotPrice, totalOi, atmIv30d, label/stress, etc.). Contract-view endpoints return per-contract rows. market-trends returns time-series aggregates. earnings-calendar returns a bare array of {symbol, date, time, ...} rows. See the per-screener column notes at optionsanalysissuite.com/screeners.

scan_option_strategies

ChatGPT
Scan one expiration of the LIVE options chain, read with the broker credential stored on your Options Analysis Suite account, for candidate trades of one strategy, priced from the broker's current quotes. Requires a broker credential saved to the account under Account -> Broker -> Stored broker credentials; a broker connected only in the browser on the website is not visible to this tool. Each candidate carries its legs' quotes (each leg's spreadPct is its bid-ask spread already in percent of the mid: 0.54 is 0.54%, not 54%) and Greeks, its net credit or debit at the mid and at the natural, max profit, max loss, breakevens, return on risk, a risk-neutral probability of profit, position Greeks and liquidity; the answer adds the expiration's expected move (its at-the-money straddle, call mid plus put mid, unscaled), its dealer levels (gamma flip, call wall, put wall, gamma magnet) and every strike's distance from spot. Strategies: single calls and puts, long and short; credit and debit vertical spreads; iron condors and iron butterflies; straddles and strangles. A covered call or cash-secured put is the short_call or short_put here, without the stock or cash leg, which is not modelled. On moomoo, option quotes are real time only once the moomoo account holds assets or a US position, and until then may be about 15 minutes delayed, unmarked. EXPENSIVE. Cold-call estimates, not actual spend or upper bounds: a scan reads the expirations list and the scanned chain in your broker's own requests (3 on Tradier and Public, 2 on Schwab, 13 reserved on tastytrade and settled to the real count, and on moomoo 3 reserved and settled to what it spent), and up to four more chains with levels: "window". The budget is your broker's own quota (120 requests a minute on Tradier and Schwab, 600 on Public, 120 on tastytrade, 30 on moomoo), shared with the other live tools. Another scan of the same expiration within 15 seconds (same account, broker, levels and supplied r and q), with any other strategy or filters, can be answered from the cached chain with the same asOf, quotes and expected move, uncharged and even on a spent budget (the cache is per proxy instance, so a repeat can also be read afresh). Do not call it in a loop or for a list of symbols. For dealer levels alone use get_live_dealer_positioning (live) or get_dealer_positioning (the most recent session on file, 0-60 days, free, no broker).

compute_black_scholes

Claude

compute_scenario

Claude

get_activist_filings

Claude

get_analysis_history

Claude

get_analysis_rollups

Claude

get_analyst_data

Claude

get_company_profile

Claude

get_compute_runs

Claude

get_congress_trades

Claude

get_custom_indicator_spec

Claude

get_dark_pool_data

Claude

get_dealer_positioning

Claude

get_dividends

Claude

get_earnings

Claude

get_fail_to_deliver

Claude

get_fft_results

Claude

get_fundamentals

Claude

get_greeks_history

Claude

get_insider_trading

Claude

get_institutional_ownership

Claude

get_intraday_bars

Claude

get_iv_history

Claude

get_iv_surface

Claude

get_live_dealer_positioning

Claude

get_live_options_chain

Claude

get_live_quote

Claude

get_market_calendar

Claude

get_news

Claude

get_options_analytics_history

Claude

get_options_chain

Claude

get_options_snapshot

Claude

get_platform_info

Claude

get_rates

Claude

get_regime

Claude

get_regime_fits

Claude

get_sec_filings

Claude

get_short_data

Claude

get_snapshot

Claude

get_stock_prices

Claude

get_stock_splits

Claude

get_threshold_history

Claude

get_trading_halts

Claude

query_analysis

Claude

rank_live_skew_gex

Claude

run_screener

Claude

scan_option_strategies

Claude

Similar Apps