Skip to main content
Glama
JerBouma

Finance Toolkit

fixed_income

Read-onlyIdempotent

Calculate bond and derivative valuations from bond terms and yield curves: duration, present value, yield to maturity, Z-spread, key rate duration, default probability, and option-adjusted spread.

Instructions

Bond and derivative valuation calculations (bond duration, present value, yield to maturity, derivative pricing, par yield, forward rate, breakeven inflation rate, key rate duration, yield curve spread, Z-spread, bond-equivalent yield, Taylor-series price change estimate). No tickers or countries needed — pass the bond's terms directly, e.g. par_value=1000, coupon_rate=0.05, years_to_maturity=10 with bond_price or yield_to_maturity. A bond's price is get_present_value. The curve-based calculations (par yield, forward rate, yield curve spread, Z-spread, key rate duration, breakeven inflation) take the curve as spot_rates (nominal_rates and real_rates for breakeven inflation), the decimal rate per maturity in years as a number (a curve column '10Y' becomes '10', '6M' becomes '0.5'), e.g. {'1': 0.042, '2': 0.040, '5': 0.041, '10': 0.043}; without it they use a fixed sample curve for illustration. Pass a zero-coupon (spot) curve, not a par curve: from the rates tool get_zero_coupon_curve (annually compounded), get_bank_of_england_yield_curve (UK, continuously compounded), the Euro Area and Germany curves of get_government_bond_yield_curve (continuously compounded zero curves; its other countries are par curves), get_hqm_corporate_bond_yield_curve with rate='spot' (US corporate, semi-annual bond-equivalent) or get_eiopa_risk_free_rate (annually compounded); get_treasury_rates is a par curve (semi-annual bond-equivalent) and only approximates one. Compounding assumed: par yield, Z-spread and key rate duration read the curve as nominal rates compounded frequency times a year, forward rate as annually compounded rates, and yield curve spread and breakeven inflation subtract the rates as given. Bond prices are clean prices; a maturity between coupon dates (2.5 years) discounts each cash flow over its fractional period. get_option_adjusted_spread values a callable bond on a Ho-Lee tree (bond_price, coupon_rate, years_to_maturity, call_price, years_to_first_call, volatility=0.01) and returns the OAS, the straight bond price, the option value and the effective duration and convexity; without spot_rates it uses the current US Treasury zero-coupon curve. get_implied_default_probability turns credit spreads (spreads=0.012 or 'BBB:0.011, B:0.031', recovery_rate=0.4, horizons='1,5,10') into hazard rates and default probabilities; without spreads it uses the latest ICE BofA spread per rating, which needs a FRED API key.

Input Schema

NameRequiredDescriptionDefault
guessNoFor get_yield_to_maturity: The initial guess for the yield to maturity. For get_z_spread: The initial guess for the Z-spread. Leave unset to use the default of the indicator you selected. Defaults are 0.01 for get_z_spread; 0.05 for get_yield_to_maturity.
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.
modelNoThe type of model to use for calculating the derivative price.black
tenorNoThe tenor (length in years) of the underlying swap.
spreadsNoThe credit spread as a decimal (0.01 for 100 basis points), or several by name as a dictionary, Series or string such as "BBB:0.011, B:0.031".
end_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-27
horizonsNoThe horizons in years, as a list or a comma-separated string.
maturityNoThe maturity (or maturities), in years, to calculate the breakeven inflation rate for. If not provided, a range of maturities will be used.
notionalNoThe notional amount of the derivative.
countriesNoCountry names, comma-separated or as a list, e.g. 'United States,Germany,Japan'.
frequencyNoFor get_duration, get_present_value: The frequency of coupon payments per year. For get_yield_to_maturity, get_par_yield, get_key_rate_duration, get_z_spread, get_taylor_price_change: The number of coupon payments per year. For get_option_adjusted_spread: The coupon payments per year. Leave unset to use the default of the indicator you selected. Defaults are 1 for get_duration, get_key_rate_duration, get_par_yield, get_present_value, get_taylor_price_change, get_yield_to_maturity, get_z_spread; 2 for get_option_adjusted_spread.
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.
par_valueNoThe par value of the bond. Leave unset to use the default of the indicator you selected. Defaults are 100 for get_duration, get_key_rate_duration, get_par_yield, get_present_value, get_taylor_price_change, get_yield_to_maturity, get_z_spread; 100.0 for get_option_adjusted_spread.
quarterlyNoReturn quarterly data instead of annual when True.
toleranceNoThe tolerance level for convergence.
bond_priceNoClean price of the bond per 100 face value. Leave unset to use the default of the indicator you selected. Defaults are None for get_yield_to_maturity, get_z_spread; 100.0 for get_option_adjusted_spread.
call_priceNoThe price at which the issuer can call the bond, None for a bond without a call.
real_ratesNoThe real (inflation-protected) yield curve in decimals, indexed by maturity in years (a number, or a label such as '6M' or '10Y').
spot_ratesNoThe zero-coupon curve (annually compounded) by maturity in years.
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-28
volatilityNoFor get_derivative_price: The volatility of the underlying swap rate, quoted on the basis given by `volatility_type`. For get_option_adjusted_spread: The volatility of the short rate in absolute terms.
coupon_rateNoAnnual coupon rate as a decimal, e.g. 0.05 for 5 %. Leave unset to use the default of the indicator you selected. Defaults are 0.05 for get_key_rate_duration, get_option_adjusted_spread, get_yield_to_maturity, get_z_spread; None for get_duration, get_present_value, get_taylor_price_change.
is_receiverNoTrue if the holder is the receiver of the derivative, False if the holder is the payer.
strike_rateNoOption strike price.
far_maturityNoThe further maturity (or maturities), in years. If not provided, a range of far maturities will be used.
forward_rateNoThe forward rate as derived from the swap curve.
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.
yield_changeNoFor get_key_rate_duration: The size of the shock applied to each key rate, up and down (in decimal). For get_taylor_price_change: The hypothetical change in yield to maturity, e.g. 0.01 for a 100 basis point increase. Leave unset to use the default of the indicator you selected. Defaults are 0.0001 for get_key_rate_duration; 0.01 for get_taylor_price_change.
duration_typeNoThe type of duration to calculate.modified
long_maturityNoThe longer maturity (or maturities), in years. If not provided, a range of long maturities will be used.
near_maturityNoThe nearer maturity (or maturities), in years. If not provided, a range of near maturities will be used.
nominal_ratesNoThe nominal (non-inflation-protected) yield curve in decimals, indexed by maturity in years (a number, or a label such as '6M' or '10Y').
recovery_rateNoThe share of the face value recovered on default.
discount_yieldNoThe money-market discount yield of the instrument (in decimal). If not provided, a range of discount yields will be used.
include_payoffNoTrue to include the payoff in the output, False otherwise.
max_iterationsNoThe maximum number of iterations for convergence.
risk_free_rateNoThe risk-free interest rate used to discount the swap's payment dates, read as a continuously compounded rate on a flat curve (discount factor exp(-r * t)).
short_maturityNoThe shorter maturity (or maturities), in years. If not provided, a range of short maturities will be used.
show_input_infoNoFor get_derivative_price: True to display input information, False otherwise. For get_duration, get_present_value, get_yield_to_maturity, get_par_yield, get_forward_rate, get_breakeven_inflation_rate, get_key_rate_duration, get_yield_curve_spread, get_z_spread, get_bond_equivalent_yield, get_taylor_price_change: Whether to display input information.
volatility_typeNoThe convention `volatility` is quoted on, either 'lognormal' (relative to the forward rate) or 'normal' (absolute, in rate units).
days_to_maturityNoThe number of days until the instrument matures. If not provided, a range of typical T-bill maturities will be used.
key_rate_maturityNoThe maturity (or maturities), in years, of the curve point(s) to shock. Must be present in the index of `spot_rates`.
payment_frequencyNoNumber of fixed-leg payments per year on the underlying swap (e.g. 1 for annual, 2 for semi-annual, 4 for quarterly).
years_to_maturityNoYears remaining until the bond matures. Leave unset to use the default of the indicator you selected. Defaults are None for get_derivative_price, get_duration, get_key_rate_duration, get_par_yield, get_present_value, get_taylor_price_change, get_yield_to_maturity, get_z_spread; 10.0 for get_option_adjusted_spread.
yield_to_maturityNoFor get_duration, get_present_value: The yield to maturity of the bond. For get_taylor_price_change: The current yield to maturity of the bond.
years_to_first_callNoThe years until the bond can first be called.

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed24 schema fields changedv2.3.0
    • changedInput schema / properties / bond_price / description
      Previous value: -"Clean price of the bond per 100 face value."New value: +"Clean price of the bond per 100 face value. Leave unset to use the default of the indicator you selected. Defaults are None for get_yield_to_maturity, get_z_spread; 100.0 for get_option_adjusted_spread."
    • addedInput schema / properties / call_price
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": 100,
      +  "description": "The price at which the issuer can call the bond, None for a bond without a call."
      +}
    • changedInput schema / properties / coupon_rate / description
      Previous value: -"Annual coupon rate as a decimal, e.g. 0.05 for 5 %. Leave unset to use the default of the indicator you selected. Defaults are 0.05 for get_key_rate_duration, get_yield_to_maturity, get_z_spread; None for get_duration, get_present_value, get_taylor_price_change."New value: +"Annual coupon rate as a decimal, e.g. 0.05 for 5 %. Leave unset to use the default of the indicator you selected. Defaults are 0.05 for get_key_rate_duration, get_option_adjusted_spread, get_yield_to_maturity, get_z_spread; None for get_duration, get_present_value, get_taylor_price_change."
    • changedInput schema / properties / end_date / default
      Previous value: -"2026-10-14"New value: +"2026-10-27"
    • addedInput schema / properties / frequency / anyOf
      Added value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / frequency / default
      Previous value: -1New value: +null
    • changedInput schema / properties / frequency / description
      Previous value: -"For get_duration, get_present_value: The frequency of coupon payments per year. For get_yield_to_maturity, get_par_yield, get_key_rate_duration, get_z_spread, get_taylor_price_change: The number of coupon payments per year."New value: +"For get_duration, get_present_value: The frequency of coupon payments per year. For get_yield_to_maturity, get_par_yield, get_key_rate_duration, get_z_spread, get_taylor_price_change: The number of coupon payments per year. For get_option_adjusted_spread: The coupon payments per year. Leave unset to use the default of the indicator you selected. Defaults are 1 for get_duration, get_key_rate_duration, get_par_yield, get_present_value, get_taylor_price_change, get_yield_to_maturity, get_z_spread; 2 for get_option_adjusted_spread."
    • removedInput schema / properties / frequency / type
      Removed value: -"integer"
    • addedInput schema / properties / horizons
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "The horizons in years, as a list or a comma-separated string."
      +}
    • changedInput schema / properties / indicator / enum
      Previous value: -[
      -  "get_derivative_price",
      -  "get_duration",
      -  "get_present_value",
      -  "get_yield_to_maturity",
      -  "get_par_yield",
      -  "get_forward_rate",
      -  "get_breakeven_inflation_rate",
      -  "get_key_rate_duration",
      -  "get_yield_curve_spread",
      -  "get_z_spread",
      -  "get_bond_equivalent_yield",
      -  "get_taylor_price_change"
      -]New value: +[
      +  "get_derivative_price",
      +  "get_duration",
      +  "get_present_value",
      +  "get_yield_to_maturity",
      +  "get_par_yield",
      +  "get_forward_rate",
      +  "get_breakeven_inflation_rate",
      +  "get_key_rate_duration",
      +  "get_yield_curve_spread",
      +  "get_z_spread",
      +  "get_option_adjusted_spread",
      +  "get_implied_default_probability",
      +  "get_bond_equivalent_yield",
      +  "get_taylor_price_change"
      +]
    • changedInput schema / properties / nominal_rates / description
      Previous value: -"The nominal (non-inflation-protected) yield curve, indexed by maturity in years (in decimal)."New value: +"The nominal (non-inflation-protected) yield curve in decimals, indexed by maturity in years (a number, or a label such as '6M' or '10Y')."
    • addedInput schema / properties / par_value / anyOf
      Added value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / par_value / default
      Previous value: -100New value: +null
    • changedInput schema / properties / par_value / description
      Previous value: -"For get_duration, get_present_value, get_key_rate_duration, get_z_spread, get_taylor_price_change: The par value (face value) of the bond. For get_yield_to_maturity: The par value (face value) of the bond. This is the original price when it was issued by the issuer. For get_par_yield: The face value of the bond."New value: +"The par value of the bond. Leave unset to use the default of the indicator you selected. Defaults are 100 for get_duration, get_key_rate_duration, get_par_yield, get_present_value, get_taylor_price_change, get_yield_to_maturity, get_z_spread; 100.0 for get_option_adjusted_spread."
    • removedInput schema / properties / par_value / type
      Removed value: -"number"
    • changedInput schema / properties / real_rates / description
      Previous value: -"The real (inflation-protected) yield curve, indexed by maturity in years (in decimal)."New value: +"The real (inflation-protected) yield curve in decimals, indexed by maturity in years (a number, or a label such as '6M' or '10Y')."
    • addedInput schema / properties / recovery_rate
      Added value: +{
      +  "default": 0.4,
      +  "description": "The share of the face value recovered on default.",
      +  "type": "number"
      +}
    • changedInput schema / properties / risk_free_rate / description
      Previous value: -"The risk-free interest rate."New value: +"The risk-free interest rate used to discount the swap's payment dates, read as a continuously compounded rate on a flat curve (discount factor exp(-r * t))."
    • changedInput schema / properties / spot_rates / description
      Previous value: -"The yield curve, indexed by maturity in years (in decimal)."New value: +"The zero-coupon curve (annually compounded) by maturity in years."
    • addedInput schema / properties / spreads
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "The credit spread as a decimal (0.01 for 100 basis points), or several by name as a dictionary, Series or string such as \"BBB:0.011, B:0.031\"."
      +}
    • changedInput schema / properties / start_date / default
      Previous value: -"2021-10-15"New value: +"2021-10-28"
    • changedInput schema / properties / volatility / description
      Previous value: -"The volatility of the underlying swap rate, quoted on the basis given by `volatility_type`."New value: +"For get_derivative_price: The volatility of the underlying swap rate, quoted on the basis given by `volatility_type`. For get_option_adjusted_spread: The volatility of the short rate in absolute terms."
    • addedInput schema / properties / years_to_first_call
      Added value: +{
      +  "default": 2,
      +  "description": "The years until the bond can first be called.",
      +  "type": "number"
      +}
    • changedInput schema / properties / years_to_maturity / description
      Previous value: -"Years remaining until the bond matures."New value: +"Years remaining until the bond matures. Leave unset to use the default of the indicator you selected. Defaults are None for get_derivative_price, get_duration, get_key_rate_duration, get_par_yield, get_present_value, get_taylor_price_change, get_yield_to_maturity, get_z_spread; 10.0 for get_option_adjusted_spread."
  2. Changed93 schema fields changedv2.2.3
    • changedInput schema / properties / bond_price / anyOf
      Previous value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "items": {
      +      "type": "number"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / bond_price / title
      Removed value: -"Bond Price"
    • addedInput schema / properties / countries / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  }
      +]
    • changedInput schema / properties / countries / description
      Previous value: -"Comma-separated country names, e.g. 'United States,Germany,Japan'."New value: +"Country names, comma-separated or as a list, e.g. 'United States,Germany,Japan'."
    • removedInput schema / properties / countries / title
      Removed value: -"Countries"
    • removedInput schema / properties / countries / type
      Removed value: -"string"
    • changedInput schema / properties / coupon_rate / anyOf
      Previous value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "items": {
      +      "type": "number"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / coupon_rate / title
      Removed value: -"Coupon Rate"
    • changedInput schema / properties / days_to_maturity / anyOf
      Previous value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "items": {
      +      "type": "number"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / days_to_maturity / description
      Previous value: -"Value for days_to_maturity."New value: +"The number of days until the instrument matures. If not provided, a range of typical T-bill maturities will be used."
    • removedInput schema / properties / days_to_maturity / title
      Removed value: -"Days To Maturity"
    • changedInput schema / properties / discount_yield / anyOf
      Previous value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "items": {
      +      "type": "number"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / discount_yield / description
      Previous value: -"Value for discount_yield."New value: +"The money-market discount yield of the instrument (in decimal). If not provided, a range of discount yields will be used."
    • removedInput schema / properties / discount_yield / title
      Removed value: -"Discount Yield"
    • changedInput schema / properties / duration_type / description
      Previous value: -"Value for duration_type."New value: +"The type of duration to calculate."
    • removedInput schema / properties / duration_type / title
      Removed value: -"Duration Type"
    • 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 / far_maturity / anyOf
      Previous value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "items": {
      +      "type": "number"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / far_maturity / description
      Previous value: -"Value for far_maturity."New value: +"The further maturity (or maturities), in years. If not provided, a range of far maturities will be used."
    • removedInput schema / properties / far_maturity / title
      Removed value: -"Far Maturity"
    • changedInput schema / properties / forward_rate / description
      Previous value: -"Value for forward_rate."New value: +"The forward rate as derived from the swap curve."
    • removedInput schema / properties / forward_rate / title
      Removed value: -"Forward Rate"
    • changedInput schema / properties / frequency / description
      Previous value: -"Value for frequency."New value: +"For get_duration, get_present_value: The frequency of coupon payments per year. For get_yield_to_maturity, get_par_yield, get_key_rate_duration, get_z_spread, get_taylor_price_change: The number of coupon payments per year."
    • removedInput schema / properties / frequency / title
      Removed value: -"Frequency"
    • changedInput schema / properties / guess / description
      Previous value: -"Value for guess. Leave unset to use the default of the indicator you selected. Defaults are 0.01 for get_z_spread; 0.05 for get_yield_to_maturity."New value: +"For get_yield_to_maturity: The initial guess for the yield to maturity. For get_z_spread: The initial guess for the Z-spread. Leave unset to use the default of the indicator you selected. Defaults are 0.01 for get_z_spread; 0.05 for get_yield_to_maturity."
    • removedInput schema / properties / guess / title
      Removed value: -"Guess"
    • changedInput schema / properties / include_payoff / description
      Previous value: -"Value for include_payoff."New value: +"True to include the payoff in the output, False otherwise."
    • removedInput schema / properties / include_payoff / title
      Removed value: -"Include Payoff"
    • 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 / is_receiver / description
      Previous value: -"Value for is_receiver."New value: +"True if the holder is the receiver of the derivative, False if the holder is the payer."
    • removedInput schema / properties / is_receiver / title
      Removed value: -"Is Receiver"
    • changedInput schema / properties / key_rate_maturity / anyOf
      Previous value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "items": {
      +      "type": "number"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / key_rate_maturity / description
      Previous value: -"Value for key_rate_maturity."New value: +"The maturity (or maturities), in years, of the curve point(s) to shock. Must be present in the index of `spot_rates`."
    • removedInput schema / properties / key_rate_maturity / title
      Removed value: -"Key Rate Maturity"
    • 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 / long_maturity / anyOf
      Previous value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "items": {
      +      "type": "number"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / long_maturity / description
      Previous value: -"Value for long_maturity."New value: +"The longer maturity (or maturities), in years. If not provided, a range of long maturities will be used."
    • removedInput schema / properties / long_maturity / title
      Removed value: -"Long Maturity"
    • changedInput schema / properties / maturity / anyOf
      Previous value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "items": {
      +      "type": "number"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / maturity / description
      Previous value: -"Value for maturity."New value: +"The maturity (or maturities), in years, to calculate the breakeven inflation rate for. If not provided, a range of maturities will be used."
    • removedInput schema / properties / maturity / title
      Removed value: -"Maturity"
    • changedInput schema / properties / max_iterations / description
      Previous value: -"Value for max_iterations."New value: +"The maximum number of iterations for convergence."
    • removedInput schema / properties / max_iterations / title
      Removed value: -"Max Iterations"
    • changedInput schema / properties / model / description
      Previous value: -"Value for model."New value: +"The type of model to use for calculating the derivative price."
    • removedInput schema / properties / model / title
      Removed value: -"Model"
    • changedInput schema / properties / near_maturity / anyOf
      Previous value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "items": {
      +      "type": "number"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / near_maturity / description
      Previous value: -"Value for near_maturity."New value: +"The nearer maturity (or maturities), in years. If not provided, a range of near maturities will be used."
    • removedInput schema / properties / near_maturity / title
      Removed value: -"Near Maturity"
    • changedInput schema / properties / nominal_rates / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {
      +      "type": "number"
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / nominal_rates / description
      Previous value: -"Value for nominal_rates."New value: +"The nominal (non-inflation-protected) yield curve, indexed by maturity in years (in decimal)."
    • removedInput schema / properties / nominal_rates / title
      Removed value: -"Nominal Rates"
    • changedInput schema / properties / notional / description
      Previous value: -"Value for notional."New value: +"The notional amount of the derivative."
    • removedInput schema / properties / notional / title
      Removed value: -"Notional"
    • changedInput schema / properties / par_value / description
      Previous value: -"Value for par_value."New value: +"For get_duration, get_present_value, get_key_rate_duration, get_z_spread, get_taylor_price_change: The par value (face value) of the bond. For get_yield_to_maturity: The par value (face value) of the bond. This is the original price when it was issued by the issuer. For get_par_yield: The face value of the bond."
    • removedInput schema / properties / par_value / title
      Removed value: -"Par Value"
    • changedInput schema / properties / payment_frequency / description
      Previous value: -"Value for payment_frequency."New value: +"Number of fixed-leg payments per year on the underlying swap (e.g. 1 for annual, 2 for semi-annual, 4 for quarterly)."
    • removedInput schema / properties / payment_frequency / title
      Removed value: -"Payment Frequency"
    • removedInput schema / properties / quarterly / title
      Removed value: -"Quarterly"
    • changedInput schema / properties / real_rates / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {
      +      "type": "number"
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / real_rates / description
      Previous value: -"Value for real_rates."New value: +"The real (inflation-protected) yield curve, indexed by maturity in years (in decimal)."
    • removedInput schema / properties / real_rates / title
      Removed value: -"Real Rates"
    • changedInput schema / properties / risk_free_rate / description
      Previous value: -"Value for risk_free_rate."New value: +"The risk-free interest rate."
    • removedInput schema / properties / risk_free_rate / title
      Removed value: -"Risk Free Rate"
    • changedInput schema / properties / short_maturity / anyOf
      Previous value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "items": {
      +      "type": "number"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / short_maturity / description
      Previous value: -"Value for short_maturity."New value: +"The shorter maturity (or maturities), in years. If not provided, a range of short maturities will be used."
    • removedInput schema / properties / short_maturity / title
      Removed value: -"Short Maturity"
    • removedInput schema / properties / show_columns / title
      Removed value: -"Show Columns"
    • changedInput schema / properties / show_input_info / description
      Previous value: -"Value for show_input_info."New value: +"For get_derivative_price: True to display input information, False otherwise. For get_duration, get_present_value, get_yield_to_maturity, get_par_yield, get_forward_rate, get_breakeven_inflation_rate, get_key_rate_duration, get_yield_curve_spread, get_z_spread, get_bond_equivalent_yield, get_taylor_price_change: Whether to display input information."
    • removedInput schema / properties / show_input_info / title
      Removed value: -"Show Input Info"
    • changedInput schema / properties / spot_rates / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {
      +      "type": "number"
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / spot_rates / description
      Previous value: -"Value for spot_rates."New value: +"The yield curve, indexed by maturity in years (in decimal)."
    • removedInput schema / properties / spot_rates / title
      Removed value: -"Spot Rates"
    • 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 / strike_rate / anyOf
      Previous value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "items": {
      +      "type": "number"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / strike_rate / title
      Removed value: -"Strike Rate"
    • changedInput schema / properties / tenor / description
      Previous value: -"Value for tenor."New value: +"The tenor (length in years) of the underlying swap."
    • removedInput schema / properties / tenor / title
      Removed value: -"Tenor"
    • changedInput schema / properties / tolerance / description
      Previous value: -"Value for tolerance."New value: +"The tolerance level for convergence."
    • removedInput schema / properties / tolerance / title
      Removed value: -"Tolerance"
    • changedInput schema / properties / volatility / description
      Previous value: -"Value for volatility."New value: +"The volatility of the underlying swap rate, quoted on the basis given by `volatility_type`."
    • removedInput schema / properties / volatility / title
      Removed value: -"Volatility"
    • changedInput schema / properties / volatility_type / description
      Previous value: -"Value for volatility_type."New value: +"The convention `volatility` is quoted on, either 'lognormal' (relative to the forward rate) or 'normal' (absolute, in rate units)."
    • removedInput schema / properties / volatility_type / title
      Removed value: -"Volatility Type"
    • changedInput schema / properties / years_to_maturity / anyOf
      Previous value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "items": {
      +      "type": "number"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / years_to_maturity / title
      Removed value: -"Years To Maturity"
    • changedInput schema / properties / yield_change / description
      Previous value: -"Value for yield_change. Leave unset to use the default of the indicator you selected. Defaults are 0.0001 for get_key_rate_duration; 0.01 for get_taylor_price_change."New value: +"For get_key_rate_duration: The size of the shock applied to each key rate, up and down (in decimal). For get_taylor_price_change: The hypothetical change in yield to maturity, e.g. 0.01 for a 100 basis point increase. Leave unset to use the default of the indicator you selected. Defaults are 0.0001 for get_key_rate_duration; 0.01 for get_taylor_price_change."
    • removedInput schema / properties / yield_change / title
      Removed value: -"Yield Change"
    • changedInput schema / properties / yield_to_maturity / description
      Previous value: -"Value for yield_to_maturity."New value: +"For get_duration, get_present_value: The yield to maturity of the bond. For get_taylor_price_change: The current yield to maturity of the bond."
    • removedInput schema / properties / yield_to_maturity / title
      Removed value: -"Yield To Maturity"
    • removedInput schema / title
      Removed value: -"fixed_incomeArguments"
  3. Changed2 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"
  4. Changed21 schema fields changedv2.2.0
    • changedInput schema / properties / coupon_rate / description
      Previous value: -"Annual coupon rate as a decimal, e.g. 0.05 for 5 %."New value: +"Annual coupon rate as a decimal, e.g. 0.05 for 5 %. Leave unset to use the default of the indicator you selected. Defaults are 0.05 for get_key_rate_duration, get_yield_to_maturity, get_z_spread; None for get_duration, get_present_value, get_taylor_price_change."
    • addedInput schema / properties / days_to_maturity
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Value for days_to_maturity.",
      +  "title": "Days To Maturity"
      +}
    • addedInput schema / properties / discount_yield
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Value for discount_yield.",
      +  "title": "Discount Yield"
      +}
    • changedInput schema / properties / end_date / default
      Previous value: -"2026-07-14"New value: +"2026-08-19"
    • addedInput schema / properties / far_maturity
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Value for far_maturity.",
      +  "title": "Far Maturity"
      +}
    • addedInput schema / properties / guess / anyOf
      Added value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / guess / default
      Previous value: -0.05New value: +null
    • changedInput schema / properties / guess / description
      Previous value: -"Value for guess."New value: +"Value for guess. Leave unset to use the default of the indicator you selected. Defaults are 0.01 for get_z_spread; 0.05 for get_yield_to_maturity."
    • removedInput schema / properties / guess / type
      Removed value: -"number"
    • changedInput schema / properties / indicator / enum
      Previous value: -[
      -  "get_derivative_price",
      -  "get_duration",
      -  "get_present_value",
      -  "get_yield_to_maturity"
      -]New value: +[
      +  "get_derivative_price",
      +  "get_duration",
      +  "get_present_value",
      +  "get_yield_to_maturity",
      +  "get_par_yield",
      +  "get_forward_rate",
      +  "get_breakeven_inflation_rate",
      +  "get_key_rate_duration",
      +  "get_yield_curve_spread",
      +  "get_z_spread",
      +  "get_bond_equivalent_yield",
      +  "get_taylor_price_change"
      +]
    • addedInput schema / properties / key_rate_maturity
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Value for key_rate_maturity.",
      +  "title": "Key Rate Maturity"
      +}
    • addedInput schema / properties / long_maturity
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Value for long_maturity.",
      +  "title": "Long Maturity"
      +}
    • addedInput schema / properties / maturity
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Value for maturity.",
      +  "title": "Maturity"
      +}
    • addedInput schema / properties / near_maturity
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Value for near_maturity.",
      +  "title": "Near Maturity"
      +}
    • addedInput schema / properties / nominal_rates
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Value for nominal_rates.",
      +  "title": "Nominal Rates"
      +}
    • addedInput schema / properties / real_rates
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Value for real_rates.",
      +  "title": "Real Rates"
      +}
    • addedInput schema / properties / short_maturity
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Value for short_maturity.",
      +  "title": "Short Maturity"
      +}
    • addedInput schema / properties / spot_rates
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Value for spot_rates.",
      +  "title": "Spot Rates"
      +}
    • changedInput schema / properties / start_date / default
      Previous value: -"2021-07-15"New value: +"2021-08-20"
    • addedInput schema / properties / volatility_type
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Value for volatility_type.",
      +  "title": "Volatility Type"
      +}
    • addedInput schema / properties / yield_change
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Value for yield_change. Leave unset to use the default of the indicator you selected. Defaults are 0.0001 for get_key_rate_duration; 0.01 for get_taylor_price_change.",
      +  "title": "Yield Change"
      +}
  5. Changed4 schema fields changed
    • changedInput schema / properties / end_date / default
      Previous value: -"2026-07-09"New value: +"2026-07-14"
    • addedInput schema / properties / payment_frequency
      Added value: +{
      +  "default": 2,
      +  "description": "Value for payment_frequency.",
      +  "title": "Payment Frequency",
      +  "type": "integer"
      +}
    • changedInput schema / properties / start_date / default
      Previous value: -"2021-07-10"New value: +"2021-07-15"
    • addedInput schema / properties / tenor
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Value for tenor.",
      +  "title": "Tenor"
      +}
  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. Changed3 schema fields changedv0.1.2
    • changedInput schema / properties / end_date / default
      Previous value: -"2026-06-22"New value: +"2026-06-23"
    • 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

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds substantial behavioral context beyond annotations: compounding conventions per indicator, clean price treatment, fractional-period discounting, Ho-Lee tree usage for OAS, fallback curves, and FRED API key requirements for implied default probabilities.

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

Conciseness3/5

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

The description is dense and front-loads the purpose, but it is a single long paragraph with nested parentheticals that is hard to scan. Most content is relevant given the 14-indicator scope, yet better structure would improve clarity.

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

Completeness4/5

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

Given the complexity of 14 indicators, 46 parameters, an output schema, and read-only annotations, the description covers the essential behavioral and curve-source details. Some indicators, such as get_bond_equivalent_yield and get_taylor_price_change, are listed but not elaborated, which is a minor gap.

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%, which sets a baseline of 3, but the description adds meaningful cross-parameter conventions not fully captured in the schema: how curve labels like '10Y' map to numbers, which curve tools produce spot versus par curves, example spreads and horizons formats, and which parameters are needed for specific indicators.

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 description clearly states the tool performs bond and derivative valuation calculations, then enumerates the specific metrics supported. It distinguishes itself from ticker-based siblings by saying no tickers or countries are needed, though it does not explicitly name sibling alternatives outside the rates tools referenced for curves.

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?

It gives clear practical guidance: pass bond terms directly, use spot_rates for curve-based calculations, and fall back to a sample curve without one. It also points to specific sibling tools for obtaining zero-coupon curves. However, it does not state explicit when-not-to-use conditions or contrast with other valuation tools beyond the rates source distinction.

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