Finance Toolkit
The Finance Toolkit MCP server gives AI assistants access to 500+ transparent financial methods spanning company fundamentals, ratios, models, technicals, risk/performance, options, fixed income, macroeconomics, and market discovery.
Equity fundamentals & ratios: Raw statements (income, balance sheet, cash flow, statistics), plus pre-computed efficiency, liquidity, profitability, solvency, and valuation ratios (P/E, EV/EBITDA, ROE, WACC inputs, etc.) for any ticker.
Financial models: DuPont and Extended DuPont analysis, WACC, DCF/intrinsic valuation, Altman Z-Score, Piotroski F-Score, Beneish M-Score, Graham Number, EVA, and 25+ other scoring/valuation models.
Performance & risk analytics: Sharpe, Sortino, Calmar, Omega, Treynor, Alpha/Beta, CAPM, Fama-French factors, VaR/CVaR/EVaR, drawdowns, GARCH/EGARCH volatility, Hurst exponent, and rolling windows.
Technical indicators: 40+ signals across breadth (McClellan, OBV, TRIN), momentum (RSI, MACD, Stochastic, Ichimoku), overlap (SMA/EMA, Bollinger, VWAP, SAR), and volatility (ATR, Keltner, Donchian).
Options & Greeks: Black-Scholes, binomial, Monte Carlo pricing, implied volatility, and first/second/third-order Greeks (Delta, Gamma, Theta, Vega, Vanna, Charm, Speed, Ultima).
Fixed income: Bond duration, PV, YTM, Z-spread, key rate duration, ICE BofA indices, treasury yields, EURIBOR, ECB/Fed rates, SOFR.
Economics & macro: Government fiscal metrics, 40+ macro indicators (GDP, CPI, inflation, unemployment, money supply, exchange rates) across 60+ countries, plus FRED-backed US series.
Environment & ESG: ESG scores per ticker, carbon footprint, and renewable energy per country.
Econometrics: Regression (OLS/WLS/GLS), unit root, cointegration, Granger causality, panel data, causal inference (DiD, IV-2SLS, RDD, PSM, Synthetic Control), ARIMA/VAR/VECM forecasting.
Instrument discovery & market data: Stock screeners, sector/industry performance, gainers/losers, IPO and earnings calendars, news feeds, plus historical/intraday prices, quotes, profiles, and analyst estimates.
Helper search tools: Browse categories, list metrics by category, fuzzy-search metrics by keyword, and look up tickers by name/symbol/CIK/CUSIP/ISIN.
Allows GitHub Copilot to query financial statements, ratios, and market data using the FinanceToolkit MCP server.
While browsing a variety of websites, I repeatedly observed significant fluctuations in the same financial metric among different sources. Similarly, the reported financial statements often didn't line up, and there was limited information on the methodology used to calculate each metric.
For example, Microsoft's Price-to-Earnings (PE) ratio on the 6th of May, 2023 is reported to be 28.93 (Stockopedia), 32.05 (Morningstar), 32.66 (Macrotrends), 33.09 (Finance Charts), 33.66 (Y Charts), 33.67 (Wall Street Journal), 33.80 (Yahoo Finance) and 34.4 (Companies Market Cap). All of these calculations are correct, however the method of calculation varies leading to different results. Therefore, collecting data from multiple sources can lead to wrong interpretation of the results given that one source could apply a different definition than another. And that is, if that definition is even available as often the underlying methods are hidden behind a paid subscription.
This is why I designed the FinanceToolkit, this is an open-source toolkit in which all relevant financial methods (500+) are written down in the most simplistic way allowing for complete transparency of the method of calculation (proof). This enables you to avoid dependence on metrics from other providers that do not provide their methods. With a large selection of financial statements in hand, it facilitates streamlined calculations, promoting the adoption of a consistent and universally understood methods and formulas.
Beyond Equities, it supports Options, Currencies, Cryptocurrencies, ETFs, Mutual Funds, Indices, Money Markets, Commodities, Key Economic Indicators and more, allowing you to obtain historical data as well as important performance and risk measurements such as the Sharpe Ratio and Value at Risk.
Complementing this is the Finance Database 🌎, a database featuring 300.000+ symbols containing Equities, ETFs, Funds, Indices, Currencies, Cryptocurrencies and Money Markets. By utilising both, it is possible to do a fully-fledged competitive analysis with the tickers found from the FinanceDatabase inputted into the FinanceToolkit.
🔌 The Finance Toolkit is also available as an MCP Server
Query 500+ methods from Claude, Copilot, Cursor, Windsurf or any MCP-compatible client without writing code.
Hosted: connect to
https://financetoolkit.jeroenbouma.com/mcp— OAuth handles the rest on first use.Local:
uvx --from "financetoolkit[mcp]" financetoolkit-mcp-setup— sets up your client config and API key automatically. See MCP Server Documentation for manual setup.
Also on Smithery, Glama, MCP Servers and more.
Table of Contents
Installation
Before installation, consider starring the project on GitHub which helps others find the project as well.
To install the Finance Toolkit it simply requires the following:
pip install financetoolkit -UThen within Python use:
from financetoolkit import Toolkit
companies = Toolkit(
tickers=['AAPL', 'MSFT'],
api_key="FINANCIAL_MODELING_PREP_KEY", # replace with your actual API key
)To be able to get started, you need to obtain an API Key from FinancialModelingPrep. This is used to gain access to 30+ years of financial statement both annually and quarterly. Note that the Free plan is limited to 250 requests each day, 5 years of data and only features companies listed on US exchanges.
Obtain an API Key from FinancialModelingPrep here.
Through the link you are able to subscribe for the free plan and also premium plans at a 15% discount. This is an affiliate link and thus supports the project at the same time. I have chosen FinancialModelingPrep as a source as I find it to be the most transparent, reliable and at an affordable price. I have yet to find a platform offering such low prices for the amount of data offered. When you notice that the data is inaccurate or have any other issue related to the data, note that I simply provide the means to access this data and I am not responsible for the accuracy of the data itself. For this, use their contact form or provide the data yourself.
By default, the Finance Toolkit prioritizes Financial Modeling Prep for data retrieval. If data acquisition from Financial Modeling Prep is unsuccessful (e.g., due to plan restrictions or API key issues), the toolkit automatically switches to Yahoo Finance as a secondary source. To disable this fallback behavior and exclusively use Financial Modeling Prep, set enforce_source="FinancialModelingPrep" during Toolkit initialization. This configuration ensures that an error is raised if Financial Modeling Prep data cannot be accessed. Alternatively, you can set enforce_source="YahooFinance" to exclusively use Yahoo Finance as the data source.
The same enforce_source argument is also accepted per call on get_historical_data, get_treasury_data and the four statement functions (get_balance_sheet_statement, get_income_statement, get_cash_flow_statement and get_statistics_statement), where it overrides whatever the Toolkit was initialised with.
Functionality
This section is an introduction to the Finance Toolkit. Find with the link below fully-fledged code documentation as well as Jupyter Notebooks in which you can see many examples ranging from basic examples to creating custom ratios to working with your own datasets.
Find a variety of How-To Guides including Code Documentation for the FinanceToolkit here.
A basic example of how to use the Finance Toolkit is shown below. Every code snippet in the sections that follow builds on this same companies instance.
from financetoolkit import Toolkit
# Initialize the Toolkit for Apple and Microsoft
companies = Toolkit(["AAPL", "MSFT"], api_key="FINANCIAL_MODELING_PREP_KEY", start_date="2017-12-31")Each ratio, indicator and metric has a corresponding function that can be called directly, for example ratios.get_return_on_equity or technicals.get_relative_strength_index. Every module also has one or more collect_ functions that return a whole category at once, e.g. ratios.collect_profitability_ratios, useful when you want everything in one call instead of assembling it metric by metric.
Three capabilities cut across nearly the whole toolkit:
rollingandtrailingwindows. Many metrics return one value per reporting period by default. Passrolling=<n>to compute the metric over a sliding window instead, ortrailing=<n>for a trailing sum/average (e.g. a trailing 4-quarter sum to annualize a quarterly flow) — turning a snapshot into a proper time series.growthandlag. Passgrowth=Trueon almost anyget_orcollect_function to return the period-over-period growth instead of the raw value.lag(anintor list ofints, default1) controls how many periods back that growth is measured against, e.g.lag=4for year-over-year growth on quarterly data. Combine withtrailing(e.g.trailing=4, growth=True) to get TTM growth.standardize(Z-Score). Mostget_*methods across Economics, Ratios, Technicals, Risk, Performance, Models, Options and Fixed Income acceptstandardize=True, converting raw values into standard deviations from their own historical mean/std. Useful for ranking, scoring, or spotting an unusual reading across metrics that otherwise live on incompatible scales.
Every module below also has a How-To Guide notebook and full code documentation (formulas, parameters, worked examples) linked in its own section, see the documentation hub for the complete index.
Discovering Instruments & News
Before analyzing a ticker you often need to find it. The Discovery module is standalone and covers among other things lists of companies, cryptocurrencies, forex, commodities, ETFs and indices.
from financetoolkit import Discovery
# Initialize the standalone Discovery module
discovery = Discovery(api_key="FINANCIAL_MODELING_PREP_KEY")
# Find US semiconductor companies worth more than $100 billion
semiconductors = discovery.get_stock_screener(
industry="Semiconductors",
country="US",
exchange="NASDAQ",
market_cap_higher=100_000_000_000,
is_etf=False,
)The screener returns twelve companies, of which the five largest are shown below:
Symbol | Name | Market Cap | Beta | Price | Dividend |
NVDA | NVIDIA Corporation | 5677886820000 | 2.217 | 234.42 | 0.28 |
AVGO | Broadcom Inc. | 1688566002696 | 1.457 | 354.92 | 2.60 |
MU | Micron Technology, Inc. | 1212744628950 | 2.222 | 1073.81 | 0.53 |
AMD | Advanced Micro Devices, Inc. | 1028957518000 | 2.476 | 631.03 | 0.00 |
INTC | Intel Corp. | 604977329655 | 2.231 | 119.94 | 0.00 |
And below all twelve are ranked by market cap.
Furthermore, you can find in this module stock screeners, sector/industry performance and news feeds and more. Find the Notebook here and the full instrument discovery documentation here.
Obtaining Historical Data
Obtain historical data on a daily, weekly, monthly or yearly basis. This includes OHLC, volumes, dividends, returns and cumulative returns for each corresponding period.
# Obtain historical market data for all tickers
historical_data = companies.get_historical_data()
# Select the results for Apple
historical_data.xs('AAPL', axis=1, level=1)For example, a portion of the historical data for Apple is shown below.
date | Open | High | Low | Close | Adj Close | Volume | Dividends | Return | Cumulative Return |
2018-01-02 | 42.54 | 43.075 | 42.315 | 43.065 | 40.78 | 1.02224e+08 | 0 | 0 | 1 |
2018-01-03 | 43.1325 | 43.6375 | 42.99 | 43.0575 | 40.77 | 1.17982e+08 | 0 | -0.0002 | 0.9998 |
2018-01-04 | 43.135 | 43.3675 | 43.02 | 43.2575 | 40.96 | 8.97384e+07 | 0 | 0.0047 | 1.0044 |
2018-01-05 | 43.36 | 43.8425 | 43.2625 | 43.75 | 41.43 | 9.46401e+07 | 0 | 0.0115 | 1.0159 |
2018-01-08 | 43.5875 | 43.9025 | 43.4825 | 43.5875 | 41.27 | 8.22711e+07 | 0 | -0.0039 | 1.012 |
And below the cumulative returns are plotted which include the S&P 500 as benchmark:
Metrics such as Volatility, Excess Return and Excess Volatility are calculated as dedicated Risk and Performance methods rather than columns on this table to create more efficient and flexible functionalities. Find the Notebook here and the full historical data documentation here.
Obtaining Financial Statements
Obtain an Income Statement on an annual or quarterly basis. This can also be a balance statement or cash flow statement.
# Obtain the Income Statement for all tickers
income_statement = companies.get_income_statement()
# Select the results for Apple
income_statement.loc['AAPL']For example, the first 5 rows of the Income Statement for Apple are shown below.
2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 | |
Revenue | 2.29234e+11 | 2.65595e+11 | 2.60174e+11 | 2.74515e+11 | 3.65817e+11 | 3.94328e+11 | 3.83285e+11 |
Cost of Goods Sold | 1.41048e+11 | 1.63756e+11 | 1.61782e+11 | 1.69559e+11 | 2.12981e+11 | 2.23546e+11 | 2.14137e+11 |
Gross Profit | 8.8186e+10 | 1.01839e+11 | 9.8392e+10 | 1.04956e+11 | 1.52836e+11 | 1.70782e+11 | 1.69148e+11 |
Gross Profit Ratio | 0.3847 | 0.3834 | 0.3782 | 0.3823 | 0.4178 | 0.4331 | 0.4413 |
Research and Development Expenses | 1.1581e+10 | 1.4236e+10 | 1.6217e+10 | 1.8752e+10 | 2.1914e+10 | 2.6251e+10 | 2.9915e+10 |
And below the Earnings Before Interest, Taxes, Depreciation and Amortization (EBITDA) are plotted for Apple and Alphabet since 2017. Their fiscal years line up closely, so both show the same latest reported year. Find the Notebook here and the full financial statement documentation here.
Obtaining Financial Ratios
Get Profitability Ratios based on the inputted balance sheet, income and cash flow statements. This can be any of the 80+ ratios within the ratios module.
# Collect all Profitability Ratios for all tickers
profitability_ratios = companies.ratios.collect_profitability_ratios()
# Select the results for Microsoft
profitability_ratios.loc['MSFT']For example, see some of the profitability ratios of Microsoft below.
2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 | |
Gross Margin | 0.6191 | 0.6525 | 0.659 | 0.6778 | 0.6893 | 0.684 | 0.6892 |
Operating Margin | 0.2482 | 0.3177 | 0.3414 | 0.3703 | 0.4159 | 0.4206 | 0.4177 |
Net Profit Margin | 0.2357 | 0.1502 | 0.3118 | 0.3096 | 0.3645 | 0.3669 | 0.3415 |
Interest Coverage Ratio | 13.9982 | 16.5821 | 20.3429 | 25.3782 | 34.7835 | 47.4275 | 52.0244 |
Income Before Tax Profit Margin | 0.2574 | 0.3305 | 0.3472 | 0.3708 | 0.423 | 0.4222 | 0.4214 |
And below a few of the profitability ratios of Microsoft, each with its latest value, the change over the period and its trend.
The 80+ ratios are divided into five categories: Efficiency (asset/inventory/receivables turnover, cash conversion cycle, R&D/SG&A/SBC-to-revenue), Liquidity (current, quick and cash ratios, working capital), Profitability (margins, ROE/ROA/ROIC, cash vs. effective tax rate), Solvency (debt-to-equity, debt-to-capital, interest and dividend coverage) and Valuation (P/E, PEG, Forward P/E, EV multiples, buyback and shareholder yield). It's also possible to define fully custom ratios calculated automatically from the balance sheet, income and cash flow statements. Find the Notebook here and the full ratio-by-ratio documentation here.
Obtaining Financial Models
Get an Extended DuPont Analysis based on the inputted balance sheet, income and cash flow statements.
# Get the Extended DuPont Analysis for all tickers
extended_dupont_analysis = companies.models.get_extended_dupont_analysis()
# Select the results for Apple
extended_dupont_analysis.loc['AAPL']For example, this shows the Extended DuPont Analysis for Apple:
2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 | |
Interest Burden Ratio | 0.9572 | 0.9725 | 0.9725 | 0.988 | 0.9976 | 1.0028 | 1.005 |
Tax Burden Ratio | 0.7882 | 0.8397 | 0.8643 | 0.8661 | 0.869 | 0.8356 | 0.8486 |
Operating Profit Margin | 0.2796 | 0.2745 | 0.2527 | 0.2444 | 0.2985 | 0.302 | 0.2967 |
Asset Turnover | nan | 0.7168 | 0.7389 | 0.8288 | 1.0841 | 1.1206 | 1.0868 |
Equity Multiplier | nan | 3.0724 | 3.5633 | 4.2509 | 5.255 | 6.1862 | 6.252 |
Return on Equity | nan | 0.4936 | 0.5592 | 0.7369 | 1.4744 | 1.7546 | 1.7195 |
The five components of the Extended DuPont Analysis multiply into the Return on Equity (ROE): interest burden × tax burden × operating margin × asset turnover × equity multiplier. Below they are shown for each year, ending in the resulting ROE.
The models module covers 10+ models in total, for example DuPont Analysis, WACC, Economic Value Added (EVA), Altman Z-Score, Beneish M-Score and the Graham Number. Find the Notebook here and the full model-by-model documentation here.
Obtaining Options and Greeks
Get the Black Scholes Model for both call and put options including the relevant Greeks, in this case Delta, Gamma, Theta and Vega. This can be any of the First, Second or Third Order Greeks.
# Get Delta for all tickers across strikes and expirations
delta = companies.options.get_delta(expiration_time_range=180)
# Select the results for Apple
delta.loc['AAPL']For example, see the delta of the Call options for Apple for multiple expiration times and strike prices below (Stock Price: 185.92, Volatility: 31.59%, Dividend Yield: 0.49% and Risk Free Rate: 3.95%):
1 Month | 2 Months | 3 Months | 4 Months | 5 Months | 6 Months | |
175 | 0.7686 | 0.7178 | 0.6967 | 0.6857 | 0.6794 | 0.6759 |
180 | 0.6659 | 0.64 | 0.6318 | 0.629 | 0.6285 | 0.6291 |
185 | 0.5522 | 0.5583 | 0.5648 | 0.571 | 0.5767 | 0.5816 |
190 | 0.4371 | 0.4762 | 0.4977 | 0.513 | 0.5249 | 0.5342 |
195 | 0.3298 | 0.3971 | 0.4324 | 0.4562 | 0.474 | 0.4875 |
Which can also be plotted together with Gamma, Theta and Vega as follows:
The options module is divided into four categories: Option Pricing (Black-Scholes, Binomial Model, Implied Volatility), First-Order Greeks (Delta, Vega, Theta, Rho), Second-Order Greeks (Gamma, Vanna, Charm, Vomma) and Third-Order Greeks (Speed, Zomma, Color, Ultima). Find the Notebook here and the full option pricing and Greeks documentation here.
Obtaining Performance Metrics
Get the correlations with the factors as defined by Fama-and-French. These include market, size, value, operating profitability and investment. The beauty of all functionality here is that it can be based on any period as the function accepts the period intraday, weekly, monthly, quarterly and yearly.
# Get the Fama-French factor correlations for all tickers, quarterly
factor_asset_correlations = companies.performance.get_factor_asset_correlations(period="quarterly")
# Select the results for Apple
factor_asset_correlations['AAPL']For example, this shows the quarterly correlations for Apple:
Mkt-RF | SMB | HML | RMW | CMA | |
2022Q2 | 0.9177 | -0.1248 | -0.5077 | -0.3202 | -0.2624 |
2022Q3 | 0.8092 | 0.1528 | -0.5046 | -0.1997 | -0.5231 |
2022Q4 | 0.8998 | 0.2309 | -0.5968 | -0.1868 | -0.5946 |
2023Q1 | 0.7737 | 0.1606 | -0.3775 | -0.228 | -0.5707 |
2023Q2 | 0.7416 | -0.1166 | -0.2722 | 0.0093 | -0.4745 |
And below the correlations with each factor are plotted over time for both Apple and Microsoft.
Beyond Beta, CAPM and the Fama-French factors, the performance module covers around 20+ metrics in total, for example Sharpe Ratio, Sortino Ratio, Calmar Ratio, Omega Ratio and the Correlation Matrix. Most of these also support rolling=<n> for a value that evolves through time instead of one number per period. Find the Notebook here and the full performance metric documentation here.
Obtaining Risk Metrics
Get the Value at Risk for each week. Here, the days within each week are considered for the Value at Risk. This makes it so that you can understand within each period what is the expected Value at Risk (VaR) which can again be any period but also based on distributions such as Historical, Gaussian, Student-t, Cornish-Fisher, or a Peak-over-Threshold Extreme Value Theory (distribution="evt") fit for the tail.
# Get the weekly Value at Risk for all tickers
companies.risk.get_value_at_risk(period="weekly", within_period=True)AAPL | MSFT | Benchmark | |
2023-09-25/2023-10-01 | -0.0205 | -0.0133 | -0.0122 |
2023-10-02/2023-10-08 | -0.0048 | -0.0206 | -0.0108 |
2023-10-09/2023-10-15 | -0.0089 | -0.0092 | -0.0059 |
2023-10-16/2023-10-22 | -0.0135 | -0.0124 | -0.0131 |
2023-10-23/2023-10-29 | -0.0224 | -0.0293 | -0.0139 |
And below the Value at Risk (VaR) for Apple, Microsoft and the benchmark (S&P 500) are plotted also demonstrating the impact of COVID-19.
Beyond VaR/CVaR/Entropic VaR, the risk module covers around 20+ metrics in total, for example Conditional Drawdown at Risk, Maximum Drawdown Duration, EWMA Volatility and the Hurst Exponent. Most of these support rolling=<n> for a value that evolves through time instead of one number per period. Find the Notebook here and the full risk metric documentation here.
Obtaining Technical Indicators
Get the Ichimoku Cloud parameters based on the historical market data. This can be any of the 40+ technical indicators within the technicals module.
# Get the Ichimoku Cloud for all tickers
ichimoku_cloud = companies.technicals.get_ichimoku_cloud()
# Select the results for Apple
ichimoku_cloud.xs('AAPL', axis=1, level=1)For example, see some of the parameters for Apple below:
Date | Base Line | Conversion Line | Leading Span A | Leading Span B |
2023-10-30 | 174.005 | 171.755 | 176.245 | 178.8 |
2023-10-31 | 174.005 | 171.755 | 176.37 | 178.8 |
2023-11-01 | 174.005 | 170.545 | 176.775 | 178.8 |
2023-11-02 | 174.005 | 171.725 | 176.235 | 178.8 |
2023-11-03 | 174.005 | 171.725 | 175.558 | 178.8 |
And below the Ichimoku Cloud of the last twelve months is plotted for Apple and Microsoft, together with the closing price.
The 40+ indicators are divided into four categories: Breadth (McClellan Oscillator, Advancers/Decliners, OBV, ADL, Chaikin Oscillator, TRIN, New Highs - New Lows), Momentum (RSI, MACD, Stochastic, Williams %R, Aroon, CCI, ADX and more), Overlap (SMA, EMA, DEMA, TRIX, WMA, Hull MA, VWAP, Parabolic SAR, Pivot Points, Support/Resistance) and Volatility (ATR, Keltner Channels, Bollinger Bands, Donchian Channels, Volatility Cone). Find the Notebook here and the full technical indicator documentation here.
Obtaining Fixed Income Metrics
Get access to the ICE BofA Corporate Bond benchmark indices and a variety of other bond and derivative related valuations within the fixedincome module.
# Get the ICE BofA Effective Yield for each Credit Rating
companies.fixedincome.get_ice_bofa_effective_yield(maturity=False)For example, see the Effective Yield for the ICE BofA Corporate Bond Index below for each Credit Rating:
Date | AAA | AA | A | BBB | BB | B | CCC |
2024-04-19 | 0.0518 | 0.0532 | 0.0561 | 0.0594 | 0.0678 | 0.0804 | 0.1385 |
2024-04-22 | 0.0517 | 0.0532 | 0.056 | 0.0593 | 0.0671 | 0.0793 | 0.1377 |
2024-04-23 | 0.0514 | 0.0528 | 0.0556 | 0.0589 | 0.066 | 0.0777 | 0.1364 |
2024-04-24 | 0.0518 | 0.0531 | 0.0559 | 0.0592 | 0.0664 | 0.0778 | 0.1361 |
2024-04-25 | 0.0524 | 0.0537 | 0.0564 | 0.0598 | 0.0673 | 0.079 | 0.1368 |
And below the effective yield for each credit rating is plotted over time.
Beyond ICE BofA benchmarks, the fixedincome module covers Bond Valuations (Present Value, Macaulay/Modified Duration, Convexity, Yield to Maturity), Derivative Valuations (Black and Bachelier models for Swaptions), Government Bonds (3-month and 10-year yields) and Central Bank rates (Euribor, ECB and Federal Reserve rates incl. SOFR). It can be called via companies.fixedincome or standalone through from financetoolkit import FixedIncome. Find the Notebook here and the full fixed income documentation here.
Understanding Key Economic Indicators
Get insights for 60+ countries into key economic indicators such as the Consumer Price Index (CPI), Gross Domestic Product (GDP), Unemployment Rates and 3-month and 10-year Government Interest Rates. This is done through the economics module and can be used as a standalone module as well by using from financetoolkit import Economics.
# Get the Unemployment Rate for a selection of countries
companies.economics.get_unemployment_rate()For example see a selection of the countries below:
Colombia | United States | Sweden | Japan | Germany | |
2017 | 0.093 | 0.0435 | 0.0686 | 0.0281 | 0.0357 |
2018 | 0.0953 | 0.039 | 0.0648 | 0.0244 | 0.0321 |
2019 | 0.1037 | 0.0367 | 0.0691 | 0.0235 | 0.0298 |
2020 | 0.1586 | 0.0809 | 0.0848 | 0.0278 | 0.0362 |
2021 | 0.1381 | 0.0537 | 0.0889 | 0.0282 | 0.0358 |
2022 | 0.1122 | 0.0365 | 0.0748 | 0.026 | 0.0307 |
And below these Unemployment Rates are plotted over time:
The 40+ indicators are divided into five categories: Government (GDP, government debt/revenue/expenditure/deficit, trust in government), Economy (CPI, inflation, consumer/business confidence, house/rent/share prices), Finance (money supply, central bank policy rate, short/long-term interest rates), Environment (renewable energy, carbon footprint) and Jobs & Society (unemployment, labour productivity, income inequality, population, poverty rate). Find the Notebook here and the full economic indicator documentation here.
Explore your own Portfolio
Through a custom XLSX, XLS or CSV file you are able to load in your own portfolio directly into the Finance Toolkit. This allows you to view your positions and performance (over time) versus a benchmark and other positions as well as your PnL development over time. Furthermore, the portfolio can be directly loaded in the core functionality of the Finance Toolkit as well making it possible to calculate all metrics and ratios for your portfolio (which is a time-weighted sum of all positions). The portfolio module is a standalone module and can be used as such by using from financetoolkit import Portfolio. Find the the full portfolio documentation here.
It is important to note that it requires a specific Excel template to work, see for further instructions the following notebook here.
from financetoolkit import Portfolio
# Initialize the Portfolio module with your own dataset
portfolio = Portfolio(example=True, api_key="FINANCIAL_MODELING_PREP_KEY")
# Get an overview of all positions
portfolio.get_positions_overview()The table below shows one of the functionalities of the Portfolio module but is purposely shrunken down given the >30 assets.
Identifier | Volume | Costs | Price | Invested | Latest Price | Latest Value | Return | Return Value | Benchmark Return | Volatility | Benchmark Volatility | Alpha | Beta | Weight |
AAPL | 137 | -28 | 38.9692 | 5310.78 | 241.84 | 33132.1 | 5.2386 | 27821.3 | 2.2258 | 0.3858 | 0.1937 | 3.0128 | 1.2027 | 0.0405 |
ALGN | 81 | -34 | 117.365 | 9472.53 | 187.03 | 15149.4 | 0.5993 | 5676.9 | 2.1413 | 0.5985 | 0.1937 | -1.542 | 1.5501 | 0.0185 |
AMD | 78 | -30 | 11.9075 | 898.784 | 99.86 | 7789.08 | 7.6662 | 6890.3 | 3.7945 | 0.6159 | 0.1937 | 3.8718 | 1.6551 | 0.0095 |
AMZN | 116 | -28 | 41.5471 | 4791.46 | 212.28 | 24624.5 | 4.1392 | 19833 | 1.8274 | 0.4921 | 0.1937 | 2.3118 | 1.1594 | 0.0301 |
ASML | 129 | -25 | 33.3184 | 4273.07 | 709.08 | 91471.3 | 20.4065 | 87198.3 | 3.8005 | 0.4524 | 0.1937 | 16.606 | 1.4407 | 0.1119 |
VOO | 77 | -12 | 238.499 | 18352.5 | 546.33 | 42067.4 | 1.2922 | 23715 | 1.1179 | 0.1699 | 0.1937 | 0.1743 | 0.9973 | 0.0515 |
WMT | 92 | -18 | 17.8645 | 1625.53 | 98.61 | 9072.12 | 4.581 | 7446.59 | 2.4787 | 0.2334 | 0.1937 | 2.1024 | 0.4948 | 0.0111 |
Portfolio | 2142 | -532 | 59.8406 | 128710 | 381.689 | 817577 | 5.3521 | 688867 | 2.0773 | 0.4193 | 0.1937 | 3.2747 | 1.2909 | 1 |
In which the weights and returns can be depicted as follows:
Applying Econometric Techniques
The econometrics module provides regression, hypothesis testing, unit root and cointegration, Granger causality and panel data methods built on statsmodels and linearmodels. It requires the optional financetoolkit[econometrics] extra (pip install financetoolkit[econometrics]) and can be used via companies.econometrics.
# AAPL is the Toolkit's first ticker, so it's the default dependent ticker;
# every other ticker becomes the default independent set
companies.econometrics.get_ols(period="weekly")Regressing Apple's returns on a mix of its chip suppliers, megacap peers and two unrelated names (Benchmark excluded) gives:
Coefficient | Std. Error | t-Statistic | P-Value | |
Intercept | 0.0028 | 0.0017 | 1.6815 | 0.0943 |
TSM | -0.0054 | 0.0523 | -0.1028 | 0.9182 |
QCOM | 0.1432 | 0.0361 | 3.9717 | 0.0001 |
SWKS | 0.2141 | 0.0484 | 4.4221 | 0.0000 |
MSFT | 0.3036 | 0.0864 | 3.5144 | 0.0005 |
GOOGL | 0.1448 | 0.0689 | 2.1015 | 0.0369 |
AMZN | 0.0617 | 0.0529 | 1.1664 | 0.2448 |
META | -0.0132 | 0.0389 | -0.3398 | 0.7343 |
NVDA | -0.0024 | 0.0415 | -0.0575 | 0.9542 |
XOM | -0.0291 | 0.0373 | -0.7799 | 0.4364 |
PG | 0.2858 | 0.0707 | 4.0393 | 0.0001 |
And below each coefficient is shown with its 95% confidence interval, with stars marking how significant it is.
Only QCOM, SWKS, MSFT, GOOGL and PG come out statistically significant once every regressor is controlled for at once. The econometrics module covers 48 methods in total, including unit root tests (ADF, KPSS, Phillips-Perron), cointegration and Granger causality, panel data estimators (Fixed/Random Effects), causal inference (IV-2SLS, Difference-in-Differences, Regression Discontinuity, Propensity Score Matching, Synthetic Control) and time-series forecasting (ARIMA, VAR, VECM). Find the Notebook here and the full econometrics documentation here.
MCP Server
The Finance Toolkit MCP Server exposes 500+ financial methods directly to any AI assistant that supports the Model Context Protocol (MCP). Ask questions in plain English — the AI fetches live financial data on your behalf, backed by the transparent, open-source calculation methods of the Finance Toolkit.
See an example of the Finance Toolkit MCP server in action in Claude Desktop below:
https://github.com/user-attachments/assets/96ad5288-d83d-4497-a345-1841c48c29d5
Remote server
Connect directly to the hosted server at https://financetoolkit.jeroenbouma.com/mcp. Nothing needs to be installed locally. On first connection your client opens an OAuth consent page asking for your FMP API key; enter it once and the server handles authentication from there.
Client | Steps |
Claude Desktop | Customize → Connectors → Add custom connector → paste the URL |
Claude.ai | Customize → Connectors → Add custom connector → paste the URL |
Claude Code |
|
VS Code | Command Palette → MCP: Add Server → HTTP → paste the URL |
Cursor | Settings → Features → MCP Servers → Add new → http → paste the URL |
Windsurf | Settings → MCP Servers → Add Server → Remote/HTTP → paste the URL |
Local installation
Run the setup wizard — it locates your client's config file and writes the MCP entry automatically, including the API key:
uvx --from "financetoolkit[mcp]" financetoolkit-mcp-setupFor manual config, add the following to your client's MCP config file (e.g. claude_desktop_config.json, .cursor/mcp.json, .vscode/mcp.json):
{
"mcpServers": {
"finance-toolkit": {
"command": "uvx",
"args": ["--from", "financetoolkit[mcp]", "financetoolkit-mcp"],
"env": { "FINANCIAL_MODELING_PREP_API_KEY": "YOUR_API_KEY_HERE" }
}
}
}Alternatively, download the Finance Toolkit MCPB bundle and open it with Claude Desktop. An installation dialog will prompt for your FMP API key.
Questions & Answers
This section includes frequently asked questions and is meant to clear up confusion about certain results and/or deviations from other sources. If you have any questions that are not answered here, feel free to reach out to me via the contact details below.
How do you deal with companies that have different fiscal years?
For any financial statement, I make sure to line it up with the corresponding calendar period. For example, Apple's Q4 2023 relates to July to September of 2023. This corresponds to the calendar period Q3 which is why I normalize Apple's numbers to Q3 2023 instead. This is done to allow for comparison between companies that have different fiscal years.
Why do the numbers in the financial statements sometimes deviate from the data from FinancialModelingPrep?
When looking at a company such as Hyundai Motor Company (ticker: 005380.KS), you will notice that the financial statements are reported in KRW (South Korean won). As this specific ticker is listed on the Korean Exchange, the historical market data will also be reported in KRW. However, if you use the ticker HYMTF, which is listed on the American OTC market, the historical market data will be reported in USD. To deal with this discrepancy, the end of year or end of quarter exchange rate is retrieved which is used to convert the financial statements to USD. This is done to prevent ratio calculations such as the Free Cash Flow Yield (which is based on the market capitalization) or Price Earnings Ratio (which is based on the stock price) from being incorrect. This can be disabled by setting convert_currency=False in the Toolkit initialization. It is recommended to always use the ticker that is listed on the exchange where the company is based.
How can I get TTM (Trailing Twelve Months) and Growth metrics?
Most functions will have the option to define the trailing parameter. This lets you define the number of periods that you want to use to calculate the trailing metrics. For example, if you want to calculate the trailing 12-month (TTM) Price-to-Earnings Ratio, you can set trailing=4 when you have set quarterly=True in the Toolkit initialization. The same goes for growth metrics which can be calculated by setting growth=True. This will calculate the growth for each period based on the previous period. This also includes a lag parameter in which you can define lagged growth. Furthermore, you can also combine the trailing and growth parameters to get trailing growth. For example, set trailing=4 and growth=True for the Price-to-Earnings Ratio which will then calculate the TTM growth.
How can I save the data periodically so that I don't have to retrieve it every single time again?
The Toolkit has the option to work with cached data through use_cached_data=True when initializing the Toolkit class. Any data that comes from an external source (financial statements, historical prices, economic indicators, and so on) is then stored in a local SQLite database and reused on the next run. Anything the Toolkit calculates itself is never cached, it is always derived from that data on demand.
The cache keeps track of what it already holds per ticker and per date range, which means changing a parameter does not throw the rest away:
Repeating the same request retrieves nothing at all.
Widening the period only retrieves the years that were missing.
Adding a ticker only retrieves that one ticker.
By default the database lives in your user configuration directory, which is the same one the MCP server uses, so both share a single cache. You can also select a specific location by providing a string to the use_cached_data parameter, which will store the database in the provided folder.
To see what is currently stored, use toolkit.get_cache_contents(). It reports the entries grouped by source and dataset:
source | dataset | entities | entries | oldest_write | newest_write |
FinancialModelingPrep | historical | 2 | 2 | 2025-01-14 09:12:03 | 2025-01-14 09:12:05 |
FinancialModelingPrep | statements | 2 | 2 | 2025-01-14 09:12:01 | 2025-01-14 09:12:02 |
The Finance Toolkit never clears the cache on its own, not even when its own internal structure changes. Removing data is always something you ask for explicitly with toolkit.clear_cache(), and it can be narrowed instead of wholesale:
# Remove only the price history of a single ticker
toolkit.clear_cache(source="FinancialModelingPrep", ticker="AAPL")
# Remove everything retrieved from the OECD
toolkit.clear_cache(source="OECD")
# Remove the entire cache, which has to be confirmed
toolkit.clear_cache(confirm=True)The source names match the ones used by the enforce_source parameter, so "FinancialModelingPrep" and "YahooFinance" mean the same thing in both places.
What is the "Benchmark" that is automatically obtained when acquiring historical data?
This is related to the benchmark_ticker parameter which is set to "SPY" (S&P 500) by default. This is important when calculating performance metrics such as the Sharpe Ratio or Treynor Ratio that require a market return. This can be disabled by setting benchmark_ticker=None in the Toolkit initialization.
Data collection seems to be slow, what could be the issue?
Generally, it should take less than 15 seconds to retrieve the historical data of 100 tickers. If it takes much longer, this could be due to reaching the API limit (the Starter plan has 250 requests per minute), due to a slow internet connection or due to unoptimized code. The Finance Toolkit collects data with a bounded pool of worker threads (10 by default, configurable through the FINANCETOOLKIT_MAX_WORKERS environment variable) over a shared connection, so it is recommended to initialize the Toolkit with all tickers you want to analyze at once rather than one at a time. If it is taking 10+ minutes consider having a look at this issue that managed to resolve the problem.
Are you part of FinancialModelingPrep?
No, I am not. I've merely picked them as the primary data provider given that they have a generous free tier and fair pricing compared to other providers. Therefore, any questions related to the data should go through their contact form. When it comes to any type of ratios, performance metrics, risk metrics, technical indicators or economic indicators, feel free to reach out to me as this is my own work.
Contributing
First off all, thank you for taking the time to contribute (or at least read the Contributing Guidelines)! 🚀
Find the Contributing Guidelines here.
The goal of the Finance Toolkit is to make any type of financial calculation as transparent and efficient as possible. I want to make these type of calculations as accessible to anyone as possible and seeing how many websites exists that do the same thing (but instead you have to pay) gave me plenty of reasons to work on this.
Mentions
The Finance Toolkit has been mentioned in various blogposts, research papers, newsletters and social media. Below is a list of some of the mentions that I am aware of. If you have any other mentions, feel free to reach out to me so I can add them to this list.
Blogposts
Discovering the Best Integrated Platforms for Big Tech Quantitative Finance: 1. Finance Toolkit
Unlocking Financial Clarity: Introducing the Open-Source Finance Toolkit Powered by FMP
Research
Newsletters & Social Media
Contact
If you have any questions about the Finance Toolkit or would like to share with me what you have been working on, feel free to reach out to me via:
Website: https://jeroenbouma.com/
LinkedIn: https://www.linkedin.com/in/boumajeroen/
Email: jer.bouma@gmail.com
If you'd like to support my efforts, either help me out by contributing to the package or Sponsor Me.
Available Tools
26 toolsbreadthARead-onlyIdempotentInspect
Market breadth technical indicators (McClellan Oscillator, OBV, Advance/Decline Line, Chaikin). Applied to price data automatically — no need to fetch prices first. Requires tickers='AAPL' — use comma-separated values for multiple tickers.
Available indicators: get_mcclellan_oscillator, get_advancers_decliners, get_on_balance_volume, get_accumulation_distribution_line, get_chaikin_oscillator, get_trin, get_new_highs_new_lows, get_chaikin_money_flow, get_ease_of_movement, get_negative_volume_index, get_positive_volume_index.
| Name | Required | Description | Default |
|---|---|---|---|
| lag | No | Number of periods to lag when computing growth rates. | |
| growth | No | Return period-over-period growth rates instead of absolute values. | |
| period | No | Observation frequency, e.g. 'monthly', 'quarterly', or 'annual'. | daily |
| window | No | Value for window. Leave unset to use the default of the indicator you selected. Defaults are 14 for get_ease_of_movement; 20 for get_chaikin_money_flow; 252 for get_new_highs_new_lows. | |
| tickers | No | Comma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'. | |
| end_date | No | End of the date range in YYYY-MM-DD format. | 2026-10-02 |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| quarterly | No | Return quarterly data instead of annual when True. | |
| start_date | No | Start of the date range in YYYY-MM-DD format. | 2021-10-03 |
| long_window | No | Value for long_window. | |
| standardize | No | 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. | |
| start_value | No | Value for start_value. | |
| close_column | No | Value for close_column. | Adj Close |
| short_window | No | Value for short_window. | |
| show_columns | No | 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. | |
| volume_divisor | No | Value for volume_divisor. | |
| long_ema_window | No | Value for long_ema_window. | |
| benchmark_ticker | No | Ticker used as the market benchmark, e.g. 'SPY' or '^GSPC'. | SPY |
| short_ema_window | No | Value for short_ema_window. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, openWorld), so the bar is lower, yet the description still adds real behavior: automatic price fetching, the tickers precondition, and that omitting the indicator returns the available-indicator list. It does not mention rate limits or the cost of the 19-parameter surface, but the added context is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short blocks, front-loaded with the domain and the auto-fetch behavior, followed by the indicator list. The indicator enumeration mirrors the enum but is reasonable given the tool's dispatch-style design; no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 19-parameter dispatcher with an output schema, the description covers the required selection (indicator), the data precondition (tickers), and the discovery behavior (omitting indicator lists options). Remaining details — window defaults, benchmark_ticker, show_columns — are fully specified in the schema, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 19 parameters are already documented with defaults (window defaults per indicator, standardize, growth, etc.). The description only restates the tickers comma-separated format and the indicator requirement, adding little beyond the schema — the baseline 3 for high coverage applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource domain ('Market breadth technical indicators') and enumerates the exact indicator family it computes (McClellan, OBV, A/D, Chaikin), so an agent can tell it apart from momentum/volatility siblings by scope. It does not explicitly contrast itself with those siblings, which is the only thing keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one genuinely useful routing hint ('Applied to price data automatically — no need to fetch prices first') and a precondition (tickers must be set). However it never says when to choose breadth versus momentum/volatility/performance siblings, so selection guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discoveryARead-onlyIdempotentInspect
Market discovery tools (lists of stocks/ETFs/cryptocurrencies, stock screener, gainers, losers, sector performance, earnings/dividend calendars). No tickers or countries needed.
Available indicators: get_biggest_gainers, get_biggest_losers, get_commodity_list, get_crypto_list, get_crypto_news, get_delisted_stocks, get_etf_list, get_forex_list, get_forex_news, get_general_news, get_index_list, get_industry_pe, get_industry_performance, get_ipo_calendar, get_ipo_disclosures, get_ipo_prospectuses, get_mergers_acquisitions_latest, get_most_active_stocks, get_press_releases, get_sector_pe, get_sector_performance, get_sectors_performance, get_stock_list, get_stock_news, get_stock_screener, get_stock_shares_float, get_stock_splits_calendar.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Value for date. | |
| page | No | Value for page. | |
| limit | No | Value for limit. Leave unset to use the default of the indicator you selected. Defaults are 100 for get_crypto_news, get_delisted_stocks, get_forex_news, get_general_news, get_mergers_acquisitions_latest, get_press_releases, get_stock_news; 1000 for get_stock_screener. | |
| pages | No | Value for pages. | |
| is_etf | No | Value for is_etf. | |
| sector | No | Value for sector. | |
| country | No | Value for country. | |
| exchange | No | Value for exchange. | |
| industry | No | Value for industry. | |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| beta_lower | No | Value for beta_lower. | |
| beta_higher | No | Value for beta_higher. | |
| price_lower | No | Value for price_lower. | |
| price_higher | No | Value for price_higher. | |
| show_columns | No | 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. | |
| volume_lower | No | Value for volume_lower. | |
| volume_higher | No | Value for volume_higher. | |
| dividend_lower | No | Value for dividend_lower. | |
| dividend_higher | No | Value for dividend_higher. | |
| market_cap_lower | No | Value for market_cap_lower. | |
| market_cap_higher | No | Value for market_cap_higher. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, covering the safety profile. The description adds the scoping fact that it doesn't need tickers or countries, but it doesn't disclose other behavioral aspects like pagination behavior or response shaping beyond what's in the schema. With annotations provided, this meets a baseline but adds limited extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: a short purpose statement followed by a list of 27 indicators. The list is necessary to inform the agent of valid choices and avoids excessive prose. It front-loads the core purpose and is structured clearly, though the indicator list could have been linked to the enum rather than repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 21 parameters, the description is notably incomplete. It does not explain that parameters like price_lower, volume_higher, etc., are filters applied only to certain indicators, nor does it clarify which indicators accept which filters. The schema's placeholder descriptions ('Value for price_lower') add little. While an output schema exists, the description still fails to give the agent a coherent picture of how to combine the indicator with the other parameters. This is a significant gap given the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (though most are trivial 'Value for X'), so the baseline is 3. The description itself adds no parameter semantics beyond listing possible indicator values, which are already in the enum. The schema's indicator description (with the example and behavior of omission) is helpful, but it's not from the tool description. Thus, no added value from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides 'market discovery tools' (lists, screeners, gainers/losers, etc.), and the 'No tickers or countries needed' hint distinguishes it from sibling tools dealing with specific instruments or metrics. It's specific enough about the resource category, though it covers a broad set of sub-functions via the 'indicator' parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'No tickers or countries needed', which tells agents when to use this tool (for market-wide discovery without specific instrument identifiers). It lists available indicators, giving a clear menu of use cases. However, it doesn't explicitly name alternative tools for scenarios with tickers or countries, so guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
econometricsBRead-onlyIdempotentInspect
Statistical/econometric tests on price or return series (unit root: ADF/KPSS/Phillips-Perron/Zivot-Andrews, cointegration: Engle-Granger/Johansen, Granger causality, ARCH-LM, Jarque-Bera, Ljung-Box, Variance Ratio, CUSUM, Diebold-Mariano forecast comparison). Use for pairs-trading/spread-modeling foundations or diagnosing return-series properties. Requires tickers='AAPL' — use comma-separated values for multiple tickers.
Available indicators: get_arch_lm_test, get_arima_forecast, get_augmented_dickey_fuller, get_breusch_pagan_test, get_chow_test, get_cusum_test, get_diebold_mariano_test, get_difference_in_differences, get_durbin_watson_test, get_engle_granger_cointegration, get_event_study, get_f_test, get_fama_macbeth_regression, get_fixed_effects, get_gls, get_granger_causality, get_hausman_test, get_hausman_wu_test, get_impulse_response_function, get_iv_2sls, get_jarque_bera_test, get_johansen_cointegration, get_kpss_test, get_likelihood_ratio_test, get_ljung_box_test, get_logistic_regression, get_mae, get_ols, get_out_of_sample_validation, get_phillips_perron_test, get_probit_regression, get_propensity_score_matching, get_quantile_regression, get_ramsey_reset_test, get_random_effects, get_regression_discontinuity, get_rmse, get_synthetic_control, get_two_sample_t_test, get_var_forecast, get_variance_decomposition, get_variance_ratio_test, get_vecm_forecast, get_vif, get_wald_test, get_white_test, get_wls, get_zivot_andrews_test.
| Name | Required | Description | Default |
|---|---|---|---|
| d | No | Value for d. | |
| p | No | Value for p. | |
| q | No | Value for q. Leave unset to use the default of the indicator you selected. Defaults are 1 for get_arima_forecast, get_out_of_sample_validation; 2 for get_variance_ratio_test. | |
| tau | No | Value for tau. | |
| lags | No | Value for lags. Leave unset to use the default of the indicator you selected. Defaults are 1 for get_impulse_response_function, get_out_of_sample_validation, get_var_forecast, get_variance_decomposition; None for get_kpss_test, get_phillips_perron_test; 10 for get_ljung_box_test; 5 for get_arch_lm_test. | |
| loss | No | Value for loss. | squared |
| trim | No | Value for trim. | |
| model | No | Value for model. | arima |
| omega | No | Value for omega. Leave unset to use the default of the indicator you selected. Required by: get_gls. | |
| power | No | Value for power. | |
| column | No | Value for column. Leave unset to use the default of the indicator you selected. Defaults differ between indicators. | |
| cutoff | No | Value for cutoff. Leave unset to use the default of the indicator you selected. Required by: get_regression_discontinuity. | |
| kernel | No | Value for kernel. | uniform |
| period | No | Observation frequency, e.g. 'monthly', 'quarterly', or 'annual'. | |
| caliper | No | Value for caliper. | |
| lambda_ | No | Value for lambda_. | |
| max_lag | No | Value for max_lag. Leave unset to use the default of the indicator you selected. Defaults are None for get_augmented_dickey_fuller, get_engle_granger_cointegration, get_zivot_andrews_test; 5 for get_granger_causality. | |
| maxlags | No | Value for maxlags. | |
| periods | No | Value for periods. | |
| tickers | No | Comma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'. | |
| weights | No | Value for weights. Leave unset to use the default of the indicator you selected. Required by: get_wls. | |
| clusters | No | Value for clusters. | |
| cov_type | No | Value for cov_type. | nonrobust |
| end_date | No | End of the date range in YYYY-MM-DD format. | 2026-10-02 |
| gap_days | No | Value for gap_days. | |
| method_a | No | Value for method_a. | ewma |
| method_b | No | Value for method_b. | rolling |
| bandwidth | No | Value for bandwidth. | |
| det_order | No | Value for det_order. | |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| k_ar_diff | No | Value for k_ar_diff. | |
| quarterly | No | Return quarterly data instead of annual when True. | |
| break_date | No | Value for break_date. Leave unset to use the default of the indicator you selected. Required by: get_chow_test. | |
| event_date | No | Value for event_date. Leave unset to use the default of the indicator you selected. Required by: get_event_study. | |
| regression | No | Value for regression. | c |
| start_date | No | Start of the date range in YYYY-MM-DD format. | 2021-10-03 |
| n_bootstrap | No | Value for n_bootstrap. | |
| window_size | No | Value for window_size. | |
| add_constant | No | Value for add_constant. | |
| show_columns | No | 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. | |
| significance | No | Value for significance. | |
| time_effects | No | Value for time_effects. | |
| asset_tickers | No | Value for asset_tickers. | |
| donor_tickers | No | Value for donor_tickers. | |
| other_tickers | No | Value for other_tickers. | |
| within_period | No | Value for within_period. | |
| entity_effects | No | Value for entity_effects. | |
| equal_variance | No | Value for equal_variance. | |
| factor_tickers | No | Value for factor_tickers. | |
| forecast_steps | No | Value for forecast_steps. | |
| orthogonalized | No | Value for orthogonalized. | |
| pre_event_days | No | Value for pre_event_days. | |
| suspect_ticker | No | Value for suspect_ticker. Leave unset to use the default of the indicator you selected. Required by: get_hausman_wu_test. | |
| train_fraction | No | Value for train_fraction. | |
| treated_ticker | No | Value for treated_ticker. Leave unset to use the default of the indicator you selected. Required by: get_synthetic_control. | |
| treatment_date | No | Value for treatment_date. Leave unset to use the default of the indicator you selected. Required by: get_difference_in_differences. | |
| control_tickers | No | Value for control_tickers. | |
| post_event_days | No | Value for post_event_days. | |
| treated_tickers | No | Value for treated_tickers. Leave unset to use the default of the indicator you selected. Required by: get_difference_in_differences. | |
| benchmark_ticker | No | Ticker used as the market benchmark, e.g. 'SPY' or '^GSPC'. | SPY |
| dependent_ticker | No | Value for dependent_ticker. Leave unset to use the default of the indicator you selected. Required by: get_f_test, get_hausman_wu_test, get_iv_2sls, get_likelihood_ratio_test, get_propensity_score_matching, get_regression_discontinuity. Defaults are None for get_breusch_pagan_test, get_chow_test, get_durbin_watson_test, get_event_study, get_gls, get_logistic_regression, get_ols, get_probit_regression, get_quantile_regression, get_ramsey_reset_test, get_wald_test, get_white_test, get_wls. | |
| include_constant | No | Value for include_constant. | |
| treatment_period | No | Value for treatment_period. Leave unset to use the default of the indicator you selected. Required by: get_synthetic_control. | |
| treatment_ticker | No | Value for treatment_ticker. Leave unset to use the default of the indicator you selected. Required by: get_propensity_score_matching. | |
| covariate_tickers | No | Value for covariate_tickers. Leave unset to use the default of the indicator you selected. Required by: get_propensity_score_matching. | |
| dependent_tickers | No | Value for dependent_tickers. | |
| endogenous_ticker | No | Value for endogenous_ticker. Leave unset to use the default of the indicator you selected. Required by: get_iv_2sls. | |
| estimation_window | No | Value for estimation_window. | |
| exogenous_tickers | No | Value for exogenous_tickers. | |
| include_benchmark | No | Value for include_benchmark. | |
| independent_column | No | Value for independent_column. | |
| instrument_tickers | No | Value for instrument_tickers. Leave unset to use the default of the indicator you selected. Required by: get_hausman_wu_test, get_iv_2sls. | |
| restriction_matrix | No | Value for restriction_matrix. Leave unset to use the default of the indicator you selected. Required by: get_wald_test. | |
| restriction_values | No | Value for restriction_values. | |
| independent_tickers | No | Value for independent_tickers. | |
| treatment_threshold | No | Value for treatment_threshold. | |
| running_variable_ticker | No | Value for running_variable_ticker. Leave unset to use the default of the indicator you selected. Required by: get_regression_discontinuity. | |
| other_independent_tickers | No | Value for other_independent_tickers. | |
| restricted_independent_tickers | No | Value for restricted_independent_tickers. Leave unset to use the default of the indicator you selected. Required by: get_f_test, get_likelihood_ratio_test. | |
| unrestricted_independent_tickers | No | Value for unrestricted_independent_tickers. Leave unset to use the default of the indicator you selected. Required by: get_f_test, get_likelihood_ratio_test. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the agent knows this is a safe, cached, external-data operation. The description adds no meaningful behavioral traits beyond what annotations provide — no mention of rate limits, data-source constraints, or output behavior. With annotations covering the safety profile, a 3 is appropriate for adding little extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence front-loads the test taxonomy, and the second sentence provides usage context and a key parameter example. However, the 48-item 'Available indicators' list is a repetitive dump of the enum already present in the schema, adding noise and length without new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a tool with 80 parameters and 48 sub-indicators, the description is surprisingly thin on how to select the correct indicator and which parameter combinations matter. It doesn't cover rate limits, data availability, or output format, though an output schema exists. More context on indicator selection and parameter interactions would be needed for an agent to call this correctly without trial and error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 80 parameters, including indicator-specific defaults and required-by relationships. The description only restates the tickers='AAPL' format, adding marginal value beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause names a specific set of statistical tests (unit root, cointegration, Granger causality, ARCH-LM, etc.) on price or return series, which is a specific verb+resource. However, it does not explicitly differentiate from siblings like 'models' or 'performance' that could also involve returns, though the test taxonomy is reasonably distinctive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a use case ('pairs-trading/spread-modeling foundations or diagnosing return-series properties') and a required-parameter instruction ('Requires tickers=...'), but there are no explicit when-not-to-use or alternative tool comparisons. The 48-indicator list is a menu, not guidance on selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
efficiencyARead-onlyIdempotentInspect
Pre-computed efficiency ratios (asset turnover, inventory turnover, days sales outstanding, days payable outstanding, cash conversion cycle). Requires tickers='AAPL' — use comma-separated values for multiple tickers. Use instead of raw financial statements. Supports quarterly=true and start_date/end_date.
Available indicators: get_days_of_inventory_outstanding, get_days_of_sales_outstanding, get_operating_cycle, get_days_of_accounts_payable_outstanding, get_cash_conversion_cycle, get_cash_conversion_efficiency, get_receivables_turnover, get_inventory_turnover_ratio, get_accounts_payables_turnover_ratio, get_sga_to_revenue_ratio, get_fixed_asset_turnover, get_asset_turnover_ratio, get_operating_ratio, get_research_and_development_ratio, get_selling_and_marketing_ratio, get_general_and_administrative_ratio, get_stock_based_compensation_ratio, get_deferred_revenue_ratio, get_working_capital_turnover_ratio.
| Name | Required | Description | Default |
|---|---|---|---|
| lag | No | Number of periods to lag when computing growth rates. | |
| days | No | Number of calendar days used in day-count-based calculations. | |
| growth | No | Return period-over-period growth rates instead of absolute values. | |
| tickers | No | Comma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'. | |
| end_date | No | End of the date range in YYYY-MM-DD format. | 2026-10-02 |
| trailing | No | Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period. | |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| quarterly | No | Return quarterly data instead of annual when True. | |
| start_date | No | Start of the date range in YYYY-MM-DD format. | 2021-10-03 |
| standardize | No | 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. | |
| show_columns | No | 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. | |
| benchmark_ticker | No | Ticker used as the market benchmark, e.g. 'SPY' or '^GSPC'. | SPY |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds operational context such as ticker formatting and indicator availability, but does not disclose rate limits, auth requirements, or other behavioral traits. It also states tickers are required despite the schema marking tickers optional, which may mislead.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and key usage notes, which is good. However, the long list of available indicators duplicates the enum already present in the schema, bloating the description without adding new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema (100% coverage), output schema, and annotations, the description covers the core purpose, indicator selection, and main optional parameters sufficiently. The many advanced parameters are documented in the schema, so the description does not need to repeat them, though the ticker requirement inconsistency is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameter meanings are already fully documented. The description mostly repeats enum values and comma-separated ticker syntax, though it does add a useful 'use instead of raw financial statements' framing. The claim that tickers are required conflicts with the schema and reduces added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource category (pre-computed efficiency ratios) and gives concrete examples such as asset turnover and cash conversion cycle. It distinguishes itself from raw financial statements, but does not explicitly differentiate from sibling category tools like profitability or liquidity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a key use case: 'Use instead of raw financial statements,' and documents required ticker formatting and supported parameters like quarterly and start_date/end_date. It lacks explicit when-not guidance or comparisons to sibling ratio tools, but the intended context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
environmentARead-onlyIdempotentInspect
Environmental and ESG data. For ESG scores (E, S, G ratings) use tickers='AAPL'. For carbon footprint and renewable energy data use countries='United States' (also supports rolling=N and trailing=N smoothing/summation). This is the only tool that accepts BOTH tickers= and countries= depending on the indicator.
Available indicators: get_carbon_footprint, get_renewable_energy, get_esg_scores.
| Name | Required | Description | Default |
|---|---|---|---|
| lag | No | Number of periods to lag when computing growth rates. | |
| growth | No | Return period-over-period growth rates instead of absolute values. | |
| rolling | No | Rolling window size in number of periods. When set, the metric is computed over a smoothly overlapping trailing window across the full history (e.g. period='monthly' and rolling=6 gives a rolling 6-month value) instead of one value per period, or (for economics indicators) a simple moving average used to smooth the raw series. | |
| tickers | No | Comma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'. | |
| end_date | No | End of the date range in YYYY-MM-DD format. | 2026-10-02 |
| trailing | No | Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period. | |
| countries | No | Comma-separated country names, e.g. 'United States,Germany,Japan'. | |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| quarterly | No | Return quarterly data instead of annual when True. | |
| start_date | No | Start of the date range in YYYY-MM-DD format. | 2021-10-03 |
| standardize | No | 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. | |
| show_columns | No | 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. | |
| benchmark_ticker | No | Ticker used as the market benchmark, e.g. 'SPY' or '^GSPC'. | SPY |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds useful dispatch behavior (tickers vs countries, indicator acting as a sub-selector) but says nothing about pagination, date-range defaults, or result-shaping behavior beyond what the schema already documents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the domain and immediately followed by the parameter-routing rules and the indicator list. Minimal waste; the indicator enumeration is somewhat redundant with the enum in the schema but aids quick scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value detail is unnecessary, and the 13-parameter schema is fully self-documented. The description covers the essential decision (which of the three indicators and which entity parameter), leaving only minor gaps around date defaults and smoothing behavior that the schema handles.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds cross-parameter semantics the schema cannot express: tickers= applies to ESG scores while countries= applies to carbon/renewable indicators, and it highlights that this tool uniquely accepts both. That is meaningfully more than the per-field descriptions provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific domain statement ('Environmental and ESG data') and enumerates the three indicators the tool exposes, so an agent knows this is ESG/carbon/renewables, not general financial data. It does not explicitly contrast with sibling categories like macroeconomics or market_data, but the domain is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete usage conditions: 'For ESG scores use tickers=...', 'For carbon footprint and renewable energy use countries=...', and notes rolling/trailing support. This is real routing guidance that maps indicator to parameter, though it never names an alternative sibling tool or states when NOT to use this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fixed_incomeARead-onlyIdempotentInspect
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 — provide bond/derivative parameters (e.g. face_value, coupon_rate, maturity, spot_rates) directly as arguments.
Available indicators: 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.
| Name | Required | Description | Default |
|---|---|---|---|
| guess | No | 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. | |
| model | No | Value for model. | black |
| tenor | No | Value for tenor. | |
| end_date | No | End of the date range in YYYY-MM-DD format. | 2026-10-02 |
| maturity | No | Value for maturity. | |
| notional | No | Value for notional. | |
| countries | No | Comma-separated country names, e.g. 'United States,Germany,Japan'. | |
| frequency | No | Value for frequency. | |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| par_value | No | Value for par_value. | |
| quarterly | No | Return quarterly data instead of annual when True. | |
| tolerance | No | Value for tolerance. | |
| bond_price | No | Clean price of the bond per 100 face value. | |
| real_rates | No | Value for real_rates. | |
| spot_rates | No | Value for spot_rates. | |
| start_date | No | Start of the date range in YYYY-MM-DD format. | 2021-10-03 |
| volatility | No | Value for volatility. | |
| coupon_rate | No | 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. | |
| is_receiver | No | Value for is_receiver. | |
| strike_rate | No | Option strike price. | |
| far_maturity | No | Value for far_maturity. | |
| forward_rate | No | Value for forward_rate. | |
| show_columns | No | 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. | |
| yield_change | No | 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. | |
| duration_type | No | Value for duration_type. | modified |
| long_maturity | No | Value for long_maturity. | |
| near_maturity | No | Value for near_maturity. | |
| nominal_rates | No | Value for nominal_rates. | |
| discount_yield | No | Value for discount_yield. | |
| include_payoff | No | Value for include_payoff. | |
| max_iterations | No | Value for max_iterations. | |
| risk_free_rate | No | Value for risk_free_rate. | |
| short_maturity | No | Value for short_maturity. | |
| show_input_info | No | Value for show_input_info. | |
| volatility_type | No | Value for volatility_type. | |
| days_to_maturity | No | Value for days_to_maturity. | |
| key_rate_maturity | No | Value for key_rate_maturity. | |
| payment_frequency | No | Value for payment_frequency. | |
| years_to_maturity | No | Years remaining until the bond matures. | |
| yield_to_maturity | No | Value for yield_to_maturity. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds that parameters are passed directly without tickers or countries, which is helpful behavioral context, but it does not disclose anything further about execution, error handling, or output behavior beyond what the output schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the scope and the 'no tickers' caveat, then lists available indicators, which is reasonable for a gateway tool. It is somewhat repetitive because it names metrics in the opening parenthesis and again in the explicit indicator list, but that redundancy helps map human-readable concepts to exact enum values.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 40 parameters, an output schema, and read-only/idempotent annotations, the description covers the essential calling context: the domain, the required indicator concept, and the direct-argument usage style. It does not explain which parameters apply to which indicator, but that detail is largely available in the schema and output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the structured schema already documents all 40 parameters, setting the baseline at 3. The description adds only a general note that bond/derivative parameters like face_value, coupon_rate, maturity, and spot_rates should be supplied directly, which is marginally useful but does not meaningfully extend parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific domain (bond and derivative valuation) and enumerates twelve concrete calculations, so an agent can tell it apart from generic siblings like valuation or risk. However, it does not explicitly differentiate itself from potentially overlapping siblings such as options or rates, which limits it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one useful usage note ('No tickers or countries needed — provide bond/derivative parameters directly as arguments') and lists available indicators, which implies when the tool is relevant. But it provides no explicit when-to-use or when-not-to-use guidance relative to the many sibling category tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
governmentARead-onlyIdempotentInspect
Government fiscal metrics by country (debt, deficit, expenditure, revenue, tax revenue, trust in government). Requires countries='United States' — use comma-separated values for multiple countries. Do NOT use tickers= for this tool. Supports start_date/end_date and quarterly=true. Supports rolling=N (moving-average smoothing) and trailing=N (trailing N-period sum, e.g. a trailing-4-quarter sum) on the raw series.
Available indicators: get_government_debt, get_government_debt_to_gdp_ratio, get_government_deficit, get_government_deficit_to_gdp_ratio, get_government_expenditure, get_government_expenditure_to_gdp_ratio, get_government_revenue, get_government_revenue_to_gdp_ratio, get_government_tax_revenue, get_government_tax_revenue_to_gdp_ratio, get_trust_in_government.
| Name | Required | Description | Default |
|---|---|---|---|
| lag | No | Number of periods to lag when computing growth rates. | |
| growth | No | Return period-over-period growth rates instead of absolute values. | |
| rolling | No | Rolling window size in number of periods. When set, the metric is computed over a smoothly overlapping trailing window across the full history (e.g. period='monthly' and rolling=6 gives a rolling 6-month value) instead of one value per period, or (for economics indicators) a simple moving average used to smooth the raw series. | |
| end_date | No | End of the date range in YYYY-MM-DD format. | 2026-10-02 |
| trailing | No | Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period. | |
| countries | No | Comma-separated country names, e.g. 'United States,Germany,Japan'. | |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| quarterly | No | Return quarterly data instead of annual when True. | |
| start_date | No | Start of the date range in YYYY-MM-DD format. | 2021-10-03 |
| standardize | No | 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. | |
| show_columns | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered. The description adds operationally important context beyond that: the tickers= prohibition, the countries-required constraint, and how rolling/trailing transform the returned series (moving average vs trailing sum). It stops short of describing return shape, which is acceptable given an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and hard constraints before the indicator enumeration; every sentence carries practical information. The enumerated indicator list is somewhat redundant with the schema enum, costing a little conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter tool with an output schema, the description covers the non-obvious constraints (countries required, no tickers, quarterly/rolling/trailing behavior). Remaining params (lag, growth, standardize, show_columns) are adequately documented in the schema, so nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline would be 3, but the description adds real meaning: it warns that countries is effectively required despite the schema default of empty string, and clarifies the rolling (smoothing) vs trailing (N-period sum) distinction with a concrete quarterly example. The indicator list merely duplicates the enum, which does not earn extra credit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource class (government fiscal metrics by country) and enumerates the exact metrics available, so an agent can immediately see this covers debt/deficit/expenditure/revenue/tax/trust rather than generic macro data. It is clearly distinguishable from siblings like macroeconomics, rates, and fixed_income.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage rules: countries must be specified (with a literal example), do NOT use tickers=, and how to enable quarterly/rolling/trailing. It does not, however, say when to prefer this tool over sibling tools such as macroeconomics or rates, so routing among siblings is left partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobsARead-onlyIdempotentInspect
Labour and social metrics by country (unemployment rate, labour productivity, population statistics, poverty rate, income inequality). Requires countries='United States' — use comma-separated values for multiple countries. Do NOT use tickers= for this tool. Supports start_date/end_date and quarterly=true. Supports rolling=N (moving-average smoothing) and trailing=N (trailing N-period sum) on the raw series. Also includes two US-only, FRED-backed labor indicators (get_nonfarm_payrolls, get_initial_jobless_claims) — these require a FRED API key and only return a 'United States' column regardless of the countries= argument.
Available indicators: get_income_inequality, get_labour_productivity, get_population_statistics, get_poverty_rate, get_unemployment_rate, get_nonfarm_payrolls, get_initial_jobless_claims.
| Name | Required | Description | Default |
|---|---|---|---|
| lag | No | Number of periods to lag when computing growth rates. | |
| growth | No | Return period-over-period growth rates instead of absolute values. | |
| period | No | Observation frequency, e.g. 'monthly', 'quarterly', or 'annual'. | |
| rolling | No | Rolling window size in number of periods. When set, the metric is computed over a smoothly overlapping trailing window across the full history (e.g. period='monthly' and rolling=6 gives a rolling 6-month value) instead of one value per period, or (for economics indicators) a simple moving average used to smooth the raw series. | |
| end_date | No | End of the date range in YYYY-MM-DD format. | 2026-10-02 |
| trailing | No | Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period. | |
| countries | No | Comma-separated country names, e.g. 'United States,Germany,Japan'. | |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| quarterly | No | Return quarterly data instead of annual when True. | |
| start_date | No | Start of the date range in YYYY-MM-DD format. | 2021-10-03 |
| gmdb_source | No | Use the Global Macro Database as the data source when True, rather than the OECD. The two are independent providers with different country and period coverage; both return rates and ratios as decimal fractions. | |
| standardize | No | 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. | |
| show_columns | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/idempotent profile, and the description adds non-obvious behavior beyond them: two indicators require a FRED API key and return only a 'United States' column regardless of countries=, and gmdb_source switches to an independent provider with different coverage. That is meaningful operational context the annotations do not supply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the resource and the hard 'countries=' requirement, then the indicator list, and closes with the FRED caveat. The only mild redundancy is restating rolling/trailing behavior already in the schema, but the density is justified for a 13-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return formatting need not be explained, and the description covers the indicator set, source caveats, auth requirement and parameter behaviors. It is close to complete; adding a note on default date range behavior or the FRED-key failure mode would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents lag, growth, period, rolling, trailing, dates, countries, quarterly, standardize and show_columns. The description reinforces rolling/trailing semantics and the countries requirement but adds no syntax or format detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource ('Labour and social metrics by country') and enumerates the exact indicators available, so the agent knows what content lives behind the generic name 'jobs'. It also draws a boundary against ticker-based tools ('Do NOT use tickers='), though it does not distinguish itself from close siblings like 'macroeconomics' or 'government'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit usage constraints: 'Requires countries=United States', comma-separated multi-country syntax, and an exclusion ('Do NOT use tickers= for this tool'). What it lacks is guidance on when to prefer this tool over the government/macroeconomics siblings, so it is clear context without full routing logic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
liquidityARead-onlyIdempotentInspect
Pre-computed liquidity ratios (current ratio, quick ratio, cash ratio, working capital). Requires tickers='AAPL' — use comma-separated values for multiple tickers. Use instead of raw financial statements. Supports quarterly=true and start_date/end_date.
Available indicators: get_current_ratio, get_quick_ratio, get_cash_ratio, get_working_capital, get_operating_cash_flow_ratio, get_operating_cash_flow_sales_ratio, get_short_term_coverage_ratio, get_defensive_interval_ratio.
| Name | Required | Description | Default |
|---|---|---|---|
| lag | No | Number of periods to lag when computing growth rates. | |
| days | No | Number of calendar days used in day-count-based calculations. | |
| growth | No | Return period-over-period growth rates instead of absolute values. | |
| tickers | No | Comma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'. | |
| end_date | No | End of the date range in YYYY-MM-DD format. | 2026-10-02 |
| trailing | No | Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period. | |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| quarterly | No | Return quarterly data instead of annual when True. | |
| start_date | No | Start of the date range in YYYY-MM-DD format. | 2021-10-03 |
| standardize | No | 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. | |
| show_columns | No | 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. | |
| benchmark_ticker | No | Ticker used as the market benchmark, e.g. 'SPY' or '^GSPC'. | SPY |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds that values are pre-computed and lists the supported indicators, but says nothing about response shape, empty results, or rate/coverage limits. Adequate, not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and metric list, then usage notes, then indicators. Tight overall, though the indicator enumeration largely duplicates the schema enum and costs tokens the schema already spends.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and full parameter descriptions, the description needn't explain returns; it covers the primary tickers/date/quarterly controls. Slight gap: it asserts 'Requires tickers=...' while the schema marks tickers optional with a default and only 'indicator' required, which could mislead a caller.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains lag, days, growth, trailing, standardize, show_columns, and benchmark_ticker. The description merely echoes tickers/quarterly/start_date/end_date, adding no syntax or semantics beyond the structured fields — the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Pre-computed liquidity ratios') and enumerates the exact metrics covered, which cleanly separates it from siblings like solvency, profitability, and efficiency. An agent can select it without opening the enum.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear 'use instead of raw financial statements' routing rule plus ticker and date-range usage notes, but never frames when to prefer this over the sibling ratio families (solvency, profitability) that an agent is choosing among. Context is present, exclusions are not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
macroeconomicsARead-onlyIdempotentInspect
Macroeconomic indicators by country (GDP, real GDP, CPI, PPI, inflation rate, trade balance, imports, exports, investment, consumption, business/consumer confidence, house prices, rent prices, exchange rates, real effective exchange rate, money supply, household savings rate, household debt-to-income ratio, output gap, real interest rate, misery index, banking/currency/sovereign debt crisis indicators, commercial real estate prices, commodity forward curves). Requires countries='United States' — use comma-separated values for multiple countries. Do NOT use tickers= for this tool. Supports start_date/end_date and quarterly=true. Supports rolling=N (moving-average smoothing) and trailing=N (trailing N-period sum, e.g. a trailing-4-quarter sum) on the raw series. get_consumer_price_index accepts oecd_source=true for monthly/quarterly OECD data instead of the default annual GMDB source. get_commodity_forward_curve requires a commodity= argument instead of countries= (e.g. 'Crude Oil', 'Gold') and returns dated futures contracts, not a country series. Also includes six US-only, FRED-backed indicators (get_retail_sales, get_industrial_production_index, get_housing_starts, get_real_personal_income, get_recession_indicator, get_commercial_real_estate_prices) — these require a free FRED API key (optional; get one at https://fred.stlouisfed.org/docs/api/api_key.html) and only return a 'United States' column regardless of the countries= argument. Every rate and ratio this tool returns i
| Name | Required | Description | Default |
|---|---|---|---|
| lag | No | Number of periods to lag when computing growth rates. | |
| growth | No | Return period-over-period growth rates instead of absolute values. | |
| period | No | Observation frequency, e.g. 'monthly', 'quarterly', or 'annual'. | |
| measure | No | Sub-measure selector, e.g. 'M1', 'M2', or 'M3' for money supply. | |
| rolling | No | Rolling window size in number of periods. When set, the metric is computed over a smoothly overlapping trailing window across the full history (e.g. period='monthly' and rolling=6 gives a rolling 6-month value) instead of one value per period, or (for economics indicators) a simple moving average used to smooth the raw series. | |
| end_date | No | End of the date range in YYYY-MM-DD format. | 2026-10-02 |
| trailing | No | Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period. | |
| commodity | No | Value for commodity. Leave unset to use the default of the indicator you selected. Required by: get_commodity_forward_curve. | |
| contracts | No | Value for contracts. | |
| countries | No | Comma-separated country names, e.g. 'United States,Germany,Japan'. | |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| quarterly | No | Return quarterly data instead of annual when True. | |
| rate_type | No | Value for rate_type. | long_term |
| start_date | No | Start of the date range in YYYY-MM-DD format. | 2021-10-03 |
| gmdb_source | No | Use the Global Macro Database as the data source when True, rather than the OECD. The two are independent providers with different country and period coverage; both return rates and ratios as decimal fractions. | |
| oecd_source | No | Value for oecd_source. | |
| standardize | No | 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. | |
| show_columns | No | 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. | |
| inflation_adjusted | No | Adjust nominal values for inflation when True. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint, so the safety profile is covered; the description goes further by disclosing the FRED API-key dependency, that those indicators return only a 'United States' column regardless of countries=, that OECD vs GMDB are independent providers with different coverage, and that the forward curve returns dated futures contracts rather than a country series. The truncated trailing sentence leaves some behavioral description incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening parenthetical enumerates dozens of indicators already present verbatim in the indicator enum, which is pure duplication, and the single enormous run-on sentence buries the most actionable guidance (source toggles, exclusions) mid-text. It also cuts off mid-sentence, so it is oversized and poorly front-loaded simultaneously.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value explanation is unnecessary, and the description covers the high-risk gotchas for a 19-parameter mega-tool: required argument format, source switching, special-cased indicators, and the API-key caveat. Only the truncated final sentence leaves an evident gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine cross-parameter semantics: the countries= format, that commodity= replaces countries= for one indicator, that tickers= is invalid here, and how rolling/trailing alter the returned series. These constraints are not fully expressible in the flat schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the verb+resource clearly ('Macroeconomic indicators by country') and enumerates the covered indicator families, plus calls out special cases like the commodity forward curve. However, the purpose statement is padded with a sprawling parenthetical list that duplicates the schema enum rather than crisply characterizing the tool, and the text is truncated mid-sentence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit operational routing: countries='United States' is required, 'Do NOT use tickers= for this tool', get_commodity_forward_curve needs commodity= instead of countries=, and get_consumer_price_index switches sources via oecd_source=true. It also flags the six US-only FRED-backed indicators and their API-key requirement, all of which steer correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_dataARead-onlyIdempotentInspect
Raw financial data (historical prices, income statement, balance sheet, cash flow statement, company profile, quotes, analyst estimates, dividend/earnings calendars, statistics, market risk premium by country, CFTC Commitment of Traders report). Use this ONLY for raw data needs — for pre-computed ratios, performance, risk, or model metrics use the dedicated tools instead. Requires tickers='AAPL' — use comma-separated values for multiple tickers. get_market_risk_premium and get_commitment_of_traders are ticker/country-agnostic snapshots and ignore most other parameters.
Available indicators: get_analyst_estimates, get_balance_sheet_statement, get_cash_flow_statement, get_commitment_of_traders, get_dividend_calendar, get_earnings_calendar, get_historical_data, get_historical_statistics, get_income_statement, get_intraday_data, get_market_risk_premium, get_profile, get_quote, get_rating, get_revenue_geographic_segmentation, get_revenue_product_segmentation, get_statistics_statement, get_treasury_data.
| Name | Required | Description | Default |
|---|---|---|---|
| lag | No | Number of periods to lag when computing growth rates. | |
| growth | No | Return period-over-period growth rates instead of absolute values. | |
| period | No | Observation frequency, e.g. 'monthly', 'quarterly', or 'annual'. Leave unset to use the default of the indicator you selected. Defaults are 'daily' for get_historical_data, get_treasury_data; '1hour' for get_intraday_data. | |
| tickers | No | Comma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'. | |
| end_date | No | End of the date range in YYYY-MM-DD format. | 2026-10-02 |
| fill_nan | No | Value for fill_nan. | |
| trailing | No | Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period. | |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| quarterly | No | Return quarterly data instead of annual when True. | |
| start_date | No | Start of the date range in YYYY-MM-DD format. | 2021-10-03 |
| show_errors | No | Value for show_errors. | |
| actual_dates | No | Value for actual_dates. | |
| show_columns | No | 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. | |
| return_column | No | Value for return_column. Leave unset to use the default of the indicator you selected. Defaults are 'Adj Close' for get_historical_data; 'Close' for get_intraday_data. | |
| divide_ohlc_by | No | Value for divide_ohlc_by. | |
| enforce_source | No | Value for enforce_source. | |
| risk_free_rate | No | Value for risk_free_rate. | |
| benchmark_ticker | No | Ticker used as the market benchmark, e.g. 'SPY' or '^GSPC'. | SPY |
| include_dividends | No | Value for include_dividends. | |
| show_ticker_seperation | No | Value for show_ticker_seperation. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safe-read profile is covered. The description adds genuinely non-obvious behavior: the ticker requirement and the fact that two indicators are ticker/country-agnostic snapshots that silently ignore most other parameters. It does not discuss rate limits or response size limits beyond the show_columns tip.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and routing rule are front-loaded in the first two sentences, and the special-case note follows. The trailing 'Available indicators' list duplicates the enum already in the schema verbatim, which is wasted length, though it does aid quick scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 20-parameter aggregator with an output schema, the description covers routing, prerequisites, and the notable indicator quirks. The gaps are the opaque placeholder parameters, which neither the description nor the schema explains, but the presence of an output schema means return values need not be described here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the per-parameter baseline is 3. The description adds cross-parameter semantics the schema does not: the required tickers format, the conditional irrelevance of parameters for two indicators, and the show_columns workflow for reducing token usage. It does not clarify the many placeholder parameters (fill_nan, show_errors, enforce_source, divide_ohlc_by), which remain 'Value for X' in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete resource (raw financial data) and enumerates the data families it covers (prices, statements, profile, quotes, calendars, COT report). It explicitly distinguishes itself from the sibling family of computed-metric tools ('for pre-computed ratios, performance, risk, or model metrics use the dedicated tools instead'), so an agent can route without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit when-to-use ('ONLY for raw data needs') and a when-not with the alternative class of tools to use instead. It also states the hard prerequisite (tickers='AAPL', comma-separated) and the edge case that get_market_risk_premium and get_commitment_of_traders ignore most other parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modelsBRead-onlyIdempotentInspect
Pre-computed financial models (WACC, DuPont analysis, Extended DuPont analysis, Enterprise value breakdown, intrinsic value/DCF, Gordon Growth Model, Altman Z-Score, Piotroski F-Score, Beneish M-Score, Economic Value Added (EVA), Present Value of Growth Opportunities, Sustainable Growth Rate, Internal Growth Rate, Graham Number). Requires tickers='AAPL' — use comma-separated values for multiple tickers. Supports quarterly=true and start_date/end_date.
Available indicators: get_altman_z_score, get_beneish_m_score, get_dupont_analysis, get_economic_value_added, get_enterprise_value_breakdown, get_extended_dupont_analysis, get_free_cash_flow_to_equity, get_free_cash_flow_to_firm, get_fulmer_h_score, get_gorden_growth_model, get_graham_number, get_grover_score, get_internal_growth_rate, get_intrinsic_valuation, get_market_value_added, get_ohlson_o_score, get_piotroski_score, get_present_value_of_growth_opportunities, get_residual_income, get_springate_score, get_sustainable_growth_rate, get_tobins_q_ratio, get_two_stage_dividend_discount_model, get_weighted_average_cost_of_capital, get_zmijewski_score.
| Name | Required | Description | Default |
|---|---|---|---|
| lag | No | Number of periods to lag when computing growth rates. | |
| growth | No | Return period-over-period growth rates instead of absolute values. | |
| diluted | No | Value for diluted. | |
| periods | No | Value for periods. | |
| tickers | No | Comma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'. | |
| end_date | No | End of the date range in YYYY-MM-DD format. | 2026-10-02 |
| trailing | No | Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period. | |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| quarterly | No | Return quarterly data instead of annual when True. | |
| start_date | No | Start of the date range in YYYY-MM-DD format. | 2021-10-03 |
| growth_rate | No | Assumed constant growth rate as a decimal. Leave unset to use the default of the indicator you selected. Required by: get_gorden_growth_model, get_intrinsic_valuation. | |
| standardize | No | 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. | |
| show_columns | No | 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. | |
| cash_flow_type | No | Value for cash_flow_type. | Free Cash Flow |
| rate_of_return | No | Value for rate_of_return. Leave unset to use the default of the indicator you selected. Required by: get_gorden_growth_model, get_two_stage_dividend_discount_model. | |
| calculate_daily | No | Value for calculate_daily. | |
| project_periods | No | Value for project_periods. | |
| benchmark_ticker | No | Ticker used as the market benchmark, e.g. 'SPY' or '^GSPC'. | SPY |
| high_growth_rate | No | Value for high_growth_rate. Leave unset to use the default of the indicator you selected. Required by: get_two_stage_dividend_discount_model. | |
| include_dividends | No | Value for include_dividends. | |
| show_full_results | No | Value for show_full_results. | |
| stable_growth_rate | No | Value for stable_growth_rate. Leave unset to use the default of the indicator you selected. Required by: get_two_stage_dividend_discount_model. | |
| high_growth_periods | No | Value for high_growth_periods. | |
| perpetual_growth_rate | No | Terminal (perpetual) growth rate used in DCF models. Leave unset to use the default of the indicator you selected. Required by: get_intrinsic_valuation. | |
| weighted_average_cost_of_capital | No | WACC as a decimal, e.g. 0.09 for 9 %. Leave unset to use the default of the indicator you selected. Required by: get_intrinsic_valuation. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered and the description only needs to add non-obvious behavior. It adds that resolution is per-indicator and that several inputs are optional, but not much beyond the schema. It also asserts 'Requires tickers=AAPL' while the schema marks only indicator as required, which is a mild inconsistency with structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is well front-loaded and the usage line is terse. The 'Available indicators:' block duplicates the indicator enum wholesale, which is pure token bloat in the tool description for a 25-param tool, though it does map human-readable model names to the enum values.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and annotations cover the safety profile. For a 25-parameter tool, however, the description only covers four inputs and leaves many vaguely documented parameters (periods, diluted, show_full_results, cash_flow_type) to the schema, and does not differentiate this tool from the valuation sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and 1 of 25 parameters carries an enum, so the schema does the heavy lifting; baseline is 3. The description restates tickers/quarterly/start_date/end_date semantics that already exist verbatim in the schema and adds no new meaning for the many bare 'Value for X' parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (pre-computed financial models) and enumerates the concrete metrics it produces (WACC, DuPont, DCF, Altman Z-Score, etc.), so an agent knows exactly what family of computations this covers. It does not, however, differentiate itself from siblings like valuation or profitability, which overlap with several of the listed indicators.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives operational usage for the main inputs (tickers comma-separated, quarterly=true, start_date/end_date), which is real guidance for calling it. It never states when to prefer this tool over the valuation/solvency/profitability siblings, so the routing decision between overlapping tools is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
momentumBRead-onlyIdempotentInspect
Momentum technical indicators (RSI, MACD, Stochastic Oscillator, Williams %R, Aroon). Applied to price data automatically — no need to fetch prices first. Requires tickers='AAPL' — use comma-separated values for multiple tickers.
Available indicators: get_money_flow_index, get_williams_percent_r, get_aroon_indicator, get_commodity_channel_index, get_relative_vigor_index, get_force_index, get_ultimate_oscillator, get_percentage_price_oscillator, get_detrended_price_oscillator, get_average_directional_index, get_chande_momentum_oscillator, get_ichimoku_cloud, get_stochastic_oscillator, get_moving_average_convergence_divergence, get_relative_strength_index, get_balance_of_power, get_awesome_oscillator, get_vortex_indicator, get_elder_ray_index, get_rate_of_change, get_choppiness_index, get_know_sure_thing.
| Name | Required | Description | Default |
|---|---|---|---|
| lag | No | Number of periods to lag when computing growth rates. | |
| growth | No | Return period-over-period growth rates instead of absolute values. | |
| period | No | Observation frequency, e.g. 'monthly', 'quarterly', or 'annual'. | daily |
| window | No | Value for window. Leave unset to use the default of the indicator you selected. Defaults differ between indicators. | |
| tickers | No | Comma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'. | |
| weights | No | Value for weights. | |
| constant | No | Value for constant. | |
| end_date | No | End of the date range in YYYY-MM-DD format. | 2026-10-02 |
| window_1 | No | Value for window_1. | |
| window_2 | No | Value for window_2. | |
| window_3 | No | Value for window_3. | |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| quarterly | No | Return quarterly data instead of annual when True. | |
| start_date | No | Start of the date range in YYYY-MM-DD format. | 2021-10-03 |
| base_window | No | Value for base_window. | |
| long_window | No | Value for long_window. Leave unset to use the default of the indicator you selected. Defaults are 26 for get_moving_average_convergence_divergence; 28 for get_percentage_price_oscillator; 34 for get_awesome_oscillator. | |
| roc_windows | No | Value for roc_windows. | |
| sma_windows | No | Value for sma_windows. | |
| standardize | No | 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. | |
| close_column | No | Value for close_column. | Adj Close |
| short_window | No | Value for short_window. Leave unset to use the default of the indicator you selected. Defaults are 12 for get_moving_average_convergence_divergence; 5 for get_awesome_oscillator; 7 for get_percentage_price_oscillator. | |
| show_columns | No | 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. | |
| signal_window | No | Value for signal_window. | |
| smooth_window | No | Value for smooth_window. | |
| benchmark_ticker | No | Ticker used as the market benchmark, e.g. 'SPY' or '^GSPC'. | SPY |
| conversion_window | No | Value for conversion_window. | |
| lead_span_b_window | No | Value for lead_span_b_window. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered. The description usefully adds that price data is applied automatically and that tickers/indicator are the driving inputs, but says nothing about output shape, latency, rate limits, or what the many window parameters do per indicator.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening two sentences are well front-loaded and earn their place. The trailing list of 22 indicator names duplicates the enum already present in the schema verbatim, adding bulk without new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 27-parameter tool with a full output schema, the description covers the essential contract (indicator selection plus tickers) but leaves the interaction between indicator choice and the numerous window parameters entirely to the schema. It is adequate but does not reduce the trial-and-error of configuring per-indicator windows.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 27 parameters, and the description is not obliged to compensate. It reinforces only the tickers and indicator parameters, adding the comma-separated multi-ticker convention, which is marginally helpful but below the schema's own detail level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific resource ('momentum technical indicators') and enumerates the families (RSI, MACD, Stochastic, Williams %R, Aroon), so an agent knows it is the technical-indicator calculator rather than a raw price fetcher. It stops short of distinguishing itself from siblings like volatility or market_data, which also deal with price series.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete invocation guidance ('Requires tickers="AAPL"', comma-separated for multiples) and notes that prices are fetched automatically. It never says when to prefer this over volatility, models, or market_data, nor when-not to use it, so selection guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
optionsCRead-onlyIdempotentInspect
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.
Available indicators: 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.
| Name | Required | Description | Default |
|---|---|---|---|
| legs | No | Value for legs. Leave unset to use the default of the indicator you selected. Required by: get_strategy_payoff. | |
| seed | No | Value for seed. | |
| rebate | No | Value for rebate. | |
| tickers | No | Comma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'. | |
| end_date | No | End of the date range in YYYY-MM-DD format. | 2026-10-02 |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| quarterly | No | Return quarterly data instead of annual when True. | |
| timesteps | No | Value for timesteps. | |
| knock_type | No | Value for knock_type. | out |
| put_option | No | Value for put_option. | |
| start_date | No | Start of the date range in YYYY-MM-DD format. | 2021-10-03 |
| time_steps | No | Value for time_steps. | |
| cash_payout | No | Value for cash_payout. | |
| option_type | No | Value for option_type. | cash-or-nothing |
| simulations | No | Value for simulations. | |
| standardize | No | 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. | |
| show_columns | No | 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. | |
| dividend_yield | No | Value for dividend_yield. | |
| risk_free_rate | No | Value for risk_free_rate. | |
| american_option | No | Value for american_option. | |
| expiration_date | No | Value for expiration_date. | |
| show_input_info | No | Value for show_input_info. | |
| benchmark_ticker | No | Ticker used as the market benchmark, e.g. 'SPY' or '^GSPC'. | SPY |
| expiration_dates | No | Value for expiration_dates. | |
| strike_step_size | No | Value for strike_step_size. | |
| barrier_direction | No | Value for barrier_direction. | down |
| number_of_strikes | No | Value for number_of_strikes. | |
| outlier_threshold | No | Value for outlier_threshold. | |
| stock_price_range | No | Value for stock_price_range. | |
| barrier_percentage | No | Value for barrier_percentage. | |
| strike_price_range | No | Value for strike_price_range. Leave unset to use the default of the indicator you selected. Defaults differ between indicators. | |
| time_to_expiration | No | Value for time_to_expiration. | |
| show_standard_error | No | Value for show_standard_error. | |
| expiration_time_range | No | Value for expiration_time_range. | |
| number_of_expirations | No | Value for number_of_expirations. | |
| show_expiration_dates | No | Value for show_expiration_dates. | |
| stock_price_step_size | No | Value for stock_price_step_size. | |
| foreign_risk_free_rate | No | Value for foreign_risk_free_rate. | |
| show_unique_combinations | No | Value for show_unique_combinations. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds nothing behavioral beyond annotations — no mention of data-source/auth requirements, compute cost for Monte Carlo or simulation indicators, or what happens when an indicator's params are omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is front-loaded and useful, but roughly half the text is a verbatim re-listing of the 33 enum values already in the schema. That duplication inflates the description without adding selection-relevant information, which is a significant structural waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a dispatcher exposing 39 parameters and 33 indicators with an output schema present, the description never explains how the parameter set maps to individual indicators — an agent must infer from scattered schema hints which of the 39 params matter for a chosen indicator. The critical per-indicator parameter guidance is absent from the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across 39 parameters, so baseline is 3. The description's ticker-format note ('comma-separated values for multiple tickers') merely restates the schema's own text, and the indicator list duplicates the enum, adding no semantic depth about which params apply to which indicator.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (option pricing and Greeks) and enumerates the model families it covers (Black-Scholes, binomial tree, implied volatility), so the domain is unambiguous. It does not differentiate itself from siblings like volatility, models, or econometrics, which partly overlap this territory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage guidance is a prerequisite ('Requires tickers="AAPL"'), which is already documented in the schema. There is no statement of when to select this tool over volatility/models, and no guidance on choosing among the 33 registered indicators beyond listing their names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overlapBRead-onlyIdempotentInspect
Overlap technical indicators (SMA, EMA, Bollinger Bands, Keltner Channels). Applied to price data automatically — no need to fetch prices first. Requires tickers='AAPL' — use comma-separated values for multiple tickers.
Available indicators: get_moving_average, get_exponential_moving_average, get_double_exponential_moving_average, get_trix, get_triangular_moving_average, get_weighted_moving_average, get_hull_moving_average, get_kaufman_adaptive_moving_average, get_volume_weighted_average_price, get_parabolic_sar, get_pivot_points, get_fibonacci_retracement_levels, get_support_resistance_levels.
| Name | Required | Description | Default |
|---|---|---|---|
| lag | No | Number of periods to lag when computing growth rates. | |
| trend | No | Value for trend. | uptrend |
| af_max | No | Value for af_max. | |
| growth | No | Return period-over-period growth rates instead of absolute values. | |
| levels | No | Value for levels. | |
| period | No | Observation frequency, e.g. 'monthly', 'quarterly', or 'annual'. | daily |
| window | No | Value for window. Leave unset to use the default of the indicator you selected. Defaults differ between indicators. | |
| tickers | No | Comma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'. | |
| af_start | No | Value for af_start. | |
| end_date | No | End of the date range in YYYY-MM-DD format. | 2026-10-02 |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| quarterly | No | Return quarterly data instead of annual when True. | |
| start_date | No | Start of the date range in YYYY-MM-DD format. | 2021-10-03 |
| fast_window | No | Value for fast_window. | |
| sensitivity | No | Value for sensitivity. | |
| slow_window | No | Value for slow_window. | |
| standardize | No | 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. | |
| af_increment | No | Value for af_increment. | |
| close_column | No | Value for close_column. | Adj Close |
| show_columns | No | 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. | |
| benchmark_ticker | No | Ticker used as the market benchmark, e.g. 'SPY' or '^GSPC'. | SPY |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and openWorld, so the safety profile is covered. The description adds useful context that prices are fetched automatically and tickers accept comma-separated values. It adds nothing about how indicator-specific parameters behave or what happens with unknown tickers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and the two operational facts that matter (auto price fetch, tickers syntax). Reasonably tight, though the full enumeration of 13 indicator names duplicates the schema enum and consumes tokens without new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 21-parameter tool with only 1 required parameter is complex, and the description leaves the relationship between parameters and the chosen indicator unexplained (e.g., that af_start/af_increment/af_max apply only to get_parabolic_sar, or that window defaults differ per indicator). The output schema covers return values, so that omission is acceptable, but the parameter-to-indicator mapping gap is significant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 21 parameters, including tickers formatting and the indicator enum. The description only repeats the tickers format and lists the indicator values verbatim, adding no meaning beyond the structured fields (e.g., which params apply to which indicator).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource combination: computing overlapping technical indicators (SMA, EMA, Bollinger, Keltner) on price data. The category name 'overlap' is TA jargon, but the parenthetical examples make the intent concrete. It does not distinguish itself from category siblings like momentum or volatility, which also compute indicators.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives some framing ('applied to price data automatically — no need to fetch prices first') and usage syntax for tickers, which implies how to call it. But it never says when to pick this over momentum/volatility/performance or other indicator categories, and it falsely asserts tickers is required when the schema lists only 'indicator' as required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
performanceARead-onlyIdempotentInspect
Pre-computed risk-adjusted performance metrics (Sharpe ratio incl. standard/adjusted/probabilistic/deflated methods, Sortino ratio, Alpha, Jensen's Alpha, Beta, CAPM, Treynor ratio, M2 ratio, Tracking Error, Information Ratio, Fama-French factors, period Returns, Excess Returns — Returns/Excess Returns support cumulative=true for a compounded growth index rebased to 1). Beta, CAPM, Alpha, Jensen's Alpha, Treynor, Sortino, M2, Tracking Error and Information Ratio support rolling=N for a rolling N-period value spanning the full history instead of one value per period (e.g. period='monthly', rolling=6 for a rolling 6-month figure). Requires tickers='AAPL' — use comma-separated values for multiple tickers. Does NOT support period='daily'; use weekly, monthly, quarterly, or yearly instead.
Available indicators: get_alpha, get_appraisal_ratio, get_beta, get_burke_ratio, get_calmar_ratio, get_capital_asset_pricing_model, get_carhart_four_factor_model, get_compound_growth_rate, get_correlation_matrix, get_covariance_matrix, get_downside_capture_ratio, get_excess_return, get_factor_asset_correlations, get_factor_correlations, get_fama_and_french_model, get_fama_decomposition, get_gain_to_pain_ratio, get_henriksson_merton_model, get_information_ratio, get_jensens_alpha, get_kappa_ratio, get_m2_ratio, get_omega_ratio, get_rachev_ratio, get_returns, get_sharpe_ratio, get_sortino_ratio, get_starr_ratio, get_sterling_ratio, get_tracking_error, get_treynor_mazuy_model, get_treynor_ratio, g
| Name | Required | Description | Default |
|---|---|---|---|
| lag | No | Number of periods to lag when computing growth rates. | |
| alpha | No | Value for alpha. | |
| order | No | Value for order. | |
| growth | No | Return period-over-period growth rates instead of absolute values. | |
| method | No | Value for method. Leave unset to use the default of the indicator you selected. Defaults are 'multi' for get_fama_and_french_model; 'standard' for get_sharpe_ratio. | |
| period | No | Observation frequency, e.g. 'monthly', 'quarterly', or 'annual'. | |
| rolling | No | Rolling window size in number of periods. When set, the metric is computed over a smoothly overlapping trailing window across the full history (e.g. period='monthly' and rolling=6 gives a rolling 6-month value) instead of one value per period, or (for economics indicators) a simple moving average used to smooth the raw series. Leave unset to use the default of the indicator you selected. Defaults are None for get_alpha, get_appraisal_ratio, get_beta, get_capital_asset_pricing_model, get_fama_decomposition, get_information_ratio, get_jensens_alpha, get_m2_ratio, get_omega_ratio, get_sharpe_ratio, get_sortino_ratio, get_tracking_error, get_treynor_ratio; 14 for get_ulcer_performance_index. | |
| tickers | No | Comma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'. | |
| end_date | No | End of the date range in YYYY-MM-DD format. | 2026-10-02 |
| n_trials | No | Value for n_trials. | |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| quarterly | No | Return quarterly data instead of annual when True. | |
| adjustment | No | Value for adjustment. | |
| cumulative | No | Return the cumulative value compounded over time instead of the discrete value per period. Always rebased to start at 1 at the beginning of the selected date range. | |
| start_date | No | Start of the date range in YYYY-MM-DD format. | 2021-10-03 |
| standardize | No | 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. | |
| show_columns | No | 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. | |
| trials_window | No | Value for trials_window. | |
| within_period | No | Value for within_period. | |
| benchmark_ticker | No | Ticker used as the market benchmark, e.g. 'SPY' or '^GSPC'. | SPY |
| exclude_risk_free | No | Value for exclude_risk_free. | |
| show_full_results | No | Value for show_full_results. | |
| factors_to_calculate | No | Comma-separated factor names to include in the calculation. | |
| benchmark_sharpe_ratio | No | Value for benchmark_sharpe_ratio. | |
| include_daily_residuals | No | Value for include_daily_residuals. | |
| minimum_acceptable_return | No | The minimum acceptable return (MAR) threshold below which returns are considered downside, e.g. 0.0 for downside relative to a zero return. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, open-world, so the safety profile is covered. The description adds meaningful behavior beyond that: the unsupported 'daily' period, cumulative compounding rebased to 1, rolling=N spanning full history, and multi-ticker support. It does not describe rate limits or failure modes, but for a read-only metric tool this is solid added context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core prose is dense and front-loaded, but the trailing 'Available indicators:' list duplicates the indicator enum already present in the schema, consuming tokens for no new information. The middle paragraph is efficiently packed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 26 parameters and an output schema present, the description need not explain return shapes, and it correctly focuses on the required indicator plus cross-cutting flags. It leaves some generic params (alpha, order, n_trials, trials_window, adjustment) unexplained, but these are largely niche, so the definition is reasonably complete for a dispatch-style metric tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real semantics the schema does not: cumulative compounding/rebasing behavior, the rolling-window meaning (e.g. monthly + rolling=6), and the tickers multi-value convention. It is above baseline because it clarifies cross-parameter interaction, not just restating individual fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb class (computes) and resource (pre-computed risk-adjusted performance metrics) and enumerates the covered measures: Sharpe, Sortino, Alpha, Beta, CAPM, Treynor, Tracking Error, Information Ratio, Fama-French, etc. That is enough for an agent to distinguish it from siblings like volatility or momentum, though it never explicitly names a competing tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives parameter-level usage rules (tickers='AAPL' required, comma-separated for multiple, period='daily' not supported, cumulative=true rebases to 1), which is real guidance. However it offers no when-to-use/when-not guidance relative to sibling tools such as volatility or risk, so routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
profitabilityARead-onlyIdempotentInspect
Pre-computed profitability ratios (gross margin, operating margin, net margin, ROE, ROA, ROIC, ROCE). Requires tickers='AAPL' — use comma-separated values for multiple tickers. Use instead of raw financial statements. Supports quarterly=true and start_date/end_date.
Available indicators: get_gross_margin, get_operating_margin, get_net_profit_margin, get_ebitda_margin, get_free_cash_flow_margin, get_interest_coverage_ratio, get_income_before_tax_profit_margin, get_effective_tax_rate, get_return_on_assets, get_cash_return_on_assets, get_return_on_equity, get_return_on_invested_capital, get_return_on_capital_employed, get_return_on_tangible_assets, get_income_quality_ratio, get_net_income_per_ebt, get_free_cash_flow_operating_cash_flow_ratio, get_EBT_to_EBIT, get_EBIT_to_revenue, get_cash_tax_rate, get_tax_rate_divergence, get_interest_burden_ratio, get_tax_burden_ratio.
| Name | Required | Description | Default |
|---|---|---|---|
| lag | No | Number of periods to lag when computing growth rates. | |
| growth | No | Return period-over-period growth rates instead of absolute values. | |
| tickers | No | Comma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'. | |
| end_date | No | End of the date range in YYYY-MM-DD format. | 2026-10-02 |
| trailing | No | Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period. | |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| quarterly | No | Return quarterly data instead of annual when True. | |
| start_date | No | Start of the date range in YYYY-MM-DD format. | 2021-10-03 |
| standardize | No | 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. | |
| show_columns | No | 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. | |
| benchmark_ticker | No | Ticker used as the market benchmark, e.g. 'SPY' or '^GSPC'. | SPY |
| dividend_adjusted | No | Value for dividend_adjusted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds useful context beyond them: values are pre-computed rather than raw statements, and quarterly/date-range scoping is supported. Auth, rate limits, and response shape are not addressed, but the output schema covers the latter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and usage guidance are front-loaded and tight, but the 23-item indicator list is duplicated verbatim from the schema enum, adding substantial bulk without new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and 100% schema coverage, the description need not explain return values or secondary params (lag, growth, trailing, standardize). It covers the essential calling pattern well; only explicit sibling routing is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description restates tickers formatting and the quarterly/date-range options that the schema already documents, adding little new semantic detail; it also says tickers is "required" while the schema marks only indicator as required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (pre-computed profitability ratios) and enumerates the metrics it covers (gross/operating/net margin, ROE, ROA, ROIC, ROCE), which implicitly separates it from solvency, valuation, and efficiency siblings. It does not explicitly name a sibling it is not, so it stops short of the top tier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear when-to-use directive ("Use instead of raw financial statements") plus the required tickers form ("Requires tickers='AAPL'") and supported modifiers (quarterly, start_date/end_date). No explicit when-not-to-use or sibling routing (e.g. vs. efficiency or valuation) is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ratesARead-onlyIdempotentInspect
Interest rate data (central bank policy rates, short/long-term rates, government bond yields, ICE BofA corporate bond series, EURIBOR, ECB rates, Federal Reserve rates, official U.S. Treasury par yield curve, yield curve slope). Requires countries='United States' — use comma-separated values for multiple countries. Do NOT use tickers= for this tool. Supports start_date/end_date and quarterly=true. The central bank policy rate, short/long-term rate, and yield curve slope indicators additionally support rolling=N (moving-average smoothing) and trailing=N (trailing N-period sum). Also includes get_mortgage_rate_30_year, get_real_yield_curve (FRED TIPS real yields) and get_breakeven_inflation_expectations — three US-only FRED-backed indicators. A FRED API key is optional and free (get one at https://fred.stlouisfed.org/docs/api/api_key.html); without it these three return no data, while get_treasury_rates and every other indicator in this tool work without one. FRED-backed indicators only return a 'United States' column regardless of the countries= argument.
Available indicators: get_central_bank_policy_rate, get_short_term_interest_rate, get_long_term_interest_rate, get_government_bond_yield, get_euribor_rates, get_european_central_bank_rates, get_federal_reserve_rates, get_ice_bofa_effective_yield, get_ice_bofa_option_adjusted_spread, get_ice_bofa_total_return, get_ice_bofa_yield_to_worst, get_mortgage_rate_30_year, get_real_yield_curve, get_breakeven_inflation_expectations, g
| Name | Required | Description | Default |
|---|---|---|---|
| lag | No | Number of periods to lag when computing growth rates. | |
| rate | No | Value for rate. Leave unset to use the default of the indicator you selected. Defaults are 'EFFR' for get_federal_reserve_rates; None for get_european_central_bank_rates. | |
| growth | No | Return period-over-period growth rates instead of absolute values. | |
| period | No | Observation frequency, e.g. 'monthly', 'quarterly', or 'annual'. | |
| nominal | No | Value for nominal. | |
| rolling | No | Rolling window size in number of periods. When set, the metric is computed over a smoothly overlapping trailing window across the full history (e.g. period='monthly' and rolling=6 gives a rolling 6-month value) instead of one value per period, or (for economics indicators) a simple moving average used to smooth the raw series. | |
| end_date | No | End of the date range in YYYY-MM-DD format. | 2026-10-02 |
| maturity | No | Value for maturity. | |
| trailing | No | Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period. | |
| countries | No | Comma-separated country names, e.g. 'United States,Germany,Japan'. | |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| quarterly | No | Return quarterly data instead of annual when True. | |
| maturities | No | Comma-separated bond maturity labels, e.g. '3month,2year,10year'. | |
| short_term | No | Value for short_term. | |
| start_date | No | Start of the date range in YYYY-MM-DD format. | 2021-10-03 |
| gmdb_source | No | Use the Global Macro Database as the data source when True, rather than the OECD. The two are independent providers with different country and period coverage; both return rates and ratios as decimal fractions. | |
| standardize | No | 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. | |
| show_columns | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description goes beyond them by disclosing that a FRED API key is optional but needed for three indicators, that those three return no data without it, and that FRED-backed indicators always return a 'United States' column regardless of countries=. That is genuine behavioral context, though response format and rate-limit behavior are not covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The front-loaded scope and usage rules are efficient, but the trailing enumeration of all 15 indicators duplicates the schema enum (and is even truncated mid-word), adding length without new information. Useful caveats are buried after the redundant indicator list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 18-parameter tool with an output schema and full annotation coverage, the description supplies the essential operating caveats (country requirement, no tickers, API-key dependency, FRED column behavior). Remaining gaps are minor given the schema carries parameter detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3, and the description adds real meaning by scoping rolling=N and trailing=N to only the policy-rate, short/long-term rate, and yield-curve-slope indicators, plus quarterly=true and date-range support. It does not explain the odd maturity/nominal/short_term/gmdb_source flags, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (interest rate data) and enumerates the covered indicator families (central bank policy rates, bond yields, ICE BofA series, EURIBOR, Treasury curve, yield curve slope), so an agent knows exactly what domain this tool serves. It does not explicitly differentiate itself from siblings like fixed_income or macroeconomics, which is the main gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives several concrete usage constraints: countries='United States' is required for some indicators, comma-separated values for multiple countries, an explicit 'Do NOT use tickers= for this tool', and supported date/quarterly arguments. Strong context, but no explicit pointer to which sibling tool to use instead when tickers= is wanted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
riskBRead-onlyIdempotentInspect
Pre-computed risk metrics (VaR incl. historic/gaussian/cf/studentt/evt distributions, CVaR, EVaR, GARCH volatility, max drawdown, drawdown duration, drawdown recovery time, Conditional Drawdown at Risk (CDaR), Tail Ratio, skewness, kurtosis, downside deviation, Variance, Volatility incl. close_to_close/parkinson/garman_klass/rogers_satchell/yang_zhang estimators, Excess Volatility). VaR, CVaR, skewness, kurtosis, CDaR, Tail Ratio, downside deviation, Variance, Volatility and Excess Volatility support rolling=N for a rolling N-period value spanning the full history instead of one value per period (e.g. period='monthly', rolling=6 for a rolling 6-month figure). Requires tickers='AAPL' — use comma-separated values for multiple tickers. Supports period='daily' for whole-series calculations; rolling and per-period outputs use weekly, monthly, quarterly, or yearly.
Available indicators: get_acerbi_szekely_test, get_amihud_illiquidity, get_autocorrelation, get_best_fitting_copula, get_coefficient_of_variation, get_component_value_at_risk, get_conditional_drawdown_at_risk, get_conditional_value_at_risk, get_copula_parameters, get_copula_simulation, get_covar, get_downside_deviation, get_egarch, get_egarch_forecast, get_egarch_parameters, get_entropic_value_at_risk, get_ewma_volatility, get_excess_volatility, get_garch, get_garch_forecast, get_garch_parameters, get_gjr_garch, get_gjr_garch_forecast, get_gjr_garch_parameters, get_har_rv_forecast, get_hill_estimator, get_hurst_exponent
| Name | Required | Description | Default |
|---|---|---|---|
| k | No | Value for k. | |
| q | No | Value for q. | |
| dof | No | Value for dof. | |
| lag | No | Number of periods to lag when computing growth rates. | |
| lags | No | Value for lags. | |
| tail | No | Value for tail. | left |
| test | No | Value for test. | both |
| alpha | No | Value for alpha. | |
| scale | No | Value for scale. | |
| column | No | Value for column. | Return |
| copula | No | Value for copula. | gaussian |
| fisher | No | Value for fisher. | |
| growth | No | Return period-over-period growth rates instead of absolute values. | |
| method | No | Value for method. Leave unset to use the default of the indicator you selected. Defaults are 'close_to_close' for get_volatility; 'empirical' for get_tail_dependence_coefficient. | |
| period | No | Observation frequency, e.g. 'monthly', 'quarterly', or 'annual'. | |
| ticker | No | Value for ticker. Leave unset to use the default of the indicator you selected. Required by: get_covar. | |
| horizon | No | Value for horizon. | |
| lambda_ | No | Value for lambda_. | |
| max_lag | No | Value for max_lag. | |
| rolling | No | Rolling window size in number of periods. When set, the metric is computed over a smoothly overlapping trailing window across the full history (e.g. period='monthly' and rolling=6 gives a rolling 6-month value) instead of one value per period, or (for economics indicators) a simple moving average used to smooth the raw series. Leave unset to use the default of the indicator you selected. Defaults are None for get_conditional_drawdown_at_risk, get_conditional_value_at_risk, get_downside_deviation, get_excess_volatility, get_kurtosis, get_skewness, get_tail_ratio, get_value_at_risk, get_variance, get_volatility; 14 for get_ulcer_index. | |
| tickers | No | Comma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'. | |
| weights | No | Value for weights. | |
| end_date | No | End of the date range in YYYY-MM-DD format. | 2026-10-02 |
| ticker_a | No | Value for ticker_a. Leave unset to use the default of the indicator you selected. Required by: get_tail_dependence_coefficient. Defaults are None for get_best_fitting_copula, get_copula_parameters, get_copula_simulation. | |
| ticker_b | No | Value for ticker_b. Leave unset to use the default of the indicator you selected. Required by: get_tail_dependence_coefficient. Defaults are None for get_best_fitting_copula, get_copula_parameters, get_copula_simulation. | |
| estimator | No | Value for estimator. | squared_return |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| quarterly | No | Return quarterly data instead of annual when True. | |
| start_date | No | Start of the date range in YYYY-MM-DD format. | 2021-10-03 |
| time_steps | No | Value for time_steps. Leave unset to use the default of the indicator you selected. Defaults are 10 for get_egarch_forecast, get_garch_forecast, get_gjr_garch_forecast; None for get_egarch, get_garch, get_gjr_garch. | |
| n_bootstrap | No | Value for n_bootstrap. | |
| standardize | No | 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. | |
| window_size | No | Value for window_size. | |
| distribution | No | Value for distribution. | historic |
| random_state | No | Value for random_state. | |
| show_columns | No | 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. | |
| n_simulations | No | Value for n_simulations. | |
| weekly_window | No | Value for weekly_window. | |
| within_period | No | Value for within_period. | |
| monthly_window | No | Value for monthly_window. | |
| optimization_t | No | Value for optimization_t. | |
| benchmark_ticker | No | Ticker used as the market benchmark, e.g. 'SPY' or '^GSPC'. | SPY |
| empirical_margins | No | Value for empirical_margins. | |
| show_full_results | No | Value for show_full_results. | |
| conditioning_ticker | No | Value for conditioning_ticker. Leave unset to use the default of the indicator you selected. Required by: get_covar. | |
| threshold_percentile | No | Only used when distribution='evt'. The percentile of losses above which the Generalized Pareto Distribution is fitted, e.g. 0.95 fits on the worst 5% of losses. | |
| minimum_acceptable_return | No | The minimum acceptable return (MAR) threshold below which returns are considered downside, e.g. 0.0 for downside relative to a zero return. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds real behavioral context: which indicators support rolling=N and that rolling spans the full history instead of one value per period. It does not disclose failure modes, data latency, or cost of heavy computations (n_simulations=10000, n_bootstrap=1000), so it is adequate rather than rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first paragraph is dense but informative; the trailing 'Available indicators:' list of 42 names is a verbatim duplication of the indicator enum with no added meaning, adding bulk without value. The whole block is an undifferentiated wall of text with no headings, so scanning for the relevant parameter or metric is slow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 47-parameter mega-dispatcher with an output schema and safety annotations, the description covers the essentials: what it returns, the required tickers/indicator inputs, and rolling/period semantics. It omits parameter-to-indicator mapping details (which of the 47 params apply to a given indicator) and sibling routing, which would matter most for a tool this broad.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description contributes beyond the schema by enumerating exactly which metrics accept rolling=N, restating the tickers requirement, and clarifying the period/rolling output granularity. The many 'Value for k.' placeholders in the schema mean the description carries some of the semantic load, though not for most of the 47 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely — 'Pre-computed risk metrics' — and enumerates the specific metric families (VaR variants, CVaR, EVaR, GARCH volatility, drawdowns, CDaR, etc.) plus the full set of 42 indicator identifiers, so an agent knows exactly what this dispatcher computes. It does not, however, differentiate itself from siblings like 'volatility', 'models' or 'econometrics', which plausibly overlap with indicators such as get_volatility and get_garch listed here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Operational guidance is present for parameters: 'Requires tickers=AAPL', comma-separated multi-ticker support, period='daily' for whole-series calculations, and which outputs accept weekly/monthly/quarterly/yearly. But there is no when-to-use/when-not guidance or named alternative tool for overlapping indicators, leaving the risk-vs-volatility-vs-models choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_by_categoryARead-onlyIdempotentInspect
List every available metric/tool within a category.
Args:
category: One of the category names returned by ``list_categories``,
e.g. ``ratios``, ``technicals``, ``economics``, ``discovery``.
Returns:
str: Markdown table of tool names and their descriptions for the
requested category, or an error message if the category is unknown.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Category name as returned by search.categories, e.g. 'ratios', 'technicals', 'economics', 'discovery'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, indicating safe read operation. The description adds that it returns a Markdown table or error message, providing context beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise and front-loaded with purpose. However, the Args/Returns section duplicates schema information, making it slightly less efficient than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 required parameter, output schema present, annotations provided), the description covers all essential aspects: purpose, parameter, and return format. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear parameter description. The description text repeats the same information (category examples) without adding new meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List every available metric/tool') and the resource ('within a category'), with specific examples of categories. It distinguishes itself from sibling tools which are individual category names, as this tool aggregates items within a given category.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (to discover available metrics/tools in a category) but does not explicitly state when to use this tool versus alternatives like 'search_metrics' or individual category tools. There is no 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_categoriesARead-onlyIdempotentInspect
List all available metric categories and how many tools each contains.
Use this first to understand what is available, then call
``list_metrics_by_category`` with a specific category name.
Returns:
str: Markdown table of categories, tool counts, and descriptions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and idempotentHint=true, so the description adds value by specifying the return format (Markdown table). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus a returns line, all concise and front-loaded with the core purpose. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and an output schema, the description is complete: it explains what the tool does, how to use it, and what it returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist; schema coverage is 100% by default. Description doesn't need to add parameter info, and baseline is 4 for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all metric categories and their tool counts. It distinguishes from siblings by positioning itself as an overview tool, separate from the specific category tools and search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use this first to understand available categories before calling list_metrics_by_category. Provides clear sequential usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_instrumentsARead-onlyIdempotentInspect
Search for ticker symbols by company name, symbol, CIK, CUSIP, or ISIN.
Args:
query: The search term, e.g. ``'Apple'``, ``'META'``, ``'0000320193'``.
search_method: Lookup strategy — one of ``'name'``, ``'symbol'``,
``'cik'``, ``'cusip'``, or ``'isin'``. Defaults to ``'name'``.
Returns:
str: Formatted Markdown table of matching instruments, or an error
message if the search fails.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Company name, ticker symbol, CIK, CUSIP, or ISIN to look up, e.g. 'Apple', 'AAPL', or '0000320193'. | |
| search_method | No | Lookup strategy: 'name', 'symbol', 'cik', 'cusip', or 'isin'. Defaults to 'name'. | name |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true. The description adds value by specifying the return format ('Formatted Markdown table of matching instruments, or an error message'), which goes beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a well-structured docstring with clear sections (Args, Returns). Every sentence serves a purpose, no fluff, and the main purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, both fully described in schema and description, output schema exists), the description fully covers what the tool does and returns. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds examples for 'query' (e.g., 'Apple', 'META', '0000320193') and clarifies the default for 'search_method', providing additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search for ticker symbols by company name, symbol, CIK, CUSIP, or ISIN,' specifying the verb and resource. It distinguishes from sibling tools like 'search_by_category' and 'search_metrics' which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for finding instruments by identifiers but does not explicitly provide guidance on when to use this tool versus alternatives. It lacks when-not-to-use or exclusionary context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_metricsARead-onlyIdempotentInspect
Search across all metrics by keyword with typo tolerance.
Supports minor typos and common financial abbreviations. Tokens
shorter than four characters bypass fuzzy matching and require an
exact substring hit.
Args:
query: Free-text search string, e.g. ``'debt'``,
``'moving average'``, ``'sharpe'``, or ``'retun on equty'``.
Returns:
str: Markdown table of matching tools sorted by relevance score,
or a guidance message when no strong matches are found.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Free-text keyword to search across all metric names and descriptions, e.g. 'sharpe', 'debt', or 'moving average'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses typo tolerance, fuzzy matching rules for tokens <4 chars, and return format (Markdown table or guidance message), adding value beyond readOnly and idempotent annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise: one sentence for purpose, then bullet-point details. No wasted words, well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Sufficient for a simple search tool with one parameter: covers behavior, return format, and fuzzy details. Could mention when to prefer siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already covers the query parameter with 100% description coverage; description adds example queries ('debt', 'moving average', etc.) that help understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool searches across all metrics by keyword with typo tolerance, distinguishing it from category-based siblings like search_by_category.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage for fuzzy keyword search across metrics, but no explicit when-to-use or alternatives compared to siblings like search_instruments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solvencyBRead-onlyIdempotentInspect
Pre-computed solvency ratios (debt-to-equity, interest coverage, debt-to-assets, net debt to EBITDA). Requires tickers='AAPL' — use comma-separated values for multiple tickers. Use instead of raw financial statements. Supports quarterly=true and start_date/end_date.
Available indicators: get_debt_to_assets_ratio, get_asset_coverage_ratio, get_debt_to_equity_ratio, get_debt_service_coverage_ratio, get_equity_multiplier, get_free_cash_flow_yield, get_net_debt_to_ebitda_ratio, get_gross_debt_to_ebitda_ratio, get_cash_flow_coverage_ratio, get_capex_coverage_ratio, get_capex_dividend_coverage_ratio, get_debt_to_capital_ratio, get_preferred_dividend_coverage_ratio, get_interest_paid_to_expense_ratio.
| Name | Required | Description | Default |
|---|---|---|---|
| lag | No | Number of periods to lag when computing growth rates. | |
| growth | No | Return period-over-period growth rates instead of absolute values. | |
| diluted | No | Value for diluted. | |
| tickers | No | Comma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'. | |
| end_date | No | End of the date range in YYYY-MM-DD format. | 2026-10-02 |
| trailing | No | Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period. | |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| quarterly | No | Return quarterly data instead of annual when True. | |
| show_daily | No | Value for show_daily. | |
| start_date | No | Start of the date range in YYYY-MM-DD format. | 2021-10-03 |
| standardize | No | 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. | |
| show_columns | No | 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. | |
| benchmark_ticker | No | Ticker used as the market benchmark, e.g. 'SPY' or '^GSPC'. | SPY |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so safety and repeatability are covered without the description. The description adds the tickers requirement and the available indicator set, but discloses nothing about authentication, rate limits, or data latency, and much of what it adds duplicates the schema enum rather than extending it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentences are tight and front-loaded on the purpose, which is good. But the 14-item 'Available indicators' list is a verbatim restatement of the enum already in the schema, adding length without new information and diluting the useful first paragraph.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and the schema documents all 13 parameters, so return-value and parameter explanation are not required of the description. The description covers the core call pattern (indicator + tickers, with quarterly/date options), leaving only secondary parameters like benchmark_ticker or standardize to the schema — adequate overall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (lag, trailing, standardize, benchmark_ticker, etc.) is already documented in structured form. The description only re-mentions tickers, quarterly, and start/end date, adding no format or edge-case meaning beyond the schema — baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource ('Pre-computed solvency ratios') and enumerates representative metrics (debt-to-equity, interest coverage, debt-to-assets, net debt to EBITDA), so the agent knows this is a ratio-computation tool rather than a raw statement fetch. It does not explicitly contrast itself with sibling category tools such as profitability or efficiency, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives operational guidance ('Requires tickers=... use comma-separated values for multiple tickers', 'Use instead of raw financial statements') and notes quarterly/date support, which implies when the tool applies. However, it never names which sibling (profitability, efficiency, valuation) to pick when a ratio spans categories, so the selection guidance remains implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
valuationARead-onlyIdempotentInspect
Pre-computed valuation ratios (P/E, EPS, EV/EBITDA, EV/EBIT, P/B, P/S, PEG, dividend yield, FCF yield, market cap, forward P/E, forward PEG). Requires tickers='AAPL' — use comma-separated values for multiple tickers. Use instead of raw financial statements. Supports quarterly=true and start_date/end_date. get_forward_price_earnings_ratio and get_forward_price_earnings_growth_ratio additionally require a Premium FMP subscription and are fetched on first use only.
Available indicators: get_earnings_per_share, get_revenue_per_share, get_price_to_earnings_ratio, get_price_to_earnings_growth_ratio, get_forward_price_earnings_ratio, get_forward_price_earnings_growth_ratio, get_book_value_per_share, get_price_to_book_ratio, get_interest_debt_per_share, get_capex_per_share, get_earnings_yield, get_dividend_payout_ratio, get_dividend_yield, get_weighted_dividend_yield, get_price_to_cash_flow_ratio, get_price_to_free_cash_flow_ratio, get_market_cap, get_enterprise_value, get_ev_to_sales_ratio, get_ev_to_ebit, get_ev_to_ebitda_ratio, get_ev_to_operating_cashflow_ratio, get_tangible_asset_value, get_net_current_asset_value, get_ev_to_free_cash_flow_ratio, get_buyback_yield, get_shareholder_yield, get_sbc_adjusted_free_cash_flow, get_price_to_sales_ratio, get_reinvestment_rate.
| Name | Required | Description | Default |
|---|---|---|---|
| lag | No | Number of periods to lag when computing growth rates. | |
| growth | No | Return period-over-period growth rates instead of absolute values. | |
| diluted | No | Value for diluted. | |
| tickers | No | Comma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'. | |
| end_date | No | End of the date range in YYYY-MM-DD format. | 2026-10-02 |
| trailing | No | Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period. | |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| quarterly | No | Return quarterly data instead of annual when True. | |
| show_daily | No | Value for show_daily. | |
| start_date | No | Start of the date range in YYYY-MM-DD format. | 2021-10-03 |
| standardize | No | 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. | |
| show_columns | No | 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. | |
| benchmark_ticker | No | Ticker used as the market benchmark, e.g. 'SPY' or '^GSPC'. | SPY |
| include_dividends | No | Value for include_dividends. | |
| use_ebitda_growth_rate | No | Value for use_ebitda_growth_rate. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds real value beyond them: the Premium FMP gate on two forward indicators and the 'fetched on first use only' caching behavior, plus the fact that omitting indicator returns the indicator list. It does not discuss pagination or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Key constraints (tickers requirement, substitution guidance) are front-loaded, which is good. However, the 30-item indicator list is pure duplication of the enum already present in the schema, consuming a large block of text without adding information, which dilutes conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers the required input, subscription gating, and the empty-indicator fallback. For a 15-parameter tool it is adequate, with the minor gap that the large optional-surface parameters (trailing, standardize, benchmark_ticker, show_columns) are left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and every parameter carries a description, so the baseline is 3. The description restates tickers usage, quarterly and start_date/end_date, which the schema already documents, and adds no syntax or interaction detail (e.g. how trailing interacts with growth or show_daily) beyond what is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (pre-computed valuation ratios) and enumerates the metrics covered, so the agent knows it returns derived ratios rather than raw statements. It contrasts with 'raw financial statements' but never names or distinguishes the actual siblings that overlap heavily (profitability, efficiency, solvency), so vs-sibling routing is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage context: 'Requires tickers=AAPL', comma-separated for multiples, supports quarterly/start_date/end_date, and the when-to-use hint 'Use instead of raw financial statements'. It also flags the premium-subscription precondition for two forward indicators. No explicit when-not-to-use or sibling alternative is given, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
volatilityARead-onlyIdempotentInspect
Volatility technical indicators (ATR, True Range). Applied to price data automatically — no need to fetch prices first. Requires tickers='AAPL' — use comma-separated values for multiple tickers.
Available indicators: get_bollinger_bands, get_true_range, get_average_true_range, get_supertrend, get_keltner_channels, get_donchian_channels, get_volatility_cone.
| Name | Required | Description | Default |
|---|---|---|---|
| lag | No | Number of periods to lag when computing growth rates. | |
| growth | No | Return period-over-period growth rates instead of absolute values. | |
| period | No | Observation frequency, e.g. 'monthly', 'quarterly', or 'annual'. | daily |
| window | No | Value for window. Leave unset to use the default of the indicator you selected. Defaults are 14 for get_average_true_range, get_bollinger_bands, get_keltner_channels; 10 for get_supertrend; 20 for get_donchian_channels. | |
| tickers | No | Comma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'. | |
| windows | No | Value for windows. | |
| end_date | No | End of the date range in YYYY-MM-DD format. | 2026-10-02 |
| indicator | Yes | Name of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators. | |
| quarterly | No | Return quarterly data instead of annual when True. | |
| atr_window | No | Value for atr_window. | |
| multiplier | No | Value for multiplier. | |
| start_date | No | Start of the date range in YYYY-MM-DD format. | 2021-10-03 |
| num_std_dev | No | Value for num_std_dev. | |
| standardize | No | 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. | |
| close_column | No | Value for close_column. | Adj Close |
| show_columns | No | 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. | |
| atr_multiplier | No | Value for atr_multiplier. | |
| benchmark_ticker | No | Ticker used as the market benchmark, e.g. 'SPY' or '^GSPC'. | SPY |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds genuinely new behavioral context: it discloses that price data is fetched implicitly and that tickers must be supplied as a comma-separated list, which the agent could not infer from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with purpose, then the auto-fetch behavior, then the tickers rule and indicator roster. No filler, though the indicator enumeration duplicates the schema enum and the 'Requires tickers' claim is stated with more force than the schema warrants.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 18-parameter tool with an output schema (so return values need not be explained), the description covers what the tool computes, that prices are auto-fetched, and the required input shape. The remaining gap is that it does not map which of the many indicator-specific parameters (atr_window, multiplier, num_std_dev, etc.) apply to which indicator, leaving the agent to infer this from the schema defaults.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% but many parameter descriptions are generic ('Value for window', 'Value for multiplier'), so the schema is not fully self-explanatory. The description compensates on the two most important parameters by stating tickers format ('AAPL,MSFT,GOOGL') and naming the available indicator values; however, it never signals that 'indicator' is the only formally required field, and it flatly claims tickers is required when the schema lists it as optional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (volatility technical indicators) and enumerates the concrete indicators (Bollinger Bands, True Range, ATR, Supertrend, Keltner, Donchian, volatility cone), so the agent knows exactly what this category tool computes. It does not explicitly differentiate itself from category siblings like momentum or risk, which keeps it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one useful usage note ('price data is fetched automatically — no need to fetch prices first') and the tickers formatting rule, but never states when to pick volatility over momentum/risk siblings or how to choose among the seven indicators. Usage is implied from the indicator list rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
21 tool updates
v2.2.1- Changed
breadth2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-08-19"New value: +"2026-10-02" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-08-20"New value: +"2021-10-03"
- Changed
econometrics3 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-08-19"New value: +"2026-10-02" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-08-20"New value: +"2021-10-03" - changed
Input schema / properties / within_period / defaultPrevious value: -trueNew value: +false
- Changed
efficiency2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-08-19"New value: +"2026-10-02" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-08-20"New value: +"2021-10-03"
- Changed
environment2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-08-19"New value: +"2026-10-02" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-08-20"New value: +"2021-10-03"
- Changed
fixed_income2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-08-19"New value: +"2026-10-02" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-08-20"New value: +"2021-10-03"
- Changed
government2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-08-19"New value: +"2026-10-02" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-08-20"New value: +"2021-10-03"
- Changed
jobs2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-08-19"New value: +"2026-10-02" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-08-20"New value: +"2021-10-03"
- Changed
liquidity2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-08-19"New value: +"2026-10-02" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-08-20"New value: +"2021-10-03"
- Changed
macroeconomics2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-08-19"New value: +"2026-10-02" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-08-20"New value: +"2021-10-03"
- Changed
market_data2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-08-19"New value: +"2026-10-02" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-08-20"New value: +"2021-10-03"
- Changed
models2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-08-19"New value: +"2026-10-02" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-08-20"New value: +"2021-10-03"
- Changed
momentum2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-08-19"New value: +"2026-10-02" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-08-20"New value: +"2021-10-03"
- Changed
options3 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-08-19"New value: +"2026-10-02" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-08-20"New value: +"2021-10-03" - changed
Input schema / properties / stock_price_step_size / typePrevious value: -"number"New value: +"integer"
- Changed
overlap2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-08-19"New value: +"2026-10-02" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-08-20"New value: +"2021-10-03"
- Changed
performance2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-08-19"New value: +"2026-10-02" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-08-20"New value: +"2021-10-03"
- Changed
profitability2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-08-19"New value: +"2026-10-02" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-08-20"New value: +"2021-10-03"
- Changed
rates2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-08-19"New value: +"2026-10-02" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-08-20"New value: +"2021-10-03"
- Changed
risk6 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-08-19"New value: +"2026-10-02" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-08-20"New value: +"2021-10-03" - removed
Input schema / properties / within_period / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - changed
Input schema / properties / within_period / defaultPrevious value: -nullNew value: +false - changed
Input schema / properties / within_period / descriptionPrevious value: -"Value for within_period. Leave unset to use the default of the indicator you selected. Defaults differ between indicators."New value: +"Value for within_period." - added
Input schema / properties / within_period / typeAdded value: +"boolean"
- Changed
solvency2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-08-19"New value: +"2026-10-02" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-08-20"New value: +"2021-10-03"
- Changed
valuation2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-08-19"New value: +"2026-10-02" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-08-20"New value: +"2021-10-03"
- Changed
volatility2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-08-19"New value: +"2026-10-02" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-08-20"New value: +"2021-10-03"
22 tool updates
v2.2.0- Changed
breadth9 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-14"New value: +"2026-08-19" - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_mcclellan_oscillator", - "get_advancers_decliners", - "get_on_balance_volume", - "get_accumulation_distribution_line", - "get_chaikin_oscillator", - "get_trin", - "get_new_highs_new_lows" -]New value: +[ + "get_mcclellan_oscillator", + "get_advancers_decliners", + "get_on_balance_volume", + "get_accumulation_distribution_line", + "get_chaikin_oscillator", + "get_trin", + "get_new_highs_new_lows", + "get_chaikin_money_flow", + "get_ease_of_movement", + "get_negative_volume_index", + "get_positive_volume_index" +] - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-15"New value: +"2021-08-20" - added
Input schema / properties / start_valueAdded value: +{ + "default": 1000, + "description": "Value for start_value.", + "title": "Start Value", + "type": "number" +} - added
Input schema / properties / volume_divisorAdded value: +{ + "default": 100000000, + "description": "Value for volume_divisor.", + "title": "Volume Divisor", + "type": "number" +} - added
Input schema / properties / window / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / window / defaultPrevious value: -252New value: +null - changed
Input schema / properties / window / descriptionPrevious value: -"Value for window."New value: +"Value for window. Leave unset to use the default of the indicator you selected. Defaults are 14 for get_ease_of_movement; 20 for get_chaikin_money_flow; 252 for get_new_highs_new_lows." - removed
Input schema / properties / window / typeRemoved value: -"integer"
- Changed
discovery6 fields changed- added
Input schema / properties / countryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for country.", + "title": "Country" +} - added
Input schema / properties / exchangeAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for exchange.", + "title": "Exchange" +} - added
Input schema / properties / limit / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / limit / defaultPrevious value: -100New value: +null - changed
Input schema / properties / limit / descriptionPrevious value: -"Value for limit."New value: +"Value for limit. Leave unset to use the default of the indicator you selected. Defaults are 100 for get_crypto_news, get_delisted_stocks, get_forex_news, get_general_news, get_mergers_acquisitions_latest, get_press_releases, get_stock_news; 1000 for get_stock_screener." - removed
Input schema / properties / limit / typeRemoved value: -"integer"
- Added
econometrics - Changed
efficiency3 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-14"New value: +"2026-08-19" - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_days_of_inventory_outstanding", - "get_days_of_sales_outstanding", - "get_operating_cycle", - "get_days_of_accounts_payable_outstanding", - "get_cash_conversion_cycle", - "get_cash_conversion_efficiency", - "get_receivables_turnover", - "get_inventory_turnover_ratio", - "get_accounts_payables_turnover_ratio", - "get_sga_to_revenue_ratio", - "get_fixed_asset_turnover", - "get_asset_turnover_ratio", - "get_operating_ratio", - "get_research_and_development_ratio", - "get_selling_and_marketing_ratio", - "get_general_and_administrative_ratio", - "get_stock_based_compensation_ratio", - "get_deferred_revenue_ratio" -]New value: +[ + "get_days_of_inventory_outstanding", + "get_days_of_sales_outstanding", + "get_operating_cycle", + "get_days_of_accounts_payable_outstanding", + "get_cash_conversion_cycle", + "get_cash_conversion_efficiency", + "get_receivables_turnover", + "get_inventory_turnover_ratio", + "get_accounts_payables_turnover_ratio", + "get_sga_to_revenue_ratio", + "get_fixed_asset_turnover", + "get_asset_turnover_ratio", + "get_operating_ratio", + "get_research_and_development_ratio", + "get_selling_and_marketing_ratio", + "get_general_and_administrative_ratio", + "get_stock_based_compensation_ratio", + "get_deferred_revenue_ratio", + "get_working_capital_turnover_ratio" +] - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-15"New value: +"2021-08-20"
- Changed
environment2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-14"New value: +"2026-08-19" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-15"New value: +"2021-08-20"
- Changed
fixed_income21 fields changed- changed
Input schema / properties / coupon_rate / descriptionPrevious 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." - added
Input schema / properties / days_to_maturityAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for days_to_maturity.", + "title": "Days To Maturity" +} - added
Input schema / properties / discount_yieldAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for discount_yield.", + "title": "Discount Yield" +} - changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-14"New value: +"2026-08-19" - added
Input schema / properties / far_maturityAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for far_maturity.", + "title": "Far Maturity" +} - added
Input schema / properties / guess / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - changed
Input schema / properties / guess / defaultPrevious value: -0.05New value: +null - changed
Input schema / properties / guess / descriptionPrevious 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." - removed
Input schema / properties / guess / typeRemoved value: -"number" - changed
Input schema / properties / indicator / enumPrevious 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" +] - added
Input schema / properties / key_rate_maturityAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for key_rate_maturity.", + "title": "Key Rate Maturity" +} - added
Input schema / properties / long_maturityAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for long_maturity.", + "title": "Long Maturity" +} - added
Input schema / properties / maturityAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for maturity.", + "title": "Maturity" +} - added
Input schema / properties / near_maturityAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for near_maturity.", + "title": "Near Maturity" +} - added
Input schema / properties / nominal_ratesAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for nominal_rates.", + "title": "Nominal Rates" +} - added
Input schema / properties / real_ratesAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for real_rates.", + "title": "Real Rates" +} - added
Input schema / properties / short_maturityAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for short_maturity.", + "title": "Short Maturity" +} - added
Input schema / properties / spot_ratesAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for spot_rates.", + "title": "Spot Rates" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-15"New value: +"2021-08-20" - added
Input schema / properties / volatility_typeAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for volatility_type.", + "title": "Volatility Type" +} - added
Input schema / properties / yield_changeAdded 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" +}
- Changed
government2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-14"New value: +"2026-08-19" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-15"New value: +"2021-08-20"
- Changed
jobs4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-14"New value: +"2026-08-19" - changed
Input schema / properties / gmdb_source / descriptionPrevious value: -"Use the OECD Global Macro Data Bank as the data source when True."New value: +"Use the Global Macro Database as the data source when True, rather than the OECD. The two are independent providers with different country and period coverage; both return rates and ratios as decimal fractions." - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_income_inequality", - "get_labour_productivity", - "get_population_statistics", - "get_poverty_rate", - "get_unemployment_rate" -]New value: +[ + "get_income_inequality", + "get_labour_productivity", + "get_population_statistics", + "get_poverty_rate", + "get_unemployment_rate", + "get_nonfarm_payrolls", + "get_initial_jobless_claims" +] - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-15"New value: +"2021-08-20"
- Changed
liquidity4 fields changed- added
Input schema / properties / daysAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Number of calendar days used in day-count-based calculations.", + "title": "Days" +} - changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-14"New value: +"2026-08-19" - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_current_ratio", - "get_quick_ratio", - "get_cash_ratio", - "get_working_capital", - "get_operating_cash_flow_ratio", - "get_operating_cash_flow_sales_ratio", - "get_short_term_coverage_ratio" -]New value: +[ + "get_current_ratio", + "get_quick_ratio", + "get_cash_ratio", + "get_working_capital", + "get_operating_cash_flow_ratio", + "get_operating_cash_flow_sales_ratio", + "get_short_term_coverage_ratio", + "get_defensive_interval_ratio" +] - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-15"New value: +"2021-08-20"
- Changed
macroeconomics8 fields changed- added
Input schema / properties / commodityAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for commodity. Leave unset to use the default of the indicator you selected. Required by: get_commodity_forward_curve.", + "title": "Commodity" +} - added
Input schema / properties / contractsAdded value: +{ + "default": 12, + "description": "Value for contracts.", + "title": "Contracts", + "type": "integer" +} - changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-14"New value: +"2026-08-19" - changed
Input schema / properties / gmdb_source / descriptionPrevious value: -"Use the OECD Global Macro Data Bank as the data source when True."New value: +"Use the Global Macro Database as the data source when True, rather than the OECD. The two are independent providers with different country and period coverage; both return rates and ratios as decimal fractions." - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_business_confidence_index", - "get_composite_leading_indicator", - "get_consumer_confidence_index", - "get_consumer_price_index", - "get_current_account_balance", - "get_current_account_balance_to_gdp_ratio", - "get_exchange_rates", - "get_exports", - "get_exports_to_gdp_ratio", - "get_fixed_investment", - "get_fixed_investment_to_gdp_ratio", - "get_gross_domestic_product", - "get_gross_domestic_product_deflator", - "get_house_prices", - "get_imports", - "get_imports_to_gdp_ratio", - "get_inflation_rate", - "get_investment", - "get_investment_to_gdp_ratio", - "get_money_supply", - "get_rent_prices", - "get_share_prices", - "get_total_consumption", - "get_total_consumption_to_gdp_ratio" -]New value: +[ + "get_business_confidence_index", + "get_composite_leading_indicator", + "get_consumer_confidence_index", + "get_consumer_price_index", + "get_current_account_balance", + "get_current_account_balance_to_gdp_ratio", + "get_exchange_rates", + "get_exports", + "get_exports_to_gdp_ratio", + "get_fixed_investment", + "get_fixed_investment_to_gdp_ratio", + "get_gross_domestic_product", + "get_gross_domestic_product_deflator", + "get_house_prices", + "get_imports", + "get_imports_to_gdp_ratio", + "get_inflation_rate", + "get_investment", + "get_investment_to_gdp_ratio", + "get_money_supply", + "get_producer_price_index", + "get_rent_prices", + "get_share_prices", + "get_total_consumption", + "get_total_consumption_to_gdp_ratio", + "get_household_savings_rate", + "get_household_debt_to_income_ratio", + "get_retail_sales", + "get_industrial_production_index", + "get_housing_starts", + "get_real_personal_income", + "get_recession_indicator", + "get_commercial_real_estate_prices", + "get_commodity_forward_curve", + "get_output_gap", + "get_real_interest_rate", + "get_real_effective_exchange_rate", + "get_misery_index", + "get_banking_crisis", + "get_currency_crisis", + "get_sovereign_debt_crisis", + "get_real_gross_domestic_product_usd", + "get_real_gross_domestic_product_per_capita", + "get_trade_balance" +] - added
Input schema / properties / oecd_sourceAdded value: +{ + "default": false, + "description": "Value for oecd_source.", + "title": "Oecd Source", + "type": "boolean" +} - added
Input schema / properties / rate_typeAdded value: +{ + "default": "long_term", + "description": "Value for rate_type.", + "title": "Rate Type", + "type": "string" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-15"New value: +"2021-08-20"
- Changed
market_data11 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-14"New value: +"2026-08-19" - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_analyst_estimates", - "get_balance_sheet_statement", - "get_cash_flow_statement", - "get_dividend_calendar", - "get_earnings_calendar", - "get_historical_data", - "get_historical_statistics", - "get_income_statement", - "get_intraday_data", - "get_profile", - "get_quote", - "get_rating", - "get_revenue_geographic_segmentation", - "get_revenue_product_segmentation", - "get_statistics_statement", - "get_treasury_data" -]New value: +[ + "get_analyst_estimates", + "get_balance_sheet_statement", + "get_cash_flow_statement", + "get_commitment_of_traders", + "get_dividend_calendar", + "get_earnings_calendar", + "get_historical_data", + "get_historical_statistics", + "get_income_statement", + "get_intraday_data", + "get_market_risk_premium", + "get_profile", + "get_quote", + "get_rating", + "get_revenue_geographic_segmentation", + "get_revenue_product_segmentation", + "get_statistics_statement", + "get_treasury_data" +] - added
Input schema / properties / period / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / period / defaultPrevious value: -"daily"New value: +null - changed
Input schema / properties / period / descriptionPrevious value: -"Observation frequency, e.g. 'monthly', 'quarterly', or 'annual'."New value: +"Observation frequency, e.g. 'monthly', 'quarterly', or 'annual'. Leave unset to use the default of the indicator you selected. Defaults are 'daily' for get_historical_data, get_treasury_data; '1hour' for get_intraday_data." - removed
Input schema / properties / period / typeRemoved value: -"string" - added
Input schema / properties / return_column / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / return_column / defaultPrevious value: -"Adj Close"New value: +null - changed
Input schema / properties / return_column / descriptionPrevious value: -"Value for return_column."New value: +"Value for return_column. Leave unset to use the default of the indicator you selected. Defaults are 'Adj Close' for get_historical_data; 'Close' for get_intraday_data." - removed
Input schema / properties / return_column / typeRemoved value: -"string" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-15"New value: +"2021-08-20"
- Changed
models22 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-14"New value: +"2026-08-19" - added
Input schema / properties / growth_rate / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - changed
Input schema / properties / growth_rate / defaultPrevious value: -""New value: +null - changed
Input schema / properties / growth_rate / descriptionPrevious value: -"Assumed constant growth rate as a decimal."New value: +"Assumed constant growth rate as a decimal. Leave unset to use the default of the indicator you selected. Required by: get_gorden_growth_model, get_intrinsic_valuation." - removed
Input schema / properties / growth_rate / typeRemoved value: -"number" - added
Input schema / properties / high_growth_periodsAdded value: +{ + "default": 5, + "description": "Value for high_growth_periods.", + "title": "High Growth Periods", + "type": "integer" +} - added
Input schema / properties / high_growth_rateAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for high_growth_rate. Leave unset to use the default of the indicator you selected. Required by: get_two_stage_dividend_discount_model.", + "title": "High Growth Rate" +} - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_altman_z_score", - "get_beneish_m_score", - "get_dupont_analysis", - "get_economic_value_added", - "get_enterprise_value_breakdown", - "get_extended_dupont_analysis", - "get_gorden_growth_model", - "get_graham_number", - "get_internal_growth_rate", - "get_intrinsic_valuation", - "get_piotroski_score", - "get_present_value_of_growth_opportunities", - "get_sustainable_growth_rate", - "get_weighted_average_cost_of_capital" -]New value: +[ + "get_altman_z_score", + "get_beneish_m_score", + "get_dupont_analysis", + "get_economic_value_added", + "get_enterprise_value_breakdown", + "get_extended_dupont_analysis", + "get_free_cash_flow_to_equity", + "get_free_cash_flow_to_firm", + "get_fulmer_h_score", + "get_gorden_growth_model", + "get_graham_number", + "get_grover_score", + "get_internal_growth_rate", + "get_intrinsic_valuation", + "get_market_value_added", + "get_ohlson_o_score", + "get_piotroski_score", + "get_present_value_of_growth_opportunities", + "get_residual_income", + "get_springate_score", + "get_sustainable_growth_rate", + "get_tobins_q_ratio", + "get_two_stage_dividend_discount_model", + "get_weighted_average_cost_of_capital", + "get_zmijewski_score" +] - added
Input schema / properties / perpetual_growth_rate / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - changed
Input schema / properties / perpetual_growth_rate / defaultPrevious value: -""New value: +null - changed
Input schema / properties / perpetual_growth_rate / descriptionPrevious value: -"Terminal (perpetual) growth rate used in DCF models."New value: +"Terminal (perpetual) growth rate used in DCF models. Leave unset to use the default of the indicator you selected. Required by: get_intrinsic_valuation." - removed
Input schema / properties / perpetual_growth_rate / typeRemoved value: -"number" - added
Input schema / properties / rate_of_return / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - changed
Input schema / properties / rate_of_return / defaultPrevious value: -""New value: +null - changed
Input schema / properties / rate_of_return / descriptionPrevious value: -"Value for rate_of_return."New value: +"Value for rate_of_return. Leave unset to use the default of the indicator you selected. Required by: get_gorden_growth_model, get_two_stage_dividend_discount_model." - removed
Input schema / properties / rate_of_return / typeRemoved value: -"number" - added
Input schema / properties / stable_growth_rateAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for stable_growth_rate. Leave unset to use the default of the indicator you selected. Required by: get_two_stage_dividend_discount_model.", + "title": "Stable Growth Rate" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-15"New value: +"2021-08-20" - added
Input schema / properties / weighted_average_cost_of_capital / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - changed
Input schema / properties / weighted_average_cost_of_capital / defaultPrevious value: -""New value: +null - changed
Input schema / properties / weighted_average_cost_of_capital / descriptionPrevious value: -"WACC as a decimal, e.g. 0.09 for 9 %."New value: +"WACC as a decimal, e.g. 0.09 for 9 %. Leave unset to use the default of the indicator you selected. Required by: get_intrinsic_valuation." - removed
Input schema / properties / weighted_average_cost_of_capital / typeRemoved value: -"number"
- Changed
momentum22 fields changed- changed
Input schema / properties / base_window / defaultPrevious value: -20New value: +26 - changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-14"New value: +"2026-08-19" - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_money_flow_index", - "get_williams_percent_r", - "get_aroon_indicator", - "get_commodity_channel_index", - "get_relative_vigor_index", - "get_force_index", - "get_ultimate_oscillator", - "get_percentage_price_oscillator", - "get_detrended_price_oscillator", - "get_average_directional_index", - "get_chande_momentum_oscillator", - "get_ichimoku_cloud", - "get_stochastic_oscillator", - "get_moving_average_convergence_divergence", - "get_relative_strength_index", - "get_balance_of_power" -]New value: +[ + "get_money_flow_index", + "get_williams_percent_r", + "get_aroon_indicator", + "get_commodity_channel_index", + "get_relative_vigor_index", + "get_force_index", + "get_ultimate_oscillator", + "get_percentage_price_oscillator", + "get_detrended_price_oscillator", + "get_average_directional_index", + "get_chande_momentum_oscillator", + "get_ichimoku_cloud", + "get_stochastic_oscillator", + "get_moving_average_convergence_divergence", + "get_relative_strength_index", + "get_balance_of_power", + "get_awesome_oscillator", + "get_vortex_indicator", + "get_elder_ray_index", + "get_rate_of_change", + "get_choppiness_index", + "get_know_sure_thing" +] - changed
Input schema / properties / lead_span_b_window / defaultPrevious value: -40New value: +52 - added
Input schema / properties / long_window / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / long_window / defaultPrevious value: -28New value: +null - changed
Input schema / properties / long_window / descriptionPrevious value: -"Value for long_window."New value: +"Value for long_window. Leave unset to use the default of the indicator you selected. Defaults are 26 for get_moving_average_convergence_divergence; 28 for get_percentage_price_oscillator; 34 for get_awesome_oscillator." - removed
Input schema / properties / long_window / typeRemoved value: -"integer" - added
Input schema / properties / roc_windowsAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for roc_windows.", + "title": "Roc Windows" +} - added
Input schema / properties / short_window / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / short_window / defaultPrevious value: -7New value: +null - changed
Input schema / properties / short_window / descriptionPrevious value: -"Value for short_window."New value: +"Value for short_window. Leave unset to use the default of the indicator you selected. Defaults are 12 for get_moving_average_convergence_divergence; 5 for get_awesome_oscillator; 7 for get_percentage_price_oscillator." - removed
Input schema / properties / short_window / typeRemoved value: -"integer" - added
Input schema / properties / sma_windowsAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for sma_windows.", + "title": "Sma Windows" +} - removed
Input schema / properties / smooth_widowRemoved value: -{ - "default": 3, - "description": "Value for smooth_widow.", - "title": "Smooth Widow", - "type": "integer" -} - added
Input schema / properties / smooth_windowAdded value: +{ + "default": 3, + "description": "Value for smooth_window.", + "title": "Smooth Window", + "type": "integer" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-15"New value: +"2021-08-20" - added
Input schema / properties / weightsAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for weights.", + "title": "Weights" +} - added
Input schema / properties / window / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / window / defaultPrevious value: -14New value: +null - changed
Input schema / properties / window / descriptionPrevious value: -"Value for window."New value: +"Value for window. Leave unset to use the default of the indicator you selected. Defaults differ between indicators." - removed
Input schema / properties / window / typeRemoved value: -"integer"
- Changed
options25 fields changed- added
Input schema / properties / barrier_directionAdded value: +{ + "default": "down", + "description": "Value for barrier_direction.", + "title": "Barrier Direction", + "type": "string" +} - added
Input schema / properties / barrier_percentageAdded value: +{ + "default": 0.9, + "description": "Value for barrier_percentage.", + "title": "Barrier Percentage", + "type": "number" +} - added
Input schema / properties / cash_payoutAdded value: +{ + "default": 1, + "description": "Value for cash_payout.", + "title": "Cash Payout", + "type": "number" +} - changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-14"New value: +"2026-08-19" - added
Input schema / properties / expiration_datesAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for expiration_dates.", + "title": "Expiration Dates" +} - added
Input schema / properties / foreign_risk_free_rateAdded value: +{ + "default": 0, + "description": "Value for foreign_risk_free_rate.", + "title": "Foreign Risk Free Rate", + "type": "number" +} - changed
Input schema / properties / indicator / enumPrevious 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" +] - added
Input schema / properties / knock_typeAdded value: +{ + "default": "out", + "description": "Value for knock_type.", + "title": "Knock Type", + "type": "string" +} - added
Input schema / properties / legsAdded 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" +} - added
Input schema / properties / number_of_expirationsAdded value: +{ + "default": 6, + "description": "Value for number_of_expirations.", + "title": "Number Of Expirations", + "type": "integer" +} - added
Input schema / properties / number_of_strikesAdded value: +{ + "default": 200, + "description": "Value for number_of_strikes.", + "title": "Number Of Strikes", + "type": "integer" +} - added
Input schema / properties / option_typeAdded value: +{ + "default": "cash-or-nothing", + "description": "Value for option_type.", + "title": "Option Type", + "type": "string" +} - added
Input schema / properties / outlier_thresholdAdded value: +{ + "default": 5, + "description": "Value for outlier_threshold.", + "title": "Outlier Threshold", + "type": "number" +} - added
Input schema / properties / rebateAdded value: +{ + "default": 0, + "description": "Value for rebate.", + "title": "Rebate", + "type": "number" +} - added
Input schema / properties / seedAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for seed.", + "title": "Seed" +} - added
Input schema / properties / show_standard_errorAdded value: +{ + "default": false, + "description": "Value for show_standard_error.", + "title": "Show Standard Error", + "type": "boolean" +} - added
Input schema / properties / simulationsAdded value: +{ + "default": 10000, + "description": "Value for simulations.", + "title": "Simulations", + "type": "integer" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-15"New value: +"2021-08-20" - added
Input schema / properties / stock_price_rangeAdded value: +{ + "default": 0.5, + "description": "Value for stock_price_range.", + "title": "Stock Price Range", + "type": "number" +} - added
Input schema / properties / stock_price_step_sizeAdded value: +{ + "default": 1, + "description": "Value for stock_price_step_size.", + "title": "Stock Price Step Size", + "type": "number" +} - added
Input schema / properties / strike_price_range / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - changed
Input schema / properties / strike_price_range / defaultPrevious value: -0.25New value: +null - changed
Input schema / properties / strike_price_range / descriptionPrevious 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." - removed
Input schema / properties / strike_price_range / typeRemoved value: -"number" - added
Input schema / properties / time_stepsAdded value: +{ + "default": 100, + "description": "Value for time_steps.", + "title": "Time Steps", + "type": "integer" +}
- Changed
overlap12 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-14"New value: +"2026-08-19" - added
Input schema / properties / fast_windowAdded value: +{ + "default": 2, + "description": "Value for fast_window.", + "title": "Fast Window", + "type": "integer" +} - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_moving_average", - "get_exponential_moving_average", - "get_double_exponential_moving_average", - "get_trix", - "get_triangular_moving_average", - "get_weighted_moving_average", - "get_hull_moving_average", - "get_volume_weighted_average_price", - "get_parabolic_sar", - "get_pivot_points" -]New value: +[ + "get_moving_average", + "get_exponential_moving_average", + "get_double_exponential_moving_average", + "get_trix", + "get_triangular_moving_average", + "get_weighted_moving_average", + "get_hull_moving_average", + "get_kaufman_adaptive_moving_average", + "get_volume_weighted_average_price", + "get_parabolic_sar", + "get_pivot_points", + "get_fibonacci_retracement_levels", + "get_support_resistance_levels" +] - added
Input schema / properties / levelsAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for levels.", + "title": "Levels" +} - added
Input schema / properties / sensitivityAdded value: +{ + "default": 0.05, + "description": "Value for sensitivity.", + "title": "Sensitivity", + "type": "number" +} - added
Input schema / properties / slow_windowAdded value: +{ + "default": 30, + "description": "Value for slow_window.", + "title": "Slow Window", + "type": "integer" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-15"New value: +"2021-08-20" - added
Input schema / properties / trendAdded value: +{ + "default": "uptrend", + "description": "Value for trend.", + "title": "Trend", + "type": "string" +} - added
Input schema / properties / window / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / window / defaultPrevious value: -14New value: +null - changed
Input schema / properties / window / descriptionPrevious value: -"Value for window."New value: +"Value for window. Leave unset to use the default of the indicator you selected. Defaults differ between indicators." - removed
Input schema / properties / window / typeRemoved value: -"integer"
- Changed
performance12 fields changed- added
Input schema / properties / alphaAdded value: +{ + "default": 0.05, + "description": "Value for alpha.", + "title": "Alpha", + "type": "number" +} - added
Input schema / properties / benchmark_sharpe_ratioAdded value: +{ + "default": 0, + "description": "Value for benchmark_sharpe_ratio.", + "title": "Benchmark Sharpe Ratio", + "type": "number" +} - changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-14"New value: +"2026-08-19" - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_alpha", - "get_beta", - "get_burke_ratio", - "get_calmar_ratio", - "get_capital_asset_pricing_model", - "get_compound_growth_rate", - "get_correlation_matrix", - "get_covariance_matrix", - "get_downside_capture_ratio", - "get_excess_return", - "get_factor_asset_correlations", - "get_factor_correlations", - "get_fama_and_french_model", - "get_gain_to_pain_ratio", - "get_information_ratio", - "get_jensens_alpha", - "get_kappa_ratio", - "get_m2_ratio", - "get_omega_ratio", - "get_returns", - "get_sharpe_ratio", - "get_sortino_ratio", - "get_sterling_ratio", - "get_tracking_error", - "get_treynor_ratio", - "get_ulcer_performance_index", - "get_upside_capture_ratio", - "get_win_rate" -]New value: +[ + "get_alpha", + "get_appraisal_ratio", + "get_beta", + "get_burke_ratio", + "get_calmar_ratio", + "get_capital_asset_pricing_model", + "get_carhart_four_factor_model", + "get_compound_growth_rate", + "get_correlation_matrix", + "get_covariance_matrix", + "get_downside_capture_ratio", + "get_excess_return", + "get_factor_asset_correlations", + "get_factor_correlations", + "get_fama_and_french_model", + "get_fama_decomposition", + "get_gain_to_pain_ratio", + "get_henriksson_merton_model", + "get_information_ratio", + "get_jensens_alpha", + "get_kappa_ratio", + "get_m2_ratio", + "get_omega_ratio", + "get_rachev_ratio", + "get_returns", + "get_sharpe_ratio", + "get_sortino_ratio", + "get_starr_ratio", + "get_sterling_ratio", + "get_tracking_error", + "get_treynor_mazuy_model", + "get_treynor_ratio", + "get_ulcer_performance_index", + "get_upside_capture_ratio", + "get_win_rate" +] - added
Input schema / properties / method / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / method / defaultPrevious value: -"multi"New value: +null - changed
Input schema / properties / method / descriptionPrevious value: -"Value for method."New value: +"Value for method. Leave unset to use the default of the indicator you selected. Defaults are 'multi' for get_fama_and_french_model; 'standard' for get_sharpe_ratio." - removed
Input schema / properties / method / typeRemoved value: -"string" - added
Input schema / properties / n_trialsAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for n_trials.", + "title": "N Trials" +} - changed
Input schema / properties / rolling / descriptionPrevious value: -"Rolling window size in number of periods. When set, the metric is computed over a smoothly overlapping trailing window across the full history (e.g. period='monthly' and rolling=6 gives a rolling 6-month value) instead of one value per period, or (for economics indicators) a simple moving average used to smooth the raw series."New value: +"Rolling window size in number of periods. When set, the metric is computed over a smoothly overlapping trailing window across the full history (e.g. period='monthly' and rolling=6 gives a rolling 6-month value) instead of one value per period, or (for economics indicators) a simple moving average used to smooth the raw series. Leave unset to use the default of the indicator you selected. Defaults are None for get_alpha, get_appraisal_ratio, get_beta, get_capital_asset_pricing_model, get_fama_decomposition, get_information_ratio, get_jensens_alpha, get_m2_ratio, get_omega_ratio, get_sharpe_ratio, get_sortino_ratio, get_tracking_error, get_treynor_ratio; 14 for get_ulcer_performance_index." - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-15"New value: +"2021-08-20" - added
Input schema / properties / trials_windowAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for trials_window.", + "title": "Trials Window" +}
- Changed
profitability3 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-14"New value: +"2026-08-19" - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_gross_margin", - "get_operating_margin", - "get_net_profit_margin", - "get_interest_coverage_ratio", - "get_income_before_tax_profit_margin", - "get_effective_tax_rate", - "get_return_on_assets", - "get_return_on_equity", - "get_return_on_invested_capital", - "get_return_on_capital_employed", - "get_return_on_tangible_assets", - "get_income_quality_ratio", - "get_net_income_per_ebt", - "get_free_cash_flow_operating_cash_flow_ratio", - "get_EBT_to_EBIT", - "get_EBIT_to_revenue", - "get_cash_tax_rate", - "get_tax_rate_divergence" -]New value: +[ + "get_gross_margin", + "get_operating_margin", + "get_net_profit_margin", + "get_ebitda_margin", + "get_free_cash_flow_margin", + "get_interest_coverage_ratio", + "get_income_before_tax_profit_margin", + "get_effective_tax_rate", + "get_return_on_assets", + "get_cash_return_on_assets", + "get_return_on_equity", + "get_return_on_invested_capital", + "get_return_on_capital_employed", + "get_return_on_tangible_assets", + "get_income_quality_ratio", + "get_net_income_per_ebt", + "get_free_cash_flow_operating_cash_flow_ratio", + "get_EBT_to_EBIT", + "get_EBIT_to_revenue", + "get_cash_tax_rate", + "get_tax_rate_divergence", + "get_interest_burden_ratio", + "get_tax_burden_ratio" +] - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-15"New value: +"2021-08-20"
- Changed
rates5 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-14"New value: +"2026-08-19" - changed
Input schema / properties / gmdb_source / descriptionPrevious value: -"Use the OECD Global Macro Data Bank as the data source when True."New value: +"Use the Global Macro Database as the data source when True, rather than the OECD. The two are independent providers with different country and period coverage; both return rates and ratios as decimal fractions." - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_central_bank_policy_rate", - "get_short_term_interest_rate", - "get_long_term_interest_rate", - "get_government_bond_yield", - "get_euribor_rates", - "get_european_central_bank_rates", - "get_federal_reserve_rates", - "get_ice_bofa_effective_yield", - "get_ice_bofa_option_adjusted_spread", - "get_ice_bofa_total_return", - "get_ice_bofa_yield_to_worst" -]New value: +[ + "get_central_bank_policy_rate", + "get_short_term_interest_rate", + "get_long_term_interest_rate", + "get_government_bond_yield", + "get_euribor_rates", + "get_european_central_bank_rates", + "get_federal_reserve_rates", + "get_ice_bofa_effective_yield", + "get_ice_bofa_option_adjusted_spread", + "get_ice_bofa_total_return", + "get_ice_bofa_yield_to_worst", + "get_mortgage_rate_30_year", + "get_real_yield_curve", + "get_breakeven_inflation_expectations", + "get_treasury_rates", + "get_yield_curve_slope" +] - changed
Input schema / properties / rate / descriptionPrevious value: -"Value for rate."New value: +"Value for rate. Leave unset to use the default of the indicator you selected. Defaults are 'EFFR' for get_federal_reserve_rates; None for get_european_central_bank_rates." - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-15"New value: +"2021-08-20"
- Changed
risk33 fields changed- added
Input schema / properties / columnAdded value: +{ + "default": "Return", + "description": "Value for column.", + "title": "Column", + "type": "string" +} - added
Input schema / properties / conditioning_tickerAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for conditioning_ticker. Leave unset to use the default of the indicator you selected. Required by: get_covar.", + "title": "Conditioning Ticker" +} - added
Input schema / properties / copulaAdded value: +{ + "default": "gaussian", + "description": "Value for copula.", + "title": "Copula", + "type": "string" +} - added
Input schema / properties / dofAdded value: +{ + "default": 4, + "description": "Value for dof.", + "title": "Dof", + "type": "number" +} - added
Input schema / properties / empirical_marginsAdded value: +{ + "default": true, + "description": "Value for empirical_margins.", + "title": "Empirical Margins", + "type": "boolean" +} - changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-14"New value: +"2026-08-19" - added
Input schema / properties / estimatorAdded value: +{ + "default": "squared_return", + "description": "Value for estimator.", + "title": "Estimator", + "type": "string" +} - added
Input schema / properties / horizonAdded value: +{ + "default": 1, + "description": "Value for horizon.", + "title": "Horizon", + "type": "integer" +} - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_autocorrelation", - "get_coefficient_of_variation", - "get_conditional_drawdown_at_risk", - "get_conditional_value_at_risk", - "get_downside_deviation", - "get_entropic_value_at_risk", - "get_ewma_volatility", - "get_excess_volatility", - "get_garch", - "get_garch_forecast", - "get_hurst_exponent", - "get_kurtosis", - "get_maximum_drawdown", - "get_maximum_drawdown_duration", - "get_maximum_drawdown_recovery_time", - "get_mean_absolute_deviation", - "get_skewness", - "get_tail_ratio", - "get_ulcer_index", - "get_value_at_risk", - "get_variance", - "get_volatility" -]New value: +[ + "get_acerbi_szekely_test", + "get_amihud_illiquidity", + "get_autocorrelation", + "get_best_fitting_copula", + "get_coefficient_of_variation", + "get_component_value_at_risk", + "get_conditional_drawdown_at_risk", + "get_conditional_value_at_risk", + "get_copula_parameters", + "get_copula_simulation", + "get_covar", + "get_downside_deviation", + "get_egarch", + "get_egarch_forecast", + "get_egarch_parameters", + "get_entropic_value_at_risk", + "get_ewma_volatility", + "get_excess_volatility", + "get_garch", + "get_garch_forecast", + "get_garch_parameters", + "get_gjr_garch", + "get_gjr_garch_forecast", + "get_gjr_garch_parameters", + "get_har_rv_forecast", + "get_hill_estimator", + "get_hurst_exponent", + "get_kurtosis", + "get_marginal_value_at_risk", + "get_maximum_drawdown", + "get_maximum_drawdown_duration", + "get_maximum_drawdown_recovery_time", + "get_mean_absolute_deviation", + "get_roll_spread", + "get_skewness", + "get_tail_dependence_coefficient", + "get_tail_ratio", + "get_ulcer_index", + "get_value_at_risk", + "get_var_backtest", + "get_variance", + "get_volatility" +] - added
Input schema / properties / kAdded value: +{ + "default": 0.1, + "description": "Value for k.", + "title": "K", + "type": "number" +} - added
Input schema / properties / methodAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for method. Leave unset to use the default of the indicator you selected. Defaults are 'close_to_close' for get_volatility; 'empirical' for get_tail_dependence_coefficient.", + "title": "Method" +} - added
Input schema / properties / monthly_windowAdded value: +{ + "default": 22, + "description": "Value for monthly_window.", + "title": "Monthly Window", + "type": "integer" +} - added
Input schema / properties / n_bootstrapAdded value: +{ + "default": 1000, + "description": "Value for n_bootstrap.", + "title": "N Bootstrap", + "type": "integer" +} - added
Input schema / properties / n_simulationsAdded value: +{ + "default": 10000, + "description": "Value for n_simulations.", + "title": "N Simulations", + "type": "integer" +} - added
Input schema / properties / qAdded value: +{ + "default": 0.95, + "description": "Value for q.", + "title": "Q", + "type": "number" +} - added
Input schema / properties / random_stateAdded value: +{ + "default": 42, + "description": "Value for random_state.", + "title": "Random State", + "type": "integer" +} - changed
Input schema / properties / rolling / descriptionPrevious value: -"Rolling window size in number of periods. When set, the metric is computed over a smoothly overlapping trailing window across the full history (e.g. period='monthly' and rolling=6 gives a rolling 6-month value) instead of one value per period, or (for economics indicators) a simple moving average used to smooth the raw series."New value: +"Rolling window size in number of periods. When set, the metric is computed over a smoothly overlapping trailing window across the full history (e.g. period='monthly' and rolling=6 gives a rolling 6-month value) instead of one value per period, or (for economics indicators) a simple moving average used to smooth the raw series. Leave unset to use the default of the indicator you selected. Defaults are None for get_conditional_drawdown_at_risk, get_conditional_value_at_risk, get_downside_deviation, get_excess_volatility, get_kurtosis, get_skewness, get_tail_ratio, get_value_at_risk, get_variance, get_volatility; 14 for get_ulcer_index." - added
Input schema / properties / scaleAdded value: +{ + "default": 1000000, + "description": "Value for scale.", + "title": "Scale", + "type": "number" +} - added
Input schema / properties / show_full_resultsAdded value: +{ + "default": false, + "description": "Value for show_full_results.", + "title": "Show Full Results", + "type": "boolean" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-15"New value: +"2021-08-20" - added
Input schema / properties / tailAdded value: +{ + "default": "left", + "description": "Value for tail.", + "title": "Tail", + "type": "string" +} - added
Input schema / properties / testAdded value: +{ + "default": "both", + "description": "Value for test.", + "title": "Test", + "type": "string" +} - added
Input schema / properties / tickerAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for ticker. Leave unset to use the default of the indicator you selected. Required by: get_covar.", + "title": "Ticker" +} - added
Input schema / properties / ticker_aAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for ticker_a. Leave unset to use the default of the indicator you selected. Required by: get_tail_dependence_coefficient. Defaults are None for get_best_fitting_copula, get_copula_parameters, get_copula_simulation.", + "title": "Ticker A" +} - added
Input schema / properties / ticker_bAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for ticker_b. Leave unset to use the default of the indicator you selected. Required by: get_tail_dependence_coefficient. Defaults are None for get_best_fitting_copula, get_copula_parameters, get_copula_simulation.", + "title": "Ticker B" +} - changed
Input schema / properties / time_steps / descriptionPrevious value: -"Value for time_steps."New value: +"Value for time_steps. Leave unset to use the default of the indicator you selected. Defaults are 10 for get_egarch_forecast, get_garch_forecast, get_gjr_garch_forecast; None for get_egarch, get_garch, get_gjr_garch." - added
Input schema / properties / weekly_windowAdded value: +{ + "default": 5, + "description": "Value for weekly_window.", + "title": "Weekly Window", + "type": "integer" +} - added
Input schema / properties / weightsAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for weights.", + "title": "Weights" +} - added
Input schema / properties / window_sizeAdded value: +{ + "default": 252, + "description": "Value for window_size.", + "title": "Window Size", + "type": "integer" +} - added
Input schema / properties / within_period / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / within_period / defaultPrevious value: -trueNew value: +null - changed
Input schema / properties / within_period / descriptionPrevious value: -"Value for within_period."New value: +"Value for within_period. Leave unset to use the default of the indicator you selected. Defaults differ between indicators." - removed
Input schema / properties / within_period / typeRemoved value: -"boolean"
- Changed
solvency3 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-14"New value: +"2026-08-19" - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_debt_to_assets_ratio", - "get_debt_to_equity_ratio", - "get_debt_service_coverage_ratio", - "get_equity_multiplier", - "get_free_cash_flow_yield", - "get_net_debt_to_ebitda_ratio", - "get_cash_flow_coverage_ratio", - "get_capex_coverage_ratio", - "get_capex_dividend_coverage_ratio", - "get_debt_to_capital_ratio", - "get_preferred_dividend_coverage_ratio", - "get_interest_paid_to_expense_ratio" -]New value: +[ + "get_debt_to_assets_ratio", + "get_asset_coverage_ratio", + "get_debt_to_equity_ratio", + "get_debt_service_coverage_ratio", + "get_equity_multiplier", + "get_free_cash_flow_yield", + "get_net_debt_to_ebitda_ratio", + "get_gross_debt_to_ebitda_ratio", + "get_cash_flow_coverage_ratio", + "get_capex_coverage_ratio", + "get_capex_dividend_coverage_ratio", + "get_debt_to_capital_ratio", + "get_preferred_dividend_coverage_ratio", + "get_interest_paid_to_expense_ratio" +] - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-15"New value: +"2021-08-20"
- Changed
valuation3 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-14"New value: +"2026-08-19" - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_earnings_per_share", - "get_revenue_per_share", - "get_price_to_earnings_ratio", - "get_price_to_earnings_growth_ratio", - "get_forward_price_earnings_ratio", - "get_forward_price_earnings_growth_ratio", - "get_book_value_per_share", - "get_price_to_book_ratio", - "get_interest_debt_per_share", - "get_capex_per_share", - "get_earnings_yield", - "get_dividend_payout_ratio", - "get_dividend_yield", - "get_weighted_dividend_yield", - "get_price_to_cash_flow_ratio", - "get_price_to_free_cash_flow_ratio", - "get_market_cap", - "get_enterprise_value", - "get_ev_to_sales_ratio", - "get_ev_to_ebit", - "get_ev_to_ebitda_ratio", - "get_ev_to_operating_cashflow_ratio", - "get_tangible_asset_value", - "get_net_current_asset_value", - "get_ev_to_free_cash_flow_ratio", - "get_buyback_yield", - "get_shareholder_yield", - "get_sbc_adjusted_free_cash_flow" -]New value: +[ + "get_earnings_per_share", + "get_revenue_per_share", + "get_price_to_earnings_ratio", + "get_price_to_earnings_growth_ratio", + "get_forward_price_earnings_ratio", + "get_forward_price_earnings_growth_ratio", + "get_book_value_per_share", + "get_price_to_book_ratio", + "get_interest_debt_per_share", + "get_capex_per_share", + "get_earnings_yield", + "get_dividend_payout_ratio", + "get_dividend_yield", + "get_weighted_dividend_yield", + "get_price_to_cash_flow_ratio", + "get_price_to_free_cash_flow_ratio", + "get_market_cap", + "get_enterprise_value", + "get_ev_to_sales_ratio", + "get_ev_to_ebit", + "get_ev_to_ebitda_ratio", + "get_ev_to_operating_cashflow_ratio", + "get_tangible_asset_value", + "get_net_current_asset_value", + "get_ev_to_free_cash_flow_ratio", + "get_buyback_yield", + "get_shareholder_yield", + "get_sbc_adjusted_free_cash_flow", + "get_price_to_sales_ratio", + "get_reinvestment_rate" +] - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-15"New value: +"2021-08-20"
- Changed
volatility9 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-14"New value: +"2026-08-19" - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_bollinger_bands", - "get_true_range", - "get_average_true_range", - "get_keltner_channels", - "get_donchian_channels" -]New value: +[ + "get_bollinger_bands", + "get_true_range", + "get_average_true_range", + "get_supertrend", + "get_keltner_channels", + "get_donchian_channels", + "get_volatility_cone" +] - added
Input schema / properties / multiplierAdded value: +{ + "default": 3, + "description": "Value for multiplier.", + "title": "Multiplier", + "type": "number" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-15"New value: +"2021-08-20" - added
Input schema / properties / window / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / window / defaultPrevious value: -14New value: +null - changed
Input schema / properties / window / descriptionPrevious value: -"Value for window."New value: +"Value for window. Leave unset to use the default of the indicator you selected. Defaults are 14 for get_average_true_range, get_bollinger_bands, get_keltner_channels; 10 for get_supertrend; 20 for get_donchian_channels." - removed
Input schema / properties / window / typeRemoved value: -"integer" - added
Input schema / properties / windowsAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for windows.", + "title": "Windows" +}
21 tool updates
- Changed
breadth5 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-09"New value: +"2026-07-14" - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_mcclellan_oscillator", - "get_advancers_decliners", - "get_on_balance_volume", - "get_accumulation_distribution_line", - "get_chaikin_oscillator" -]New value: +[ + "get_mcclellan_oscillator", + "get_advancers_decliners", + "get_on_balance_volume", + "get_accumulation_distribution_line", + "get_chaikin_oscillator", + "get_trin", + "get_new_highs_new_lows" +] - added
Input schema / properties / standardizeAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-10"New value: +"2021-07-15" - added
Input schema / properties / windowAdded value: +{ + "default": 252, + "description": "Value for window.", + "title": "Window", + "type": "integer" +}
- Changed
discovery7 fields changed- added
Input schema / properties / dateAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for date.", + "title": "Date" +} - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_biggest_gainers", - "get_biggest_losers", - "get_commodity_list", - "get_crypto_list", - "get_delisted_stocks", - "get_etf_list", - "get_forex_list", - "get_index_list", - "get_most_active_stocks", - "get_sectors_performance", - "get_stock_list", - "get_stock_screener", - "get_stock_shares_float" -]New value: +[ + "get_biggest_gainers", + "get_biggest_losers", + "get_commodity_list", + "get_crypto_list", + "get_crypto_news", + "get_delisted_stocks", + "get_etf_list", + "get_forex_list", + "get_forex_news", + "get_general_news", + "get_index_list", + "get_industry_pe", + "get_industry_performance", + "get_ipo_calendar", + "get_ipo_disclosures", + "get_ipo_prospectuses", + "get_mergers_acquisitions_latest", + "get_most_active_stocks", + "get_press_releases", + "get_sector_pe", + "get_sector_performance", + "get_sectors_performance", + "get_stock_list", + "get_stock_news", + "get_stock_screener", + "get_stock_shares_float", + "get_stock_splits_calendar" +] - added
Input schema / properties / industryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for industry.", + "title": "Industry" +} - added
Input schema / properties / limitAdded value: +{ + "default": 100, + "description": "Value for limit.", + "title": "Limit", + "type": "integer" +} - added
Input schema / properties / pageAdded value: +{ + "default": 0, + "description": "Value for page.", + "title": "Page", + "type": "integer" +} - added
Input schema / properties / pagesAdded value: +{ + "default": 1, + "description": "Value for pages.", + "title": "Pages", + "type": "integer" +} - added
Input schema / properties / sectorAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for sector.", + "title": "Sector" +}
- Changed
efficiency5 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-09"New value: +"2026-07-14" - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_days_of_inventory_outstanding", - "get_days_of_sales_outstanding", - "get_operating_cycle", - "get_days_of_accounts_payable_outstanding", - "get_cash_conversion_cycle", - "get_cash_conversion_efficiency", - "get_receivables_turnover", - "get_inventory_turnover_ratio", - "get_accounts_payables_turnover_ratio", - "get_sga_to_revenue_ratio", - "get_fixed_asset_turnover", - "get_asset_turnover_ratio", - "get_operating_ratio" -]New value: +[ + "get_days_of_inventory_outstanding", + "get_days_of_sales_outstanding", + "get_operating_cycle", + "get_days_of_accounts_payable_outstanding", + "get_cash_conversion_cycle", + "get_cash_conversion_efficiency", + "get_receivables_turnover", + "get_inventory_turnover_ratio", + "get_accounts_payables_turnover_ratio", + "get_sga_to_revenue_ratio", + "get_fixed_asset_turnover", + "get_asset_turnover_ratio", + "get_operating_ratio", + "get_research_and_development_ratio", + "get_selling_and_marketing_ratio", + "get_general_and_administrative_ratio", + "get_stock_based_compensation_ratio", + "get_deferred_revenue_ratio" +] - added
Input schema / properties / standardizeAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-10"New value: +"2021-07-15" - changed
Input schema / properties / trailing / descriptionPrevious value: -"Number of trailing periods for rolling-window calculations."New value: +"Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period."
- Changed
environment5 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-09"New value: +"2026-07-14" - added
Input schema / properties / rollingAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Rolling window size in number of periods. When set, the metric is computed over a smoothly overlapping trailing window across the full history (e.g. period='monthly' and rolling=6 gives a rolling 6-month value) instead of one value per period, or (for economics indicators) a simple moving average used to smooth the raw series.", + "title": "Rolling" +} - added
Input schema / properties / standardizeAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-10"New value: +"2021-07-15" - added
Input schema / properties / trailingAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period.", + "title": "Trailing" +}
- Changed
fixed_income4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-09"New value: +"2026-07-14" - added
Input schema / properties / payment_frequencyAdded value: +{ + "default": 2, + "description": "Value for payment_frequency.", + "title": "Payment Frequency", + "type": "integer" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-10"New value: +"2021-07-15" - added
Input schema / properties / tenorAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Value for tenor.", + "title": "Tenor" +}
- Changed
government5 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-09"New value: +"2026-07-14" - added
Input schema / properties / rollingAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Rolling window size in number of periods. When set, the metric is computed over a smoothly overlapping trailing window across the full history (e.g. period='monthly' and rolling=6 gives a rolling 6-month value) instead of one value per period, or (for economics indicators) a simple moving average used to smooth the raw series.", + "title": "Rolling" +} - added
Input schema / properties / standardizeAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-10"New value: +"2021-07-15" - added
Input schema / properties / trailingAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period.", + "title": "Trailing" +}
- Changed
jobs5 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-09"New value: +"2026-07-14" - added
Input schema / properties / rollingAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Rolling window size in number of periods. When set, the metric is computed over a smoothly overlapping trailing window across the full history (e.g. period='monthly' and rolling=6 gives a rolling 6-month value) instead of one value per period, or (for economics indicators) a simple moving average used to smooth the raw series.", + "title": "Rolling" +} - added
Input schema / properties / standardizeAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-10"New value: +"2021-07-15" - added
Input schema / properties / trailingAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period.", + "title": "Trailing" +}
- Changed
liquidity4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-09"New value: +"2026-07-14" - added
Input schema / properties / standardizeAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-10"New value: +"2021-07-15" - changed
Input schema / properties / trailing / descriptionPrevious value: -"Number of trailing periods for rolling-window calculations."New value: +"Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period."
- Changed
macroeconomics5 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-09"New value: +"2026-07-14" - added
Input schema / properties / rollingAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Rolling window size in number of periods. When set, the metric is computed over a smoothly overlapping trailing window across the full history (e.g. period='monthly' and rolling=6 gives a rolling 6-month value) instead of one value per period, or (for economics indicators) a simple moving average used to smooth the raw series.", + "title": "Rolling" +} - added
Input schema / properties / standardizeAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-10"New value: +"2021-07-15" - added
Input schema / properties / trailingAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period.", + "title": "Trailing" +}
- Changed
market_data3 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-09"New value: +"2026-07-14" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-10"New value: +"2021-07-15" - changed
Input schema / properties / trailing / descriptionPrevious value: -"Number of trailing periods for rolling-window calculations."New value: +"Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period."
- Changed
models5 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-09"New value: +"2026-07-14" - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_altman_z_score", - "get_dupont_analysis", - "get_enterprise_value_breakdown", - "get_extended_dupont_analysis", - "get_gorden_growth_model", - "get_intrinsic_valuation", - "get_piotroski_score", - "get_present_value_of_growth_opportunities", - "get_weighted_average_cost_of_capital" -]New value: +[ + "get_altman_z_score", + "get_beneish_m_score", + "get_dupont_analysis", + "get_economic_value_added", + "get_enterprise_value_breakdown", + "get_extended_dupont_analysis", + "get_gorden_growth_model", + "get_graham_number", + "get_internal_growth_rate", + "get_intrinsic_valuation", + "get_piotroski_score", + "get_present_value_of_growth_opportunities", + "get_sustainable_growth_rate", + "get_weighted_average_cost_of_capital" +] - added
Input schema / properties / standardizeAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-10"New value: +"2021-07-15" - changed
Input schema / properties / trailing / descriptionPrevious value: -"Number of trailing periods for rolling-window calculations."New value: +"Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period."
- Changed
momentum3 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-09"New value: +"2026-07-14" - added
Input schema / properties / standardizeAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-10"New value: +"2021-07-15"
- Changed
options3 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-09"New value: +"2026-07-14" - added
Input schema / properties / standardizeAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-10"New value: +"2021-07-15"
- Changed
overlap7 fields changed- added
Input schema / properties / af_incrementAdded value: +{ + "default": 0.02, + "description": "Value for af_increment.", + "title": "Af Increment", + "type": "number" +} - added
Input schema / properties / af_maxAdded value: +{ + "default": 0.2, + "description": "Value for af_max.", + "title": "Af Max", + "type": "number" +} - added
Input schema / properties / af_startAdded value: +{ + "default": 0.02, + "description": "Value for af_start.", + "title": "Af Start", + "type": "number" +} - changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-09"New value: +"2026-07-14" - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_moving_average", - "get_exponential_moving_average", - "get_double_exponential_moving_average", - "get_trix", - "get_triangular_moving_average" -]New value: +[ + "get_moving_average", + "get_exponential_moving_average", + "get_double_exponential_moving_average", + "get_trix", + "get_triangular_moving_average", + "get_weighted_moving_average", + "get_hull_moving_average", + "get_volume_weighted_average_price", + "get_parabolic_sar", + "get_pivot_points" +] - added
Input schema / properties / standardizeAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-10"New value: +"2021-07-15"
- Changed
performance10 fields changed- added
Input schema / properties / adjustmentAdded value: +{ + "default": 0.1, + "description": "Value for adjustment.", + "title": "Adjustment", + "type": "number" +} - added
Input schema / properties / cumulativeAdded value: +{ + "default": false, + "description": "Return the cumulative value compounded over time instead of the discrete value per period. Always rebased to start at 1 at the beginning of the selected date range.", + "title": "Cumulative", + "type": "boolean" +} - changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-09"New value: +"2026-07-14" - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_alpha", - "get_beta", - "get_capital_asset_pricing_model", - "get_compound_growth_rate", - "get_factor_asset_correlations", - "get_factor_correlations", - "get_fama_and_french_model", - "get_information_ratio", - "get_jensens_alpha", - "get_m2_ratio", - "get_sharpe_ratio", - "get_sortino_ratio", - "get_tracking_error", - "get_treynor_ratio", - "get_ulcer_performance_index" -]New value: +[ + "get_alpha", + "get_beta", + "get_burke_ratio", + "get_calmar_ratio", + "get_capital_asset_pricing_model", + "get_compound_growth_rate", + "get_correlation_matrix", + "get_covariance_matrix", + "get_downside_capture_ratio", + "get_excess_return", + "get_factor_asset_correlations", + "get_factor_correlations", + "get_fama_and_french_model", + "get_gain_to_pain_ratio", + "get_information_ratio", + "get_jensens_alpha", + "get_kappa_ratio", + "get_m2_ratio", + "get_omega_ratio", + "get_returns", + "get_sharpe_ratio", + "get_sortino_ratio", + "get_sterling_ratio", + "get_tracking_error", + "get_treynor_ratio", + "get_ulcer_performance_index", + "get_upside_capture_ratio", + "get_win_rate" +] - added
Input schema / properties / minimum_acceptable_returnAdded value: +{ + "default": 0, + "description": "The minimum acceptable return (MAR) threshold below which returns are considered downside, e.g. 0.0 for downside relative to a zero return.", + "title": "Minimum Acceptable Return", + "type": "number" +} - added
Input schema / properties / orderAdded value: +{ + "default": 3, + "description": "Value for order.", + "title": "Order", + "type": "integer" +} - changed
Input schema / properties / rolling / descriptionPrevious value: -"Value for rolling."New value: +"Rolling window size in number of periods. When set, the metric is computed over a smoothly overlapping trailing window across the full history (e.g. period='monthly' and rolling=6 gives a rolling 6-month value) instead of one value per period, or (for economics indicators) a simple moving average used to smooth the raw series." - added
Input schema / properties / standardizeAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-10"New value: +"2021-07-15" - added
Input schema / properties / within_periodAdded value: +{ + "default": true, + "description": "Value for within_period.", + "title": "Within Period", + "type": "boolean" +}
- Changed
profitability5 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-09"New value: +"2026-07-14" - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_gross_margin", - "get_operating_margin", - "get_net_profit_margin", - "get_interest_coverage_ratio", - "get_income_before_tax_profit_margin", - "get_effective_tax_rate", - "get_return_on_assets", - "get_return_on_equity", - "get_return_on_invested_capital", - "get_return_on_capital_employed", - "get_return_on_tangible_assets", - "get_income_quality_ratio", - "get_net_income_per_ebt", - "get_free_cash_flow_operating_cash_flow_ratio", - "get_EBT_to_EBIT", - "get_EBIT_to_revenue" -]New value: +[ + "get_gross_margin", + "get_operating_margin", + "get_net_profit_margin", + "get_interest_coverage_ratio", + "get_income_before_tax_profit_margin", + "get_effective_tax_rate", + "get_return_on_assets", + "get_return_on_equity", + "get_return_on_invested_capital", + "get_return_on_capital_employed", + "get_return_on_tangible_assets", + "get_income_quality_ratio", + "get_net_income_per_ebt", + "get_free_cash_flow_operating_cash_flow_ratio", + "get_EBT_to_EBIT", + "get_EBIT_to_revenue", + "get_cash_tax_rate", + "get_tax_rate_divergence" +] - added
Input schema / properties / standardizeAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-10"New value: +"2021-07-15" - changed
Input schema / properties / trailing / descriptionPrevious value: -"Number of trailing periods for rolling-window calculations."New value: +"Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period."
- Changed
rates5 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-09"New value: +"2026-07-14" - added
Input schema / properties / rollingAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Rolling window size in number of periods. When set, the metric is computed over a smoothly overlapping trailing window across the full history (e.g. period='monthly' and rolling=6 gives a rolling 6-month value) instead of one value per period, or (for economics indicators) a simple moving average used to smooth the raw series.", + "title": "Rolling" +} - added
Input schema / properties / standardizeAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-10"New value: +"2021-07-15" - added
Input schema / properties / trailingAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period.", + "title": "Trailing" +}
- Changed
risk13 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-09"New value: +"2026-07-14" - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_conditional_value_at_risk", - "get_entropic_value_at_risk", - "get_garch", - "get_garch_forecast", - "get_kurtosis", - "get_maximum_drawdown", - "get_skewness", - "get_ulcer_index", - "get_value_at_risk" -]New value: +[ + "get_autocorrelation", + "get_coefficient_of_variation", + "get_conditional_drawdown_at_risk", + "get_conditional_value_at_risk", + "get_downside_deviation", + "get_entropic_value_at_risk", + "get_ewma_volatility", + "get_excess_volatility", + "get_garch", + "get_garch_forecast", + "get_hurst_exponent", + "get_kurtosis", + "get_maximum_drawdown", + "get_maximum_drawdown_duration", + "get_maximum_drawdown_recovery_time", + "get_mean_absolute_deviation", + "get_skewness", + "get_tail_ratio", + "get_ulcer_index", + "get_value_at_risk", + "get_variance", + "get_volatility" +] - added
Input schema / properties / lagsAdded value: +{ + "default": 10, + "description": "Value for lags.", + "title": "Lags", + "type": "integer" +} - added
Input schema / properties / lambda_Added value: +{ + "default": 0.94, + "description": "Value for lambda_.", + "title": "Lambda", + "type": "number" +} - added
Input schema / properties / max_lagAdded value: +{ + "default": 20, + "description": "Value for max_lag.", + "title": "Max Lag", + "type": "integer" +} - added
Input schema / properties / minimum_acceptable_returnAdded value: +{ + "default": 0, + "description": "The minimum acceptable return (MAR) threshold below which returns are considered downside, e.g. 0.0 for downside relative to a zero return.", + "title": "Minimum Acceptable Return", + "type": "number" +} - added
Input schema / properties / rolling / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / rolling / defaultPrevious value: -14New value: +null - changed
Input schema / properties / rolling / descriptionPrevious value: -"Value for rolling."New value: +"Rolling window size in number of periods. When set, the metric is computed over a smoothly overlapping trailing window across the full history (e.g. period='monthly' and rolling=6 gives a rolling 6-month value) instead of one value per period, or (for economics indicators) a simple moving average used to smooth the raw series." - removed
Input schema / properties / rolling / typeRemoved value: -"integer" - added
Input schema / properties / standardizeAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-10"New value: +"2021-07-15" - added
Input schema / properties / threshold_percentileAdded value: +{ + "default": 0.95, + "description": "Only used when distribution='evt'. The percentile of losses above which the Generalized Pareto Distribution is fitted, e.g. 0.95 fits on the worst 5% of losses.", + "title": "Threshold Percentile", + "type": "number" +}
- Changed
solvency5 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-09"New value: +"2026-07-14" - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_debt_to_assets_ratio", - "get_debt_to_equity_ratio", - "get_debt_service_coverage_ratio", - "get_equity_multiplier", - "get_free_cash_flow_yield", - "get_net_debt_to_ebitda_ratio", - "get_cash_flow_coverage_ratio", - "get_capex_coverage_ratio", - "get_capex_dividend_coverage_ratio" -]New value: +[ + "get_debt_to_assets_ratio", + "get_debt_to_equity_ratio", + "get_debt_service_coverage_ratio", + "get_equity_multiplier", + "get_free_cash_flow_yield", + "get_net_debt_to_ebitda_ratio", + "get_cash_flow_coverage_ratio", + "get_capex_coverage_ratio", + "get_capex_dividend_coverage_ratio", + "get_debt_to_capital_ratio", + "get_preferred_dividend_coverage_ratio", + "get_interest_paid_to_expense_ratio" +] - added
Input schema / properties / standardizeAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-10"New value: +"2021-07-15" - changed
Input schema / properties / trailing / descriptionPrevious value: -"Number of trailing periods for rolling-window calculations."New value: +"Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period."
- Changed
valuation5 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-09"New value: +"2026-07-14" - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_earnings_per_share", - "get_revenue_per_share", - "get_price_to_earnings_ratio", - "get_price_to_earnings_growth_ratio", - "get_book_value_per_share", - "get_price_to_book_ratio", - "get_interest_debt_per_share", - "get_capex_per_share", - "get_earnings_yield", - "get_dividend_payout_ratio", - "get_dividend_yield", - "get_weighted_dividend_yield", - "get_price_to_cash_flow_ratio", - "get_price_to_free_cash_flow_ratio", - "get_market_cap", - "get_enterprise_value", - "get_ev_to_sales_ratio", - "get_ev_to_ebit", - "get_ev_to_ebitda_ratio", - "get_ev_to_operating_cashflow_ratio", - "get_tangible_asset_value", - "get_net_current_asset_value" -]New value: +[ + "get_earnings_per_share", + "get_revenue_per_share", + "get_price_to_earnings_ratio", + "get_price_to_earnings_growth_ratio", + "get_forward_price_earnings_ratio", + "get_forward_price_earnings_growth_ratio", + "get_book_value_per_share", + "get_price_to_book_ratio", + "get_interest_debt_per_share", + "get_capex_per_share", + "get_earnings_yield", + "get_dividend_payout_ratio", + "get_dividend_yield", + "get_weighted_dividend_yield", + "get_price_to_cash_flow_ratio", + "get_price_to_free_cash_flow_ratio", + "get_market_cap", + "get_enterprise_value", + "get_ev_to_sales_ratio", + "get_ev_to_ebit", + "get_ev_to_ebitda_ratio", + "get_ev_to_operating_cashflow_ratio", + "get_tangible_asset_value", + "get_net_current_asset_value", + "get_ev_to_free_cash_flow_ratio", + "get_buyback_yield", + "get_shareholder_yield", + "get_sbc_adjusted_free_cash_flow" +] - added
Input schema / properties / standardizeAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-10"New value: +"2021-07-15" - changed
Input schema / properties / trailing / descriptionPrevious value: -"Number of trailing periods for rolling-window calculations."New value: +"Trailing window size in number of periods. Sums the raw values over the trailing N periods (e.g. trailing=4 on quarterly data gives a trailing-4-quarter / TTM-style sum) instead of returning one value per period."
- Changed
volatility4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-07-09"New value: +"2026-07-14" - changed
Input schema / properties / indicator / enumPrevious value: -[ - "get_bollinger_bands", - "get_true_range", - "get_average_true_range", - "get_keltner_channels" -]New value: +[ + "get_bollinger_bands", + "get_true_range", + "get_average_true_range", + "get_keltner_channels", + "get_donchian_channels" +] - added
Input schema / properties / standardizeAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-07-10"New value: +"2021-07-15"
20 tool updates
v2.1.4- Changed
breadth2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-27"New value: +"2026-07-09" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-28"New value: +"2021-07-10"
- Changed
efficiency2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-27"New value: +"2026-07-09" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-28"New value: +"2021-07-10"
- Changed
environment2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-27"New value: +"2026-07-09" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-28"New value: +"2021-07-10"
- Changed
fixed_income2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-27"New value: +"2026-07-09" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-28"New value: +"2021-07-10"
- Changed
government2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-27"New value: +"2026-07-09" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-28"New value: +"2021-07-10"
- Changed
jobs2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-27"New value: +"2026-07-09" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-28"New value: +"2021-07-10"
- Changed
liquidity2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-27"New value: +"2026-07-09" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-28"New value: +"2021-07-10"
- Changed
macroeconomics2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-27"New value: +"2026-07-09" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-28"New value: +"2021-07-10"
- Changed
market_data2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-27"New value: +"2026-07-09" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-28"New value: +"2021-07-10"
- Changed
models2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-27"New value: +"2026-07-09" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-28"New value: +"2021-07-10"
- Changed
momentum2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-27"New value: +"2026-07-09" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-28"New value: +"2021-07-10"
- Changed
options2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-27"New value: +"2026-07-09" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-28"New value: +"2021-07-10"
- Changed
overlap2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-27"New value: +"2026-07-09" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-28"New value: +"2021-07-10"
- Changed
performance2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-27"New value: +"2026-07-09" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-28"New value: +"2021-07-10"
- Changed
profitability2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-27"New value: +"2026-07-09" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-28"New value: +"2021-07-10"
- Changed
rates2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-27"New value: +"2026-07-09" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-28"New value: +"2021-07-10"
- Changed
risk2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-27"New value: +"2026-07-09" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-28"New value: +"2021-07-10"
- Changed
solvency2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-27"New value: +"2026-07-09" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-28"New value: +"2021-07-10"
- Changed
valuation2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-27"New value: +"2026-07-09" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-28"New value: +"2021-07-10"
- Changed
volatility2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-27"New value: +"2026-07-09" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-28"New value: +"2021-07-10"
20 tool updates
v2.1.3- Changed
breadth2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-23"New value: +"2026-06-27" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-24"New value: +"2021-06-28"
- Changed
efficiency2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-23"New value: +"2026-06-27" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-24"New value: +"2021-06-28"
- Changed
environment2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-23"New value: +"2026-06-27" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-24"New value: +"2021-06-28"
- Changed
fixed_income2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-23"New value: +"2026-06-27" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-24"New value: +"2021-06-28"
- Changed
government2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-23"New value: +"2026-06-27" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-24"New value: +"2021-06-28"
- Changed
jobs2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-23"New value: +"2026-06-27" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-24"New value: +"2021-06-28"
- Changed
liquidity2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-23"New value: +"2026-06-27" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-24"New value: +"2021-06-28"
- Changed
macroeconomics2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-23"New value: +"2026-06-27" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-24"New value: +"2021-06-28"
- Changed
market_data2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-23"New value: +"2026-06-27" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-24"New value: +"2021-06-28"
- Changed
models2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-23"New value: +"2026-06-27" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-24"New value: +"2021-06-28"
- Changed
momentum2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-23"New value: +"2026-06-27" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-24"New value: +"2021-06-28"
- Changed
options2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-23"New value: +"2026-06-27" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-24"New value: +"2021-06-28"
- Changed
overlap2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-23"New value: +"2026-06-27" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-24"New value: +"2021-06-28"
- Changed
performance2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-23"New value: +"2026-06-27" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-24"New value: +"2021-06-28"
- Changed
profitability2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-23"New value: +"2026-06-27" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-24"New value: +"2021-06-28"
- Changed
rates2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-23"New value: +"2026-06-27" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-24"New value: +"2021-06-28"
- Changed
risk2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-23"New value: +"2026-06-27" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-24"New value: +"2021-06-28"
- Changed
solvency2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-23"New value: +"2026-06-27" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-24"New value: +"2021-06-28"
- Changed
valuation2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-23"New value: +"2026-06-27" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-24"New value: +"2021-06-28"
- Changed
volatility2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-23"New value: +"2026-06-27" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-24"New value: +"2021-06-28"
21 tool updates
v0.1.2- Changed
breadth4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-22"New value: +"2026-06-23" - removed
Input schema / properties / roundingRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Number of decimal places to round results to.", - "title": "Rounding" -} - added
Input schema / properties / show_columnsAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-23"New value: +"2021-06-24"
- Changed
discovery1 field changed- added
Input schema / properties / show_columnsAdded 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" +}
- Changed
efficiency4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-22"New value: +"2026-06-23" - removed
Input schema / properties / roundingRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Number of decimal places to round results to.", - "title": "Rounding" -} - added
Input schema / properties / show_columnsAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-23"New value: +"2021-06-24"
- Changed
environment4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-22"New value: +"2026-06-23" - removed
Input schema / properties / roundingRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Number of decimal places to round results to.", - "title": "Rounding" -} - added
Input schema / properties / show_columnsAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-23"New value: +"2021-06-24"
- Changed
fixed_income3 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-22"New value: +"2026-06-23" - added
Input schema / properties / show_columnsAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-23"New value: +"2021-06-24"
- Changed
government4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-22"New value: +"2026-06-23" - removed
Input schema / properties / roundingRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Number of decimal places to round results to.", - "title": "Rounding" -} - added
Input schema / properties / show_columnsAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-23"New value: +"2021-06-24"
- Changed
jobs4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-22"New value: +"2026-06-23" - removed
Input schema / properties / roundingRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Number of decimal places to round results to.", - "title": "Rounding" -} - added
Input schema / properties / show_columnsAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-23"New value: +"2021-06-24"
- Changed
liquidity4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-22"New value: +"2026-06-23" - removed
Input schema / properties / roundingRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Number of decimal places to round results to.", - "title": "Rounding" -} - added
Input schema / properties / show_columnsAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-23"New value: +"2021-06-24"
- Changed
macroeconomics4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-22"New value: +"2026-06-23" - removed
Input schema / properties / roundingRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Number of decimal places to round results to.", - "title": "Rounding" -} - added
Input schema / properties / show_columnsAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-23"New value: +"2021-06-24"
- Changed
market_data4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-22"New value: +"2026-06-23" - removed
Input schema / properties / roundingRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Number of decimal places to round results to.", - "title": "Rounding" -} - added
Input schema / properties / show_columnsAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-23"New value: +"2021-06-24"
- Changed
models4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-22"New value: +"2026-06-23" - removed
Input schema / properties / roundingRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Number of decimal places to round results to.", - "title": "Rounding" -} - added
Input schema / properties / show_columnsAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-23"New value: +"2021-06-24"
- Changed
momentum4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-22"New value: +"2026-06-23" - removed
Input schema / properties / roundingRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Number of decimal places to round results to.", - "title": "Rounding" -} - added
Input schema / properties / show_columnsAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-23"New value: +"2021-06-24"
- Changed
options4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-22"New value: +"2026-06-23" - removed
Input schema / properties / roundingRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Number of decimal places to round results to.", - "title": "Rounding" -} - added
Input schema / properties / show_columnsAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-23"New value: +"2021-06-24"
- Changed
overlap4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-22"New value: +"2026-06-23" - removed
Input schema / properties / roundingRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Number of decimal places to round results to.", - "title": "Rounding" -} - added
Input schema / properties / show_columnsAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-23"New value: +"2021-06-24"
- Changed
performance4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-22"New value: +"2026-06-23" - removed
Input schema / properties / roundingRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Number of decimal places to round results to.", - "title": "Rounding" -} - added
Input schema / properties / show_columnsAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-23"New value: +"2021-06-24"
- Changed
profitability4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-22"New value: +"2026-06-23" - removed
Input schema / properties / roundingRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Number of decimal places to round results to.", - "title": "Rounding" -} - added
Input schema / properties / show_columnsAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-23"New value: +"2021-06-24"
- Changed
rates4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-22"New value: +"2026-06-23" - removed
Input schema / properties / roundingRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Number of decimal places to round results to.", - "title": "Rounding" -} - added
Input schema / properties / show_columnsAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-23"New value: +"2021-06-24"
- Changed
risk4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-22"New value: +"2026-06-23" - removed
Input schema / properties / roundingRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Number of decimal places to round results to.", - "title": "Rounding" -} - added
Input schema / properties / show_columnsAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-23"New value: +"2021-06-24"
- Changed
solvency4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-22"New value: +"2026-06-23" - removed
Input schema / properties / roundingRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Number of decimal places to round results to.", - "title": "Rounding" -} - added
Input schema / properties / show_columnsAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-23"New value: +"2021-06-24"
- Changed
valuation4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-22"New value: +"2026-06-23" - removed
Input schema / properties / roundingRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Number of decimal places to round results to.", - "title": "Rounding" -} - added
Input schema / properties / show_columnsAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-23"New value: +"2021-06-24"
- Changed
volatility4 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-22"New value: +"2026-06-23" - removed
Input schema / properties / roundingRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Number of decimal places to round results to.", - "title": "Rounding" -} - added
Input schema / properties / show_columnsAdded 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" +} - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-23"New value: +"2021-06-24"
41 tool updates
v0.1.1- Added
breadth - Added
discovery - Removed
economics_environment - Removed
economics_fixed_income - Removed
economics_general - Removed
economics_government - Removed
economics_jobs - Removed
economics_rates - Added
efficiency - Added
environment - Added
fixed_income - Added
government - Added
jobs - Added
liquidity - Added
macroeconomics - Changed
market_data2 fields changed- changed
Input schema / properties / end_date / defaultPrevious value: -"2026-06-21"New value: +"2026-06-22" - changed
Input schema / properties / start_date / defaultPrevious value: -"2021-06-22"New value: +"2021-06-23"
- Removed
market_discovery - Added
models - Added
momentum - Added
options - Added
overlap - Added
performance - Added
profitability - Removed
quant_models - Removed
quant_options - Removed
quant_performance - Removed
quant_risk - Added
rates - Removed
ratios_efficiency - Removed
ratios_liquidity - Removed
ratios_profitability - Removed
ratios_solvency - Removed
ratios_valuation - Added
risk - Added
solvency - Removed
technicals_breadth - Removed
technicals_momentum - Removed
technicals_overlap - Removed
technicals_volatility - Added
valuation - Added
volatility
25 tool updates
v0.1.0- First observed
economics_environment - First observed
economics_fixed_income - First observed
economics_general - First observed
economics_government - First observed
economics_jobs - First observed
economics_rates - First observed
market_data - First observed
market_discovery - First observed
quant_models - First observed
quant_options - First observed
quant_performance - First observed
quant_risk - First observed
ratios_efficiency - First observed
ratios_liquidity - First observed
ratios_profitability - First observed
ratios_solvency - First observed
ratios_valuation - First observed
search_by_category - First observed
search_categories - First observed
search_instruments - First observed
search_metrics - First observed
technicals_breadth - First observed
technicals_momentum - First observed
technicals_overlap - First observed
technicals_volatility
TDQS
Scored across 26 tools
Most category tools are clearly distinct, but some indicators appear in multiple categories (e.g., interest coverage in both solvency and profitability, FCF yield in solvency but arguably valuation). The overlap description claims Bollinger Bands and Keltner Channels belong there, yet they are listed under volatility, creating confusion. Search meta-tools help, but boundaries are not always crisp.
All tool names are lowercase snake_case, which is consistent. However, some are singular (solvency, valuation) while others are plural (options, rates, models, jobs), a minor deviation. The nouns are all category labels, which is predictable despite lacking verb_noun structure.
26 tools is above the recommended 3–15 range and feels heavy for an MCP server. Many categories could be merged (e.g., solvency/valuation/liquidity/profitability/efficiency into a single ratios tool; breadth/momentum/overlap/volatility into a single technicals tool), indicating unnecessary fragmentation. The count exceeds the 25+ threshold for 'too many'.
The toolkit covers an exceptionally broad surface: fundamental ratios, technical indicators, risk, performance, econometrics, options, macroeconomics, government finance, environment, jobs, rates, fixed income, market data, and discovery. Search tools aid navigation, and no obvious domain gaps are apparent for a finance data/calculation server. Coverage is extensive and well beyond minimal CRUD.
Maintenance
Related MCP Connectors
SEC filings and financial data for AI agents: 59 tools for statements, valuation and supply chains.
SEC data layer for AI agents — financials, screening, every figure traceable to its filing.
- mcpOAuthsh.opencapital
Give your AI deep fundamentals on US public companies — metrics, segments, peers. Free.
Licensed, cited financial data for AI agents: news, filings, transcripts, research and tearsheets.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides AI assistants with access to comprehensive financial data including real-time stock quotes, company fundamentals, financial statements, market analysis, SEC filings, and economic indicators through 253+ tools across 24 categories.245 npmApache 2.0
- AlicenseNot gradedqualityDmaintenanceProvides AI assistants access to comprehensive financial data including real-time stock quotes, company fundamentals, financial statements, market analysis, economic indicators, and 250+ financial tools across 24 categories from Financial Modeling Prep API.245 npmApache 2.0
- AlicenseAqualityAmaintenanceAI-native quantitative trading signal engine for crypto and TradFi perpetuals. Multi-factor composite BUY/SELL/HOLD signals, cross-venue funding rate arbitrage scanning, and market regime detection powered by Hyperliquid data.8565 npm10MIT
- AlicenseAqualityCmaintenanceAgent-ready financial intelligence tools for AI agents. Two curated tools — get_stock_snapshot and get_company_metrics — that combine multiple data sources, derive signals (UNDERVALUED, STRONG, ACCELERATING), and pre-compute the math. One call, one agent-friendly response.341 npm1MIT