Skip to main content
Glama
JerBouma

Finance Toolkit

options

Read-onlyIdempotent

Calculate option prices, Greeks and implied volatility, or pull live option chain metrics like put/call ratio, max pain and gamma exposure by selecting an indicator.

Instructions

Option pricing and Greeks (Black-Scholes model, binomial tree, delta, gamma, theta, vega, rho, implied volatility). Requires tickers='AAPL' — use comma-separated values for multiple tickers. get_stock_price_simulation returns the unique price levels per time step; pass show_unique_combinations=false for every simulated path. get_binomial_model covers the strikes within 5% of the price unless strike_price_range= asks for more; strike_price_range also narrows the Greeks and get_option_chains. get_option_chains shows the nearest expiry (its Expiration Date column says which); show_expiration_dates=true lists the expiries and expiration_date= picks one. get_strategy_payoff takes legs as a list of objects, e.g. [{'strike_price': 340, 'position': 'long'}, {'strike_price': 360, 'position': 'short'}]. Option market metrics from the live chains, per expiry (number_of_expirations= or expiration_dates=): get_put_call_ratio (volume and open interest), get_max_pain, get_implied_volatility_term_structure (at-the-money volatility), get_volatility_skew (25-delta risk reversal and butterfly) and get_implied_move (straddle-implied move and range; around_earnings=true uses the first expiry after the next earnings date). Per ticker: get_gamma_exposure (dealer GEX in dollars per 1% move and the gamma flip point; by_strike=true per strike), get_model_free_implied_volatility (the Cboe VIX method for any ticker, days=30; '^SPX' approximates the VIX) and get_volatility_risk_premium (implied minus realized volatility, and in variance units). The market metrics take the underlying price quoted with the live chain (else the last traded close) and the rates and realized volatility from the price history, so leave end_date at today; days= cannot exceed the longest listed expiry.

Input Schema

NameRequiredDescriptionDefault
daysNoNumber of calendar days used in day-count-based calculations.
legsNoThe strategy as a list of legs. An option leg: {'strike_price': 340, 'put_option': false, 'position': 'long' or 'short', 'premium': 4.2}; a stock leg: {'instrument': 'stock', 'position': 'long', 'premium': 336}. E.g. a bull call spread is a long call at a lower and a short call at a higher strike. Leave unset to use the default of the indicator you selected. Required by: get_strategy_payoff.
seedNoThe seed used to initialize the random number generator, ensuring reproducible results.
limitNoThe rows to return, like head and tail: 5 for the first five, -5 for the last five (the most recent of a time series). A table with its periods as columns (financial statements, ratios) keeps its first or last periods instead. For ETF holdings the largest (or, negative, the smallest) by weight, and for a list (e.g. news or a screener) its length.
rebateNoThe fixed cash amount paid out if the option knocks out (or fails to knock in).
tickersNoComma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'.
end_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-27
by_strikeNoWhether to return the exposure per strike instead of the totals.
indicatorYesName of the specific metric to calculate, one of the listed values. Required — search_metrics finds the indicator (and its tool) for a metric by name.
quarterlyNoReturn quarterly data instead of annual when True.
timestepsNoThe number of time steps to use for the binomial tree. This will be evenly distributed over the time to expiration.
knock_typeNoEither "in" or "out".out
put_optionNoWhether to calculate the put option rho.
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-28
time_stepsNoThe number of time steps used to build each simulated path.
cash_payoutNoThe fixed cash amount paid out by a cash-or-nothing option when it expires in-the-money. Ignored for asset-or-nothing options.
option_typeNoEither "cash-or-nothing" or "asset-or-nothing".cash-or-nothing
simulationsNoThe number of simulated stock price paths.
standardizeNoReturn the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.
dividend_yieldNoFor get_asian_option, get_barrier_option, get_binary_option, get_binomial_model, get_bjerksund_stensland, get_black_scholes_model, get_delta, get_dual_delta, get_epsilon, get_implied_volatility, get_lambda, get_monte_carlo_option_price, get_put_call_parity, get_rho, get_risk_neutral_density, get_theta, get_vega, get_volatility_surface: The dividend yield to use for the calculation. A given value is used as a continuous yield. For get_charm, get_color, get_dual_gamma, get_gamma, get_partial_derivative, get_speed, get_ultima, get_vanna, get_vera, get_veta, get_vomma, get_zomma: The dividend yield to use for the calculation.
risk_free_rateNoFor get_asian_option, get_barrier_option, get_binary_option, get_binomial_model, get_bjerksund_stensland, get_black_scholes_model, get_charm, get_color, get_delta, get_dual_delta, get_dual_gamma, get_epsilon, get_gamma, get_implied_volatility, get_lambda, get_monte_carlo_option_price, get_partial_derivative, get_put_call_parity, get_rho, get_risk_neutral_density, get_speed, get_theta, get_ultima, get_vanna, get_vega, get_vera, get_veta, get_volatility_surface, get_vomma, get_zomma: The risk free rate to use for the calculation. A rate passed here is used as given, as a continuously compounded rate. For get_garman_kohlhagen: The domestic risk free rate to use for the calculation. A rate passed here is used as given, as a continuously compounded rate. For get_stock_price_simulation: The risk free rate shown with show_input_info; it does not affect the simulated prices. A rate passed here is used as given, as a continuously compounded rate.
american_optionNoWhether to value an American option, which can be exercised at every node, instead of a European option.
around_earningsNoWhether to use the first expiry after the next earnings date instead.
expiration_dateNoFor get_implied_volatility: The expiration date to use for the calculation. For get_option_chains, get_risk_neutral_density: The expiration date to use.
show_input_infoNoWhether to show the input information.
benchmark_tickerNoTicker used as the market benchmark, e.g. 'SPY' or '^GSPC'.SPY
expiration_datesNoFor get_gamma_exposure: The expiries to include. For get_implied_move, get_implied_volatility_term_structure, get_max_pain, get_put_call_ratio, get_volatility_skew: The expiries to use. For get_volatility_surface: The expiration dates to fit the surface over.
strike_step_sizeNoThe step size to use for the strike prices.
barrier_directionNoEither "down" or "up".down
number_of_strikesNoThe number of strikes in the evaluation grid.
outlier_thresholdNoThe number of median absolute deviations from the median implied volatility beyond which a quote is treated as an outlier and dropped before fitting.
stock_price_rangeNoThe percentage range to use for the stock prices at expiration.
barrier_percentageNoThe barrier level as a percentage of the current stock price. A down barrier needs a value below 1 and an up barrier a value above 1; otherwise the barrier is already breached.
strike_price_rangeNoOnly strikes within this fraction of the current stock price, e.g. 0.05 for the strikes within 5% of it. Leave unset to use the default of the indicator you selected. Defaults differ between indicators.
time_to_expirationNoThe number of years to use for the time to expiration.
show_standard_errorNoWhether to also return the standard error of each Monte Carlo estimate as a second DataFrame.
expiration_time_rangeNoThe number of days to use for the time to expiration: the columns are the expirations 1 up to expiration_time_range - 1 days after the start date.
number_of_expirationsNoFor get_gamma_exposure: The number of nearest expiries to include when no dates are given. For get_implied_move, get_implied_volatility_term_structure, get_max_pain, get_put_call_ratio, get_volatility_skew: The number of nearest expiries to use when no dates are given. For get_volatility_surface: The number of near-term expiration dates to fit when `expiration_dates` is not given. Leave unset to use the default of the indicator you selected. Defaults are 6 for get_gamma_exposure, get_max_pain, get_put_call_ratio, get_volatility_skew, get_volatility_surface; 10 for get_implied_volatility_term_structure; 4 for get_implied_move.
show_expiration_datesNoFor get_implied_volatility: Whether to show the expiration dates. For get_option_chains: Whether to return the available expiration dates instead of the option chains.
stock_price_step_sizeNoThe step size to use for the stock prices at expiration.
foreign_risk_free_rateNoThe foreign risk free rate to use for the calculation, which plays the role of the dividend yield in the standard Black-Scholes model.
show_unique_combinationsNoWhether to show the unique combinations of the stock prices. Leave unset to use the default of the indicator you selected. Defaults are True for get_stock_price_simulation.

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed17 schema fields changedv2.3.0
    • addedInput schema / properties / around_earnings
      Added value: +{
      +  "default": false,
      +  "description": "Whether to use the first expiry after the next earnings date instead.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / barrier_percentage / description
      Previous value: -"The barrier level as a percentage of the current stock price."New value: +"The barrier level as a percentage of the current stock price. A down barrier needs a value below 1 and an up barrier a value above 1; otherwise the barrier is already breached."
    • addedInput schema / properties / by_strike
      Added value: +{
      +  "default": false,
      +  "description": "Whether to return the exposure per strike instead of the totals.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / days
      Added value: +{
      +  "default": 30,
      +  "description": "Number of calendar days used in day-count-based calculations.",
      +  "type": "integer"
      +}
    • changedInput schema / properties / dividend_yield / description
      Previous value: -"The dividend yield to use for the calculation."New value: +"For get_asian_option, get_barrier_option, get_binary_option, get_binomial_model, get_bjerksund_stensland, get_black_scholes_model, get_delta, get_dual_delta, get_epsilon, get_implied_volatility, get_lambda, get_monte_carlo_option_price, get_put_call_parity, get_rho, get_risk_neutral_density, get_theta, get_vega, get_volatility_surface: The dividend yield to use for the calculation. A given value is used as a continuous yield. For get_charm, get_color, get_dual_gamma, get_gamma, get_partial_derivative, get_speed, get_ultima, get_vanna, get_vera, get_veta, get_vomma, get_zomma: The dividend yield to use for the calculation."
    • changedInput schema / properties / end_date / default
      Previous value: -"2026-10-14"New value: +"2026-10-27"
    • changedInput schema / properties / expiration_dates / description
      Previous value: -"The expiration dates to fit the surface over."New value: +"For get_gamma_exposure: The expiries to include. For get_implied_move, get_implied_volatility_term_structure, get_max_pain, get_put_call_ratio, get_volatility_skew: The expiries to use. For get_volatility_surface: The expiration dates to fit the surface over."
    • changedInput schema / properties / expiration_time_range / description
      Previous value: -"The number of days to use for the time to expiration."New value: +"The number of days to use for the time to expiration: the columns are the expirations 1 up to expiration_time_range - 1 days after the start date."
    • changedInput schema / properties / indicator / enum
      Previous value: -[
      -  "get_asian_option",
      -  "get_barrier_option",
      -  "get_binary_option",
      -  "get_binomial_model",
      -  "get_bjerksund_stensland",
      -  "get_black_scholes_model",
      -  "get_charm",
      -  "get_color",
      -  "get_delta",
      -  "get_dual_delta",
      -  "get_dual_gamma",
      -  "get_epsilon",
      -  "get_gamma",
      -  "get_garman_kohlhagen",
      -  "get_implied_volatility",
      -  "get_lambda",
      -  "get_monte_carlo_option_price",
      -  "get_option_chains",
      -  "get_partial_derivative",
      -  "get_put_call_parity",
      -  "get_rho",
      -  "get_risk_neutral_density",
      -  "get_speed",
      -  "get_stock_price_simulation",
      -  "get_strategy_payoff",
      -  "get_theta",
      -  "get_ultima",
      -  "get_vanna",
      -  "get_vega",
      -  "get_vera",
      -  "get_veta",
      -  "get_volatility_surface",
      -  "get_vomma",
      -  "get_zomma"
      -]New value: +[
      +  "get_asian_option",
      +  "get_barrier_option",
      +  "get_binary_option",
      +  "get_binomial_model",
      +  "get_bjerksund_stensland",
      +  "get_black_scholes_model",
      +  "get_charm",
      +  "get_color",
      +  "get_delta",
      +  "get_dual_delta",
      +  "get_dual_gamma",
      +  "get_epsilon",
      +  "get_gamma",
      +  "get_gamma_exposure",
      +  "get_garman_kohlhagen",
      +  "get_implied_move",
      +  "get_implied_volatility",
      +  "get_implied_volatility_term_structure",
      +  "get_lambda",
      +  "get_max_pain",
      +  "get_model_free_implied_volatility",
      +  "get_monte_carlo_option_price",
      +  "get_option_chains",
      +  "get_partial_derivative",
      +  "get_put_call_parity",
      +  "get_put_call_ratio",
      +  "get_rho",
      +  "get_risk_neutral_density",
      +  "get_speed",
      +  "get_stock_price_simulation",
      +  "get_strategy_payoff",
      +  "get_theta",
      +  "get_ultima",
      +  "get_vanna",
      +  "get_vega",
      +  "get_vera",
      +  "get_veta",
      +  "get_volatility_risk_premium",
      +  "get_volatility_skew",
      +  "get_volatility_surface",
      +  "get_vomma",
      +  "get_zomma"
      +]
    • addedInput schema / properties / number_of_expirations / anyOf
      Added value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / number_of_expirations / default
      Previous value: -6New value: +null
    • changedInput schema / properties / number_of_expirations / description
      Previous value: -"The number of near-term expiration dates to fit when `expiration_dates` is not given."New value: +"For get_gamma_exposure: The number of nearest expiries to include when no dates are given. For get_implied_move, get_implied_volatility_term_structure, get_max_pain, get_put_call_ratio, get_volatility_skew: The number of nearest expiries to use when no dates are given. For get_volatility_surface: The number of near-term expiration dates to fit when `expiration_dates` is not given. Leave unset to use the default of the indicator you selected. Defaults are 6 for get_gamma_exposure, get_max_pain, get_put_call_ratio, get_volatility_skew, get_volatility_surface; 10 for get_implied_volatility_term_structure; 4 for get_implied_move."
    • removedInput schema / properties / number_of_expirations / type
      Removed value: -"integer"
    • changedInput schema / properties / risk_free_rate / description
      Previous value: -"For get_asian_option, get_barrier_option, get_binary_option, get_binomial_model, get_bjerksund_stensland, get_black_scholes_model, get_charm, get_color, get_delta, get_dual_delta, get_dual_gamma, get_epsilon, get_gamma, get_implied_volatility, get_lambda, get_monte_carlo_option_price, get_partial_derivative, get_put_call_parity, get_rho, get_risk_neutral_density, get_speed, get_stock_price_simulation, get_theta, get_ultima, get_vanna, get_vega, get_vera, get_veta, get_volatility_surface, get_vomma, get_zomma: The risk free rate to use for the calculation. For get_garman_kohlhagen: The domestic risk free rate to use for the calculation."New value: +"For get_asian_option, get_barrier_option, get_binary_option, get_binomial_model, get_bjerksund_stensland, get_black_scholes_model, get_charm, get_color, get_delta, get_dual_delta, get_dual_gamma, get_epsilon, get_gamma, get_implied_volatility, get_lambda, get_monte_carlo_option_price, get_partial_derivative, get_put_call_parity, get_rho, get_risk_neutral_density, get_speed, get_theta, get_ultima, get_vanna, get_vega, get_vera, get_veta, get_volatility_surface, get_vomma, get_zomma: The risk free rate to use for the calculation. A rate passed here is used as given, as a continuously compounded rate. For get_garman_kohlhagen: The domestic risk free rate to use for the calculation. A rate passed here is used as given, as a continuously compounded rate. For get_stock_price_simulation: The risk free rate shown with show_input_info; it does not affect the simulated prices. A rate passed here is used as given, as a continuously compounded rate."
    • changedInput schema / properties / start_date / default
      Previous value: -"2021-10-15"New value: +"2021-10-28"
    • changedInput schema / properties / time_to_expiration / description
      Previous value: -"The number of year to use for the time to expiration."New value: +"The number of years to use for the time to expiration."
    • changedInput schema / properties / time_to_expiration / type
      Previous value: -"integer"New value: +"number"
  2. Changed81 schema fields changedv2.2.3
    • changedInput schema / properties / american_option / description
      Previous value: -"Value for american_option."New value: +"Whether to value an American option, which can be exercised at every node, instead of a European option."
    • removedInput schema / properties / american_option / title
      Removed value: -"American Option"
    • changedInput schema / properties / barrier_direction / description
      Previous value: -"Value for barrier_direction."New value: +"Either \"down\" or \"up\"."
    • removedInput schema / properties / barrier_direction / title
      Removed value: -"Barrier Direction"
    • changedInput schema / properties / barrier_percentage / description
      Previous value: -"Value for barrier_percentage."New value: +"The barrier level as a percentage of the current stock price."
    • removedInput schema / properties / barrier_percentage / title
      Removed value: -"Barrier Percentage"
    • removedInput schema / properties / benchmark_ticker / title
      Removed value: -"Benchmark Ticker"
    • changedInput schema / properties / cash_payout / description
      Previous value: -"Value for cash_payout."New value: +"The fixed cash amount paid out by a cash-or-nothing option when it expires in-the-money. Ignored for asset-or-nothing options."
    • removedInput schema / properties / cash_payout / title
      Removed value: -"Cash Payout"
    • changedInput schema / properties / dividend_yield / description
      Previous value: -"Value for dividend_yield."New value: +"The dividend yield to use for the calculation."
    • removedInput schema / properties / dividend_yield / title
      Removed value: -"Dividend Yield"
    • changedInput schema / properties / end_date / default
      Previous value: -"2026-10-02"New value: +"2026-10-14"
    • removedInput schema / properties / end_date / title
      Removed value: -"End Date"
    • changedInput schema / properties / expiration_date / description
      Previous value: -"Value for expiration_date."New value: +"For get_implied_volatility: The expiration date to use for the calculation. For get_option_chains, get_risk_neutral_density: The expiration date to use."
    • removedInput schema / properties / expiration_date / title
      Removed value: -"Expiration Date"
    • changedInput schema / properties / expiration_dates / description
      Previous value: -"Value for expiration_dates."New value: +"The expiration dates to fit the surface over."
    • removedInput schema / properties / expiration_dates / title
      Removed value: -"Expiration Dates"
    • changedInput schema / properties / expiration_time_range / description
      Previous value: -"Value for expiration_time_range."New value: +"The number of days to use for the time to expiration."
    • removedInput schema / properties / expiration_time_range / title
      Removed value: -"Expiration Time Range"
    • changedInput schema / properties / foreign_risk_free_rate / description
      Previous value: -"Value for foreign_risk_free_rate."New value: +"The foreign risk free rate to use for the calculation, which plays the role of the dividend yield in the standard Black-Scholes model."
    • removedInput schema / properties / foreign_risk_free_rate / title
      Removed value: -"Foreign Risk Free Rate"
    • changedInput schema / properties / indicator / description
      Previous value: -"Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators."New value: +"Name of the specific metric to calculate, one of the listed values. Required — search_metrics finds the indicator (and its tool) for a metric by name."
    • removedInput schema / properties / indicator / title
      Removed value: -"Indicator"
    • changedInput schema / properties / knock_type / description
      Previous value: -"Value for knock_type."New value: +"Either \"in\" or \"out\"."
    • removedInput schema / properties / knock_type / title
      Removed value: -"Knock Type"
    • changedInput schema / properties / legs / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {
      -      "anyOf": [
      -        {
      -          "type": "number"
      -        },
      -        {
      -          "type": "boolean"
      -        },
      -        {
      -          "type": "string"
      -        }
      -      ]
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "additionalProperties": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "boolean"
      +          },
      +          {
      +            "type": "string"
      +          }
      +        ]
      +      },
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / legs / description
      Previous value: -"Value for legs. Leave unset to use the default of the indicator you selected. Required by: get_strategy_payoff."New value: +"The strategy as a list of legs. An option leg: {'strike_price': 340, 'put_option': false, 'position': 'long' or 'short', 'premium': 4.2}; a stock leg: {'instrument': 'stock', 'position': 'long', 'premium': 336}. E.g. a bull call spread is a long call at a lower and a short call at a higher strike. Leave unset to use the default of the indicator you selected. Required by: get_strategy_payoff."
    • removedInput schema / properties / legs / title
      Removed value: -"Legs"
    • addedInput schema / properties / limit
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "The rows to return, like head and tail: 5 for the first five, -5 for the last five (the most recent of a time series). A table with its periods as columns (financial statements, ratios) keeps its first or last periods instead. For ETF holdings the largest (or, negative, the smallest) by weight, and for a list (e.g. news or a screener) its length."
      +}
    • changedInput schema / properties / number_of_expirations / description
      Previous value: -"Value for number_of_expirations."New value: +"The number of near-term expiration dates to fit when `expiration_dates` is not given."
    • removedInput schema / properties / number_of_expirations / title
      Removed value: -"Number Of Expirations"
    • changedInput schema / properties / number_of_strikes / description
      Previous value: -"Value for number_of_strikes."New value: +"The number of strikes in the evaluation grid."
    • removedInput schema / properties / number_of_strikes / title
      Removed value: -"Number Of Strikes"
    • changedInput schema / properties / option_type / description
      Previous value: -"Value for option_type."New value: +"Either \"cash-or-nothing\" or \"asset-or-nothing\"."
    • removedInput schema / properties / option_type / title
      Removed value: -"Option Type"
    • changedInput schema / properties / outlier_threshold / description
      Previous value: -"Value for outlier_threshold."New value: +"The number of median absolute deviations from the median implied volatility beyond which a quote is treated as an outlier and dropped before fitting."
    • removedInput schema / properties / outlier_threshold / title
      Removed value: -"Outlier Threshold"
    • changedInput schema / properties / put_option / description
      Previous value: -"Value for put_option."New value: +"Whether to calculate the put option rho."
    • removedInput schema / properties / put_option / title
      Removed value: -"Put Option"
    • removedInput schema / properties / quarterly / title
      Removed value: -"Quarterly"
    • changedInput schema / properties / rebate / description
      Previous value: -"Value for rebate."New value: +"The fixed cash amount paid out if the option knocks out (or fails to knock in)."
    • removedInput schema / properties / rebate / title
      Removed value: -"Rebate"
    • changedInput schema / properties / risk_free_rate / description
      Previous value: -"Value for risk_free_rate."New value: +"For get_asian_option, get_barrier_option, get_binary_option, get_binomial_model, get_bjerksund_stensland, get_black_scholes_model, get_charm, get_color, get_delta, get_dual_delta, get_dual_gamma, get_epsilon, get_gamma, get_implied_volatility, get_lambda, get_monte_carlo_option_price, get_partial_derivative, get_put_call_parity, get_rho, get_risk_neutral_density, get_speed, get_stock_price_simulation, get_theta, get_ultima, get_vanna, get_vega, get_vera, get_veta, get_volatility_surface, get_vomma, get_zomma: The risk free rate to use for the calculation. For get_garman_kohlhagen: The domestic risk free rate to use for the calculation."
    • removedInput schema / properties / risk_free_rate / title
      Removed value: -"Risk Free Rate"
    • changedInput schema / properties / seed / description
      Previous value: -"Value for seed."New value: +"The seed used to initialize the random number generator, ensuring reproducible results."
    • removedInput schema / properties / seed / title
      Removed value: -"Seed"
    • removedInput schema / properties / show_columns / title
      Removed value: -"Show Columns"
    • changedInput schema / properties / show_expiration_dates / description
      Previous value: -"Value for show_expiration_dates."New value: +"For get_implied_volatility: Whether to show the expiration dates. For get_option_chains: Whether to return the available expiration dates instead of the option chains."
    • removedInput schema / properties / show_expiration_dates / title
      Removed value: -"Show Expiration Dates"
    • changedInput schema / properties / show_input_info / description
      Previous value: -"Value for show_input_info."New value: +"Whether to show the input information."
    • removedInput schema / properties / show_input_info / title
      Removed value: -"Show Input Info"
    • changedInput schema / properties / show_standard_error / description
      Previous value: -"Value for show_standard_error."New value: +"Whether to also return the standard error of each Monte Carlo estimate as a second DataFrame."
    • removedInput schema / properties / show_standard_error / title
      Removed value: -"Show Standard Error"
    • addedInput schema / properties / show_unique_combinations / anyOf
      Added value: +[
      +  {
      +    "type": "boolean"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / show_unique_combinations / default
      Previous value: -falseNew value: +null
    • changedInput schema / properties / show_unique_combinations / description
      Previous value: -"Value for show_unique_combinations."New value: +"Whether to show the unique combinations of the stock prices. Leave unset to use the default of the indicator you selected. Defaults are True for get_stock_price_simulation."
    • removedInput schema / properties / show_unique_combinations / title
      Removed value: -"Show Unique Combinations"
    • removedInput schema / properties / show_unique_combinations / type
      Removed value: -"boolean"
    • changedInput schema / properties / simulations / description
      Previous value: -"Value for simulations."New value: +"The number of simulated stock price paths."
    • removedInput schema / properties / simulations / title
      Removed value: -"Simulations"
    • removedInput schema / properties / standardize / title
      Removed value: -"Standardize"
    • changedInput schema / properties / start_date / default
      Previous value: -"2021-10-03"New value: +"2021-10-15"
    • removedInput schema / properties / start_date / title
      Removed value: -"Start Date"
    • changedInput schema / properties / stock_price_range / description
      Previous value: -"Value for stock_price_range."New value: +"The percentage range to use for the stock prices at expiration."
    • removedInput schema / properties / stock_price_range / title
      Removed value: -"Stock Price Range"
    • changedInput schema / properties / stock_price_step_size / description
      Previous value: -"Value for stock_price_step_size."New value: +"The step size to use for the stock prices at expiration."
    • removedInput schema / properties / stock_price_step_size / title
      Removed value: -"Stock Price Step Size"
    • changedInput schema / properties / strike_price_range / description
      Previous value: -"Value for strike_price_range. Leave unset to use the default of the indicator you selected. Defaults differ between indicators."New value: +"Only strikes within this fraction of the current stock price, e.g. 0.05 for the strikes within 5% of it. Leave unset to use the default of the indicator you selected. Defaults differ between indicators."
    • removedInput schema / properties / strike_price_range / title
      Removed value: -"Strike Price Range"
    • changedInput schema / properties / strike_step_size / description
      Previous value: -"Value for strike_step_size."New value: +"The step size to use for the strike prices."
    • removedInput schema / properties / strike_step_size / title
      Removed value: -"Strike Step Size"
    • addedInput schema / properties / tickers / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  }
      +]
    • removedInput schema / properties / tickers / title
      Removed value: -"Tickers"
    • removedInput schema / properties / tickers / type
      Removed value: -"string"
    • changedInput schema / properties / time_steps / description
      Previous value: -"Value for time_steps."New value: +"The number of time steps used to build each simulated path."
    • removedInput schema / properties / time_steps / title
      Removed value: -"Time Steps"
    • changedInput schema / properties / time_to_expiration / description
      Previous value: -"Value for time_to_expiration."New value: +"The number of year to use for the time to expiration."
    • removedInput schema / properties / time_to_expiration / title
      Removed value: -"Time To Expiration"
    • changedInput schema / properties / timesteps / description
      Previous value: -"Value for timesteps."New value: +"The number of time steps to use for the binomial tree. This will be evenly distributed over the time to expiration."
    • removedInput schema / properties / timesteps / title
      Removed value: -"Timesteps"
    • removedInput schema / title
      Removed value: -"optionsArguments"
  3. Changed3 schema fields changedv2.2.1
    • changedInput schema / properties / end_date / default
      Previous value: -"2026-08-19"New value: +"2026-10-02"
    • changedInput schema / properties / start_date / default
      Previous value: -"2021-08-20"New value: +"2021-10-03"
    • changedInput schema / properties / stock_price_step_size / type
      Previous value: -"number"New value: +"integer"
  4. Changed25 schema fields changedv2.2.0
    • addedInput schema / properties / barrier_direction
      Added value: +{
      +  "default": "down",
      +  "description": "Value for barrier_direction.",
      +  "title": "Barrier Direction",
      +  "type": "string"
      +}
    • addedInput schema / properties / barrier_percentage
      Added value: +{
      +  "default": 0.9,
      +  "description": "Value for barrier_percentage.",
      +  "title": "Barrier Percentage",
      +  "type": "number"
      +}
    • addedInput schema / properties / cash_payout
      Added value: +{
      +  "default": 1,
      +  "description": "Value for cash_payout.",
      +  "title": "Cash Payout",
      +  "type": "number"
      +}
    • changedInput schema / properties / end_date / default
      Previous value: -"2026-07-14"New value: +"2026-08-19"
    • addedInput schema / properties / expiration_dates
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Value for expiration_dates.",
      +  "title": "Expiration Dates"
      +}
    • addedInput schema / properties / foreign_risk_free_rate
      Added value: +{
      +  "default": 0,
      +  "description": "Value for foreign_risk_free_rate.",
      +  "title": "Foreign Risk Free Rate",
      +  "type": "number"
      +}
    • changedInput schema / properties / indicator / enum
      Previous value: -[
      -  "get_binomial_model",
      -  "get_black_scholes_model",
      -  "get_charm",
      -  "get_color",
      -  "get_delta",
      -  "get_dual_delta",
      -  "get_dual_gamma",
      -  "get_epsilon",
      -  "get_gamma",
      -  "get_implied_volatility",
      -  "get_lambda",
      -  "get_option_chains",
      -  "get_partial_derivative",
      -  "get_rho",
      -  "get_speed",
      -  "get_stock_price_simulation",
      -  "get_theta",
      -  "get_ultima",
      -  "get_vanna",
      -  "get_vega",
      -  "get_vera",
      -  "get_veta",
      -  "get_vomma",
      -  "get_zomma"
      -]New value: +[
      +  "get_asian_option",
      +  "get_barrier_option",
      +  "get_binary_option",
      +  "get_binomial_model",
      +  "get_bjerksund_stensland",
      +  "get_black_scholes_model",
      +  "get_charm",
      +  "get_color",
      +  "get_delta",
      +  "get_dual_delta",
      +  "get_dual_gamma",
      +  "get_epsilon",
      +  "get_gamma",
      +  "get_garman_kohlhagen",
      +  "get_implied_volatility",
      +  "get_lambda",
      +  "get_monte_carlo_option_price",
      +  "get_option_chains",
      +  "get_partial_derivative",
      +  "get_put_call_parity",
      +  "get_rho",
      +  "get_risk_neutral_density",
      +  "get_speed",
      +  "get_stock_price_simulation",
      +  "get_strategy_payoff",
      +  "get_theta",
      +  "get_ultima",
      +  "get_vanna",
      +  "get_vega",
      +  "get_vera",
      +  "get_veta",
      +  "get_volatility_surface",
      +  "get_vomma",
      +  "get_zomma"
      +]
    • addedInput schema / properties / knock_type
      Added value: +{
      +  "default": "out",
      +  "description": "Value for knock_type.",
      +  "title": "Knock Type",
      +  "type": "string"
      +}
    • addedInput schema / properties / legs
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "boolean"
      +          },
      +          {
      +            "type": "string"
      +          }
      +        ]
      +      },
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Value for legs. Leave unset to use the default of the indicator you selected. Required by: get_strategy_payoff.",
      +  "title": "Legs"
      +}
    • addedInput schema / properties / number_of_expirations
      Added value: +{
      +  "default": 6,
      +  "description": "Value for number_of_expirations.",
      +  "title": "Number Of Expirations",
      +  "type": "integer"
      +}
    • addedInput schema / properties / number_of_strikes
      Added value: +{
      +  "default": 200,
      +  "description": "Value for number_of_strikes.",
      +  "title": "Number Of Strikes",
      +  "type": "integer"
      +}
    • addedInput schema / properties / option_type
      Added value: +{
      +  "default": "cash-or-nothing",
      +  "description": "Value for option_type.",
      +  "title": "Option Type",
      +  "type": "string"
      +}
    • addedInput schema / properties / outlier_threshold
      Added value: +{
      +  "default": 5,
      +  "description": "Value for outlier_threshold.",
      +  "title": "Outlier Threshold",
      +  "type": "number"
      +}
    • addedInput schema / properties / rebate
      Added value: +{
      +  "default": 0,
      +  "description": "Value for rebate.",
      +  "title": "Rebate",
      +  "type": "number"
      +}
    • addedInput schema / properties / seed
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Value for seed.",
      +  "title": "Seed"
      +}
    • addedInput schema / properties / show_standard_error
      Added value: +{
      +  "default": false,
      +  "description": "Value for show_standard_error.",
      +  "title": "Show Standard Error",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / simulations
      Added value: +{
      +  "default": 10000,
      +  "description": "Value for simulations.",
      +  "title": "Simulations",
      +  "type": "integer"
      +}
    • changedInput schema / properties / start_date / default
      Previous value: -"2021-07-15"New value: +"2021-08-20"
    • addedInput schema / properties / stock_price_range
      Added value: +{
      +  "default": 0.5,
      +  "description": "Value for stock_price_range.",
      +  "title": "Stock Price Range",
      +  "type": "number"
      +}
    • addedInput schema / properties / stock_price_step_size
      Added value: +{
      +  "default": 1,
      +  "description": "Value for stock_price_step_size.",
      +  "title": "Stock Price Step Size",
      +  "type": "number"
      +}
    • addedInput schema / properties / strike_price_range / anyOf
      Added value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / strike_price_range / default
      Previous value: -0.25New value: +null
    • changedInput schema / properties / strike_price_range / description
      Previous value: -"Value for strike_price_range."New value: +"Value for strike_price_range. Leave unset to use the default of the indicator you selected. Defaults differ between indicators."
    • removedInput schema / properties / strike_price_range / type
      Removed value: -"number"
    • addedInput schema / properties / time_steps
      Added value: +{
      +  "default": 100,
      +  "description": "Value for time_steps.",
      +  "title": "Time Steps",
      +  "type": "integer"
      +}
  5. Changed3 schema fields changed
    • changedInput schema / properties / end_date / default
      Previous value: -"2026-07-09"New value: +"2026-07-14"
    • addedInput schema / properties / standardize
      Added value: +{
      +  "default": false,
      +  "description": "Return the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.",
      +  "title": "Standardize",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / start_date / default
      Previous value: -"2021-07-10"New value: +"2021-07-15"
  6. Changed2 schema fields changedv2.1.4
    • changedInput schema / properties / end_date / default
      Previous value: -"2026-06-27"New value: +"2026-07-09"
    • changedInput schema / properties / start_date / default
      Previous value: -"2021-06-28"New value: +"2021-07-10"
  7. Changed2 schema fields changedv2.1.3
    • changedInput schema / properties / end_date / default
      Previous value: -"2026-06-23"New value: +"2026-06-27"
    • changedInput schema / properties / start_date / default
      Previous value: -"2021-06-24"New value: +"2021-06-28"
  8. Changed4 schema fields changedv0.1.2
    • changedInput schema / properties / end_date / default
      Previous value: -"2026-06-22"New value: +"2026-06-23"
    • removedInput schema / properties / rounding
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "integer"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Number of decimal places to round results to.",
      -  "title": "Rounding"
      -}
    • addedInput schema / properties / show_columns
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
      +  "title": "Show Columns"
      +}
    • changedInput schema / properties / start_date / default
      Previous value: -"2021-06-23"New value: +"2021-06-24"
  9. Addedv0.1.1

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish a safe, read-only, idempotent, open-world operation, and the description adds genuine data-provenance context: market metrics use the price quoted with the live chain (else last close) and rates/realized volatility from price history, plus the constraint that days= cannot exceed the longest listed expiry. It does not cover failure modes or rate limits, but against these annotations it is well above minimum.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: capability summary first, then indicator-specific operating notes grouped by category (models, market metrics, per-ticker metrics). Every sentence carries an actionable constraint; the only cost is that it is a long block rather than a structured list, which slightly hurts scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 43-parameter dispatcher with an output schema, the description covers the highest-risk ambiguities: required tickers, default-vs-explicit behavior for strike_price_range, show_unique_combinations and number_of_expirations, as-of-date handling, and expiry selection. An agent can select an indicator and call it without opening the schema for most common paths.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so a 3 would be baseline; the description adds real meaning beyond it — tickers format, a concrete legs example for get_strategy_payoff, the iterative show_expiration_dates/expiration_date workflow, and the fact that strike_price_range narrows both the binomial model grid and the Greeks/chains. It still leaves many indicator-specific params (charm, color, dual delta, etc.) to the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific domain — option pricing and Greeks — plus the models and metrics it covers, so it is clearly more than the generic name 'options'. It does not distinguish itself from siblings like 'volatility' or 'models', which could overlap on volatility surface/vol metrics, so it falls short of the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete per-indicator guidance: tickers must be provided, use comma-separated values for multiples, pass show_unique_combinations=false for all simulated paths, use show_expiration_dates=true then expiration_date= to pick a chain, and leave end_date at today. It also points to search_metrics for finding an indicator by metric name. No explicit when-not-to-use-this-tool versus sibling tools like volatility or models.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.