Finance Toolkit
This server provides comprehensive financial data and analytics tools, including:
Raw Financial Data: Income statements, balance sheets, cash flow statements, historical/intraday prices, company profiles, analyst estimates, earnings/dividend calendars, and treasury rates.
Market Discovery: Stock screener, biggest gainers/losers, most active stocks, sector performance, and lists of stocks, ETFs, cryptocurrencies, forex, commodities, and indices. Search tickers by name, symbol, CIK, CUSIP, or ISIN.
Financial Ratios (200+): Efficiency (asset/inventory turnover, cash conversion cycle), liquidity (current, quick, cash ratios), profitability (margins, ROE, ROA, ROIC), solvency (debt-to-equity, interest coverage), and valuation (P/E, EV/EBITDA, P/B, dividend yield).
Technical Indicators: Breadth (McClellan Oscillator, OBV), momentum (RSI, MACD, Ichimoku Cloud, Stochastic), overlap (SMA, EMA, TRIX), and volatility (Bollinger Bands, ATR, Keltner Channels).
Financial Models: WACC, DuPont/Extended DuPont, DCF/Intrinsic Valuation, Gordon Growth Model, Altman Z-Score, Piotroski F-Score.
Performance & Risk Metrics: Sharpe, Sortino, Treynor, Alpha, Beta, CAPM, Fama-French 5 Factor, CAGR, VaR, CVaR, GARCH, Maximum Drawdown, Ulcer Index, Skewness, Kurtosis.
Options & Greeks: Black-Scholes and Binomial pricing, implied volatility, and all 1st/2nd/3rd order Greeks (Delta, Gamma, Theta, Vega, Rho, Vanna, Charm, Vomma).
Fixed Income: Bond duration, yield-to-maturity, present value, and derivative pricing (Black & Bachelier models).
Economic Indicators (60+ countries): GDP, CPI, inflation, trade balance, unemployment, consumer/business confidence, house prices, government debt/deficit, central bank rates, government bond yields, ICE BofA corporate bond series, EURIBOR, ESG scores, and environmental data.
Portfolio Analysis: Performance overviews, transaction history, and position tracking.
All tools support date ranges, quarterly data, growth rates, trailing/rolling windows, and multiple tickers simultaneously.
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=API_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")
# Screen for stocks matching a set of criteria
discovery.get_stock_screener(
market_cap_higher=1000000,
price_higher=100,
price_lower=200,
beta_higher=1,
beta_lower=1.5,
dividend_higher=1,
)Which returns:
Symbol | Name | Market Cap | Sector | Industry | Beta | Price | Dividend | Exchange | Country |
NKE | NIKE, Inc. | 163403295604 | Consumer Cyclical | Footwear & Accessories | 1.079 | 107.36 | 1.48 | New York Stock Exchange | US |
SAF.PA | Safran SA | 66234006559 | Industrials | Aerospace & Defense | 1.339 | 160.16 | 1.35 | Paris | FR |
ROST | Ross Stores, Inc. | 46724188589 | Consumer Cyclical | Apparel Retail | 1.026 | 138.785 | 1.34 | NASDAQ Global Select | US |
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 both Apple and Microsoft. 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 are plotted for Microsoft.
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 |
And below each component of the Extended Dupont Analysis is plotted including the resulting Return on Equity (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")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 parameters are plotted for Apple and Microsoft side-by-side.
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 a variety of Fixed Income metrics are shown all acquired from the Fixed Income module.
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 |
Only QCOM, SWKS, MSFT and GOOGL 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. As the Finance Toolkit makes use of threading, initializing the Toolkit with a single ticker will result in a slow process. This is because the Toolkit will have to wait for the previous request to finish before it can start the next one. Therefore, it is recommended to initialize the Toolkit with all tickers you want to analyze. 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 toolsbreadthBRead-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-08-19 |
| 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-08-20 |
| 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?
Beyond the readOnlyHint annotation, the description explains that the tool automatically applies to price data, which is a behavioral detail. It does not discuss rate limits, error handling, or output structure, but the read-only and idempotent hints already cover the main expectations.
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 compact and front-loaded with the purpose. The list of indicators is somewhat redundant with the enum in the schema, but it is brief and does not overwhelm. The two paragraphs are well-structured and to the point.
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 complexity (19 parameters), the description does not explain the meanings of many parameters (e.g., short_window, standardize, volume_divisor) or the output format. However, the schema descriptions compensate, so the description is minimally sufficient but not comprehensive.
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?
The schema already provides detailed descriptions for all parameters (100% coverage). The description adds limited extra value by clarifying that tickers should be comma-separated and by listing the available indicator names, but it does not explain windows, standardization, or other nuances 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 that this tool provides market breadth technical indicators and lists several examples (e.g., McClellan Oscillator, OBV). It distinguishes the category from sibling tools like momentum or liquidity by naming the indicator family, though it does not explicitly contrast with alternatives.
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 a key usage hint that price data is automatically handled ('no need to fetch prices first') and specifies that tickers should be provided. However, it does not mention when not to use this tool or mention alternative tools, leaving some ambiguity about selection among sibling indicators.
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.
econometricsARead-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-08-19 |
| 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-08-20 |
| 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, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds the 'Requires tickers' constraint and the indicator list, but it does not describe output shape, p-value conventions, or behavior when required inputs are omitted. With an output schema present, this is acceptable but not especially 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 three sentences are compact and front-loaded, but the description then appends a 48-item 'Available indicators' list that duplicates the tool's own enum. This creates a long, dense wall of text that undermines conciseness and adds little value for an agent that can already read the enum in the schema.
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 80 parameters and 48 selectable indicators, the description provides the essential context: what the tests are, when to use them, and the tickers requirement. The presence of an output schema, annotations, and a detailed indicator enum reduces the need to document return formats and every parameter; still, per-indicator selection guidance is absent.
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 per the rubric. The description adds a tickers requirement and repeats the indicator enum, but it does not add meaningful semantics for the other 79 parameters beyond what the schema already provides, many of which have generic descriptions like 'Value for p.'
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 verb+resource ('Statistical/econometric tests on price or return series') and enumerates concrete test families such as ADF, Johansen, Granger causality, and ARCH-LM, making the tool's scope unambiguous. It clearly differentiates this tool from sibling metric categories by emphasizing hypothesis testing and inference rather than simple metric calculation.
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 states when to use the tool: 'Use for pairs-trading/spread-modeling foundations or diagnosing return-series properties.' It also gives a concrete invocation hint ('Requires tickers=\'AAPL\''). However, it does not mention when not to use it or point to alternative sibling tools, so it stops short of top-tier guidance.
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-08-19 |
| 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-08-20 |
| 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 it returns pre-computed ratios and supports multiple tickers, but does not mention any side effects, data source variability, or rate limits. This adds moderate context beyond annotations but not rich behavioral detail.
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 single paragraph that front-loads the purpose and includes a long list of indicators. The indicator list is redundant with the schema enum, but the overall length is manageable and the essential information is up front. It earns a high score for being relatively concise while conveying core details.
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 complexity (12 params, many indicators) and the presence of a detailed schema and output schema, the description adequately sets expectations: it identifies this as an efficiency-ratio tool, explains it should replace raw financial statements, and lists supported metrics. It does not explain all parameter behaviors, but the schema covers those. The description is complete enough for an agent to know when and how to invoke the 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 description coverage is 100%, so all 12 parameters already have detailed descriptions. The description restates tickers format and quarterly/date support, and lists indicators already present in the enum, adding little extra semantic value. Also, the claim 'Requires tickers=...' conflicts with the schema where tickers is optional with a default, creating minor confusion.
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 that the tool provides 'Pre-computed efficiency ratios' and enumerates specific metrics (asset turnover, inventory turnover, DSO, DPO, CCC). It also distinguishes itself from raw financial statements and lists available indicators, making the purpose and scope unambiguous.
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 gives clear usage context: 'Requires tickers=...' and 'Use instead of raw financial statements.' It mentions support for quarterly and date range parameters, but does not explicitly contrast with sibling tools (e.g., liquidity, solvency) or state when not to use it. Still, the classification by ratio type is evident from the name and sibling list.
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-08-19 |
| 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-08-20 |
| 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?
With readOnlyHint=true, openWorldHint=true, and idempotentHint=true already declared, the safety profile is fully covered by annotations — the burden on the description is low. The description adds genuine value on top by disclosing the dual-query-style behavior (tickers vs countries) and characterizing rolling/trailing as 'smoothing/summation.' No contradiction with the read-only annotations; the description consistently implies pure data access.
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 dense sentences, each with a distinct job: state the domain, give usage patterns, differentiate from siblings. The 'Available indicators' enumeration replaces longer prose and mirrors the enum. For a 13-parameter dispatcher tool this is appropriately sized — nothing extraneous, nothing missing.
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 complex dispatcher with 13 parameters, an output schema, and safe read-only annotations, the description covers the essential decision surface: domain, parameter-selection strategy, special smoothing behavior, and indicator list. The presence of an output schema relieves it of explaining return values. It could have more explicitly stated the dispatcher pattern (one call = one of three named endpoints) and acknowledged the annual/quarterly dimension, but 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 coverage is 100% with rich per-parameter descriptions, so baseline is 3. The description elevates this by disambiguating the easily-confused rolling (smoothing) and trailing (summation) parameters, and by teaching which parameter family fits which indicator. A minor blemish: the schema's indicator enum example ('get_asset_turnover_ratio') is stale and inconsistent with the actual enum values, which the description partially papers over by listing the three real indicator names.
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?
Opens with a clear domain statement ('Environmental and ESG data') followed by specific, actionable examples mapping indicators to parameters ('For ESG scores... use tickers="AAPL"'). Closes with explicit sibling differentiation ('This is the only tool that accepts BOTH tickers= and countries=') which positions it squarely against the breadth/momentum/volatility family. The verb+resource is specific and the tool's dispatcher role is evident.
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?
Provides concrete when-to-use-which-parameter guidance (tickers for ESG scores, countries for carbon/renewable data) and flags the rolling/trailing behavior with examples. The 'only tool that accepts BOTH' phrasing helps rule out alternatives, though it never names a specific sibling to prefer instead. Loses a point for not addressing when NOT to use this tool (e.g., single-instrument financial metrics that belong to siblings like momentum or valuation).
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-08-19 |
| 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-08-20 |
| 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 safe calculation nature is established. The description adds that parameters are passed directly and enumerates indicators, but it does not describe return behavior, response format, or edge cases beyond what annotations and schema already imply.
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 core purpose, then clarifies the input style, then enumerates the indicators. It is reasonably concise given the breadth of the tool, though the indicator list partially duplicates the enum in the schema.
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 high complexity of 40 parameters and 12 indicators, the description could do more to map indicators to their relevant parameters. It provides the indicator names and general input guidance, but stops short of helping an agent determine which parameters to supply for each specific calculation; output-schema presence helps but does not fully compensate.
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?
Parameter descriptions in the schema are extensive, so the description doesn't need to repeat all 40 parameters. It does add helpful examples like coupon_rate, maturity, and spot_rates, though it also mentions face_value which does not appear in the schema, causing slight confusion.
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 performs bond and derivative valuation calculations with a specific list of supported indicators, such as duration, yield-to-maturity, and Z-spread. It also distinguishes this tool from market-data siblings by noting that no tickers or countries are needed and that parameters are provided directly.
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 gives useful context: it is for calculations using direct bond/derivative parameters rather than ticker-based lookups, and it lists available indicators. However, it does not explicitly say when to prefer this tool over sibling tools like valuation, rates, or options, nor does it give exclusions or alternatives.
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-08-19 |
| 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-08-20 |
| 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=true and destructiveHint=false, covering the safety profile. Description adds meaningful behavioral info: mandatory countries constraint, prohibition on tickers, and explains rolling vs trailing data transformations. No contradictions. Could mention pagination or output size limits but 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?
Two concise paragraphs. First paragraph explains purpose and key constraints; second lists indicators. Front-loaded. No fluff. The indicator list is redundant with schema enum but serves as quick reference. Sufficiently concise.
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 high schema coverage and output schema present, the description is complete. It covers all critical usage constraints (countries required, tickers forbidden, date/frequency options) and clarifies the main non-obvious parameters (rolling vs trailing). 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 3. However, description adds critical information: countries must be provided (default empty but required), tickers= not used, rolling=N and trailing=N semantics clarified (moving-average vs trailing sum), and shows comma-separated example. This elevates beyond 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 specifies the tool's function: government fiscal metrics by country (debt, deficit, expenditure, revenue, tax revenue). It lists all 11 available indicators explicitlyaining any ambiguity about scope. The verb 'get' and the resource 'fiscal metrics' with country parameters is specific.
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?
Provides explicit conditions: requires countries='United States' (with comma-separated for multiple), supports date range and quarterly, and explicitly warns NOT to use tickers=. This gives strong practical usage guidance. Minor gap: doesn't mention when to prefer this over sibling economic tools, but that's acceptable given the tool's clear domain.
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-08-19 |
| 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-08-20 |
| 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?
Beyond the readOnly/openWorld/idempotent annotations, the description discloses meaningful behavioral traits: two indicators are US-only and ignore the countries argument, they require a FRED API key, and they always return only a 'United States' column. It also clarifies that rolling is moving-average smoothing and trailing is a trailing-period sum, adding real value beyond 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?
The description is dense but well organized: scope, key usage constraints, transformation options, special-case caveats, and a clear indicator list. The indicator list partially duplicates the schema enum, and the 'Requires countries="United States"' phrasing is slightly ambiguous, but every sentence contributes operational content and the text is front-loaded with the core purpose.
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 13 parameters, an output schema, and a multi-indicator tool, the description covers the critical operational context: country requirements, date/quarterly support, rolling/trailing transforms, FRED-specific limitations, and the full indicator set. An output schema exists and covers return structure. Minor gaps include not clarifying the OECD/GMDB source distinction in the description and the slightly ambiguous 'Requires countries' wording.
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?
The schema already documents all 13 parameters with good descriptions, so the baseline is 3. The description adds extra semantic value by explaining comma-separated countries, prohibiting tickers, clarifying rolling/trailing behavior on raw series, and highlighting country/API-key constraints for FRED indicators. It does not exhaustively elaborate every parameter, but the schema covers those adequately.
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's scope: 'Labour and social metrics by country' and enumerates the exact indicators available (unemployment, productivity, population, poverty, income inequality, nonfarm payrolls, initial jobless claims). This distinguishes it from sibling tools like 'macroeconomics' or 'government' and gives a specific, actionable purpose.
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 gives strong practical guidance: countries must be specified, comma-separated values are supported, tickers should NOT be used, and date/quarterly/rolling/trailing parameters are supported. It also flags the FRED API key requirement and US-only behavior for two indicators. However, it does not explicitly name alternative tools or state when to prefer a sibling tool over this one.
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-08-19 |
| 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-08-20 |
| 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 indicate readOnly, idempotent, and openWorld, so the description doesn't need to restate safety. It adds useful behavioral details such as returning the list of indicators when omitted, behavior of standardize and growth parameters, and how show_columns affects output, which goes beyond 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?
The description is a single, well-structured sentence that covers key facts: what it provides, the required tickers, and the available indicators. It avoids redundancy and is easy to parse, with the parameter list neatly embedded in the schema.
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 there is no explicit output schema, the description sufficiently conveys what to expect: pre-computed ratios, options for standardization/growth, and filtering via show_columns. It also informs about placeholder behavior when indicator is omitted. Missing details like exact output format are not critical for tool selection.
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?
The schema already provides 100% coverage with detailed descriptions for every parameter. The description supplements this with practical examples (e.g., comma-separated tickers, quarterly=true, start_date/end_date) and clarifies that indicator is required, adding value beyond the schema's generic text.
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 explicitly states the tool provides pre-computed liquidity ratios, lists the specific indicators available (current, quick, cash, working capital, etc.), and distinguishes it from raw financial statements. This clearly defines the tool's purpose and sets it apart from other ratio-focused 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?
The description advises using this tool instead of raw financial statements and explains required parameters (indicator) and optional ones (tickers, quarterly, date range). However, it doesn't explicitly contrast with sibling ratio tools like profitability or solvency, though the name and indicator list make the use case clear.
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-08-19 |
| 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-08-20 |
| 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?
Beyond the annotations (readOnlyHint, idempotentHint), the description reveals significant behavioral traits: some indicators require a free FRED API key, six indicators return only 'United States' regardless of countries, get_commodity_forward_curve returns dated futures contracts instead of a country series, and rates/ratios are returned as decimal fractions. These details go well beyond what annotations or schema convey.
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 long but packed with essential usage details and special cases that are necessary for correct invocation. It front-loads the core purpose and then organizes guidance logically (general usage, then indicator-specific notes). Given the tool's complexity (19 params, 44 indicators), the length is justified and not fluff.
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?
This is a highly complex tool with many parameters, indicators, and edge cases. The description covers the major pitfalls: required countries, source selection, FRED key requirements, US-only behavior, rolling/trailing semantics, and output format (decimal fractions). The presence of an output schema reduces the need to describe return values, and the description addresses the remainder comprehensively.
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 covers 100% of parameters, so baseline is 3. The description adds meaning by explaining rolling as moving-average smoothing and trailing as trailing N-period sum, clarifying source selection (gmdb_source, oecd_source), and detailing special parameter requirements (commodity for forward curve, countries for most indicators). This enriches understanding beyond the schema's field-level descriptions.
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 the tool provides macroeconomic indicators for countries and lists a comprehensive set of specific indicators (GDP, CPI, inflation rate, etc.), which clearly distinguishes it from sibling finance/metric tools like momentum or liquidity. It uses a specific verb-resource construction and the scope is unambiguous.
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 gives explicit usage instructions: requires countries='United States', do not use tickers, supports start_date/end_date, quarterly, rolling, trailing, and includes special-case guidance for specific indicators (oecd_source for CPI, commodity for forward curves, FRED key for US-only indicators). It lacks explicit exclusions for when not to use the tool, but the unique domain makes the differentiation clear.
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-08-19 |
| 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-08-20 |
| 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?
While annotations already mark this as read-only, idempotent, and open-world, the description adds beyond that by specifying ticker requirements, indicator list, and the unusual behavior of two indicators that ignore most parameters. This supplements the annotation with practical operational details.
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 well-structured with a clear lead sentence, usage guidance, and a bullet list of indicators. It's slightly verbose but efficiently organized, front-loading the key purpose and constraints.
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 complexity (20 parameters, many indicators, output schema), the description covers the main purpose, usage boundaries, and special cases. It doesn't repeat output schema details because that's already present, and it provides enough context for an agent to select and invoke the tool appropriately.
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?
The input schema has 100% description coverage, so baseline is 3. The description adds some context (e.g., tickers format, special case for two indicators) but does not clarify vague schema fields like 'Value for fill_nan' or 'Value for show_errors'. It does not significantly enhance parameter understanding 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 explicitly states the tool provides raw financial data across numerous categories (prices, statements, profiles, etc.) and contrasts it with dedicated tools for pre-computed metrics. This clearly distinguishes it from its siblings such as momentum, volatility, and profitability.
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 direction: 'Use this ONLY for raw data needs' and points to alternative tools for ratios, performance, risk, or model metrics. It also notes the ticker requirement and explains that get_market_risk_premium and get_commitment_of_traders ignore most parameters, providing clear when-to-use and 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.
modelsCRead-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-08-19 |
| 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-08-20 |
| 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=true, openWorldHint=true, and idempotentHint=true, so the description need not repeat those. It adds some behavioral context by specifying the ticker requirement (though this contradicts the schema) and supporting quarterly or date-range options. However, it does not describe output behavior, error conditions, or how multiple tickers are handled beyond a comma-separated format, leaving gaps that annotations don't cover.
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 bloated, repeating the full list of indicator names that already exist in the enum. It front-loads the purpose but then dumps the entire enum list in a single paragraph, which is redundant and wastes tokens. A concise reference to the schema or a few examples would be more efficient. The description is not appropriately sized for its content.
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 complexity (25 parameters, many indicator-specific), the description provides only a high-level overview (ticker requirement, quarterly/date support) and a list of indicators. It does not explain which parameters are needed for which indicators (though the schema covers some), nor does it mention that the output schema is available. The description also omits guidance on parameter interactions and fails to resolve the ticker requirement ambiguity, making it incomplete for such a complex 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%, but many parameter descriptions are placeholders like 'Value for diluted.' or 'Value for periods.' that add little meaning. The description adds a few useful notes (ticker requirement, quarterly/date support), but it also incorrectly states tickers are required when the schema lists them as optional, confusing parameter semantics. It does not clarify which optional parameters apply to which indicators beyond what the schema already says.
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 'Pre-computed financial models' and lists the specific models (WACC, DuPont, DCF, etc.), which conveys a specific verb (compute) and resource (financial models). It distinguishes from sibling categories by listing its unique indicators, though it doesn't explicitly name alternatives like 'valuation' or 'profitability' tools, so it lacks a direct differentiation statement.
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 mentions prerequisites ('Requires tickers=...') and options (quarterly, date range), but it does not provide guidance on when to choose this tool over sibling categories (e.g., momentum, liquidity). There is no explicit 'when-to-use' or 'when-not-to-use' advice, and no mention of alternatives, so agents receive little direction on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
momentumARead-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-08-19 |
| 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-08-20 |
| 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?
With readOnlyHint, openWorldHint, and idempotentHint already present, the description adds useful behavioral context: price data is handled automatically, tickers are required, and multiple tickers are supported via comma separation. No contradiction with annotations 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?
The first sentence is front-loaded and useful, but the description includes a long list of 22 indicator names that duplicates the indicator enum in the input schema. The list adds bulk without much new information, making the description less concise than it could be.
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 complexity (27 parameters) and rich schema, the description provides a reasonable overview but does not clarify which parameters apply to which indicators or how to pick among the many indicator options. The output schema and annotations help, but the description leaves important selection guidance to the agent.
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 carries most parameter meaning. The description adds that tickers is effectively required and that defaults differ by indicator, but many parameters still rely on generic schema descriptions like 'Value for window_1' without further explanation.
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 identifies the tool as providing momentum technical indicators (RSI, MACD, Stochastic Oscillator, etc.) and is distinct from categories like volatility, breadth, and performance. It lacks an explicit verb like 'computes' or 'returns,' but the scope and examples make the purpose clear.
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 clear usage context: apply momentum indicators to price data automatically, no need to fetch prices first, and tickers must be supplied as 'AAPL' or comma-separated values. It does not explicitly mention when not to use it or recommend sibling tools, 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.
optionsBRead-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-08-19 |
| 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-08-20 |
| 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 established. The description adds only the tickers requirement and indicator list, but no deeper behavior like error handling, return format, or rate limits, so it meets but doesn't exceed expectations.
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 is front-loaded and informative, but the long list of indicators duplicates the enum in the input schema, creating redundancy and length. This list adds bulk without explaining each indicator or its parameters.
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 39 parameters and 34 possible indicators, the description should explain which parameters apply to which indicator. It only provides a flat list of indicators and a ticker requirement; parameter-indicator mapping is left entirely to the schema, which has many tautological descriptions. An output schema exists but return semantics are not described.
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?
The schema provides 100% description coverage, so the baseline is 3. The description adds guidance on tickers ("Requires tickers='AAPL'") and lists indicators, but most parameters remain poorly explained with generic "Value for X" schema descriptions; the description does not compensate for the 30+ 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 explicitly states "Option pricing and Greeks (Black-Scholes model, binomial tree, delta, gamma, theta, vega, rho, implied volatility)", which clearly identifies the tool's domain and distinguishes it from broader siblings like volatility or models. It also enumerates 34 available indicators, making the scope concrete. However, it lacks an explicit verb, so it's not 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 clear usage context with "Requires tickers='AAPL' — use comma-separated values for multiple tickers," and lists the available indicators to choose from. It does not explicitly name alternatives or when-not-to-use, but the context is sufficient for a domain-specific tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overlapARead-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-08-19 |
| 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-08-20 |
| 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?
Beyond the readOnly/idempotent annotations, the description adds that price data is fetched automatically (no need to fetch prices first) and enumerates available indicators. Minor limitation: no mention of output format or rate limits, but annotations cover critical side-effect aspects.
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 and organized into two short paragraphs. The list of indicators is redundant with the schema enum, but it adds a quick reference. No filler or excessive detail.
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 complex input schema, the description provides helpful context (price data handling, indicator list) but omits a clear definition of 'overlap' and lacks guidance on parameter interactions. The presence of an output schema may cover return formatting, but the description alone is not fully complete.
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?
The description clarifies 'tickers' and 'indicator' (comma-separated, list of options) and 'show_columns' indirectly. However, many parameters (af_start, af_increment, sensitivity) have generic 'Value for X' descriptions in the schema, and the description does not enrich them. Schema coverage is 100% but semantics are weak for most 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 states the tool computes technical overlap indicators (SMA, EMA, Bollinger Bands, Keltner Channels) and lists available indicators. It clearly identifies the resource (price data) and the general action, but could be more precise about the 'overlap' concept and differentiate from sibling categories.
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 overlap indicators and notes no need to fetch prices separately, but does not explicitly contrast with sibling tools like momentum or volatility. It lacks clear when-to-use vs alternatives guidance.
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-08-19 |
| 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-08-20 |
| 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?
The description adds useful behavioral detail beyond the readOnly/idempotent annotations: cumulative=true returns a compounded growth index rebased to 1, rolling=N changes output to a rolling N-period value, and period='daily' is explicitly rejected. This gives the agent practical expectations about output shape and supported frequencies without contradicting 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?
The core sentences are dense and informative, front-loading the main metrics and key parameter behaviors. However, the long 'Available indicators' list duplicates the input schema enum and appears truncated mid-word with 'g', which is redundant and structurally messy.
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 is an indicator hub with 26 parameters and an output schema, the description covers the most important decision-relevant behavior: available metric families, cumulative/rolling semantics, required tickers, and unsupported daily periods. It does not explain benchmark_ticker defaults or factor-specific parameters, but those are already documented in the schema and the description provides enough orienting context for a complex 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 description coverage is 100%, so the schema already documents all 26 parameters. The description adds meaningful semantics for high-leverage parameters by explaining cumulative=true, rolling=N, period options, tickers formatting, and required indicator behavior. This goes beyond the schema's generic per-parameter descriptions, especially for rolling and cumulative combinations.
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 identifies the resource as 'Pre-computed risk-adjusted performance metrics' and enumerates specific metrics (Sharpe, Sortino, Alpha, Beta, CAPM, etc.), which distinguishes it from sibling tools like momentum, volatility, and risk. However, it lacks an explicit action verb such as 'calculates' or 'returns', and the broad tool name 'performance' makes the purpose slightly less crisp than a direct command.
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 gives concrete usage constraints: tickers must be supplied like 'AAPL', comma-separated for multiple tickers, and period='daily' is unsupported with explicit alternatives ('use weekly, monthly, quarterly, or yearly'). It does not, however, explain when to use this tool instead of sibling tools such as risk or volatility, or when to choose one indicator family over another.
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-08-19 |
| 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-08-20 |
| 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=true and idempotentHint=true, so the safety profile is covered. The description adds 'Pre-computed' as behavioral context and mentions that this tool avoids raw financial statements, but it does not disclose much beyond that. No contradiction with annotations 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?
The opening sentences are concise and front-loaded with the key purpose and usage guidance. However, the large list of available indicators duplicates the enum already present in the input schema, making the description longer than necessary 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 tool's complexity—12 parameters, a rich input schema, an output schema, and clear annotations—the description provides the essential selection and invocation cues: indicator choice, tickers requirement, time-series options, and differentiation from raw financial statements. It does not need to restate every schema 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 coverage is 100%, so the baseline is 3, but the description adds a meaningful operational note: tickers must be set (e.g., 'AAPL') even though the schema does not mark tickers as required. It also highlights quarterly and date-range parameters. The many other parameters are well documented in the schema itself.
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 identifies the tool as providing pre-computed profitability ratios and names major metrics like gross margin, ROE, and ROA. It distinguishes itself from raw financial statements and, through its metric list, from sibling ratio categories, though it lacks an explicit verb like 'Returns' or 'Gets'.
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 'Use instead of raw financial statements' and gives a practical invocation requirement: 'Requires tickers="AAPL"'. It also mentions quarterly=true and start_date/end_date support, giving clear usage context, though it does not explicitly contrast with sibling tools like solvency or liquidity.
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-08-19 |
| 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-08-20 |
| 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, openWorldHint, and idempotentHint, and the description adds meaningful behavioral context: FRED-backed indicators return no data without an API key, only return a 'United States' column, and rolling/trailing have specific smoothing/sum semantics. No contradiction with 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?
The description is information-dense but overly long and poorly structured as a single wall of text. The 'Available indicators' list duplicates the enum in the input schema and is truncated mid-word ('g'), which is a structural defect. It could be tightened with headers and by removing redundant enumeration.
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 16 indicators and 18 parameters, the description covers the most important cross-cutting constraints: country requirements, ticker prohibition, FRED API key dependency, and rolling/trailing behavior. The output schema and rich input schema cover the remaining details, so the description is complete enough 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 the baseline is 3, but the description adds value beyond the schema by explaining how countries should be used, that tickers= must not be used, and what rolling/trailing mean in practice. This is more than the schema's generic parameter 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 clearly identifies the tool as providing interest rate data and enumerates specific rate families (central bank policy rates, government bond yields, EURIBOR, ECB/Fed rates, Treasury yield curve, etc.), which distinguishes it from sibling tools like fixed_income or government. It lacks an explicit verb like 'retrieve' or 'get', but the resource scope is specific and unambiguous.
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 gives explicit usage constraints: requires countries='United States', forbids tickers=, supports start_date/end_date and quarterly=true, and explains rolling/trailing behavior. It also clarifies the optional FRED API key and which indicators are affected. It does not name sibling tools as alternatives, 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.
riskARead-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. Does NOT support period='daily'; use weekly, monthly, quarterly, or yearly instead.
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, get_kurtosis, get_marginal_value_at_risk, g
| 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-08-19 |
| 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-08-20 |
| 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. Leave unset to use the default of the indicator you selected. Defaults differ between indicators. | |
| 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 clear from the structured data alone. The description adds value by explaining behavioral nuances beyond the schema, such as the `rolling` behavior for different indicators and the `method` parameter defaults for specific indicators. There's no contradiction, so no points deducted.
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 long, but the complexity of the tool (47 parameters, 42 indicators) justifies it. The most critical information is front-loaded, and the 'Available indicators' list, while lengthy, improves usability since it can be referenced directly. One minor deduction for some redundancy with schema enums, but overall it's 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?
Given the tool's complexity and 47 parameters, the description covers the most critical constraints and interactions well. It explains the date handling via `period`, the roll-up via `rolling`, and default behaviors for parameters like `method`. However, it doesn't discuss all parameter combinations, and some less-common parameters like `within_period` or `show_full_results` are left to the schema. Still, it covers the critical mass for an agent to use it effectively.
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?
Even though schema coverage is 100%, the description provides crucial semantic context that the schema lacks. For example, it explains how `moving` and `period` interact, clarifies the meaning of `tickers` (comma-separated), and details the `method` parameter's per-indicator defaults. It also explains the `threshold_percentile` parameter, which is not explained 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 clearly identifies the tool as providing pre-computed risk metrics, listing a comprehensive set of metrics (VaR, CVaR, EVaR, GARCH, etc.). It differentiates from siblings by focusing solely on risk-related indicators and providing a large list of 'Available indicators'. The scope is explicit and detailed.
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 provides explicit usage constraints: 'Requires tickers='AAPL'' and 'Does NOT support period='daily''. It also explains how to use `rolling` and `period` together, and notes the behavior when `indicator` is omitted. These details far exceed what's in the schema, giving clear guidance on when and how to use the tool.
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.
solvencyARead-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-08-19 |
| 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-08-20 |
| 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 and idempotentHint=true, but the description adds context beyond that: it clarifies that tickers are required, explains quarterly toggle, and lists all supported indicators. It also states 'pre-computed' and recommends using it over raw statements, which conveys the tool's derived nature. No contradictions with 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?
The description is front-loaded with the purpose and usage guidance, then lists the available indicators. The indicator list is somewhat redundant with the schema enum but still useful for quick scanning. It is concise overall, though the final list sentence is long. No wasted prose.
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 13 parameters and a full schema plus output schema, the description covers the essential context: what the tool does, when to use it, and key usage constraints. It does not explain return formats, but the output schema exists. The description is sufficiently complete for an agent to invoke the tool correctly, especially with the indicator list and example.
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 reinforces tickers as a requirement and names quarterly/start_date/end_date, but these are already well-documented in the schema. The indicator list duplicates the enum. The description adds minimal new semantic value beyond the schema, though it does give a concrete example (tickers='AAPL').
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 pre-computed solvency ratios (debt-to-equity, interest coverage, debt-to-assets, net debt to EBITDA), giving a specific verb+resource and distinguishing it from sibling tools like liquidity or profitability. It also lists the exact available indicators, leaving no ambiguity about its scope.
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 'Use instead of raw financial statements', providing a clear when-to-use recommendation. It also gives an example requirement (tickers='AAPL') and mentions quarterly flag and date range support. However, it does not explicitly state when not to use it or mention alternatives like liquidity for other ratio types.
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-08-19 |
| 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-08-20 |
| 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, openWorldHint, and idempotentHint. The description adds valuable behavioral context: two indicators 'require a Premium FMP subscription' and 'are fetched on first use only.' This goes beyond the annotations and alerts users to potential access restrictions and caching behavior.
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 concise and front-loaded with essential information. The second paragraph is a long list of indicators, but it is a single sentence and serves as a useful reference. Some redundancy exists because the same list appears in the schema enum, but the overall structure is clear and not wasteful.
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 complexity (15 parameters, 1 required, output schema present), the description covers the essential usage scenarios: ticker requirement, quarterly/dates, and the premium subscription caveat. It doesn't explain return values, but the output schema fills that gap. The description is sufficiently complete for an AI agent to select and invoke the 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 description coverage is 100%, so all parameters are already documented. The description reinforces key parameters like tickers, quarterly, and start_date/end_date, but does not add deeper semantic meaning beyond what the schema provides. Baseline of 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 it provides 'Pre-computed valuation ratios' and lists specific metrics (P/E, EPS, EV/EBITDA, etc.). It distinguishes itself from sibling tools by focusing on valuation and explicitly says to use it 'instead of raw financial statements.' The purpose is specific and actionable.
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 provides clear usage context: 'Requires tickers="AAPL"' and 'use comma-separated values for multiple tickers.' It explicitly directs users to use this tool instead of raw financial statements, which is an alternative. It lacks explicit when-not-to-use instructions relative to sibling tools, but the guidance is sufficient.
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-08-19 |
| 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-08-20 |
| 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=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds that price data is fetched automatically and that omitting the indicator returns the list of available indicators, which is useful. However, it doesn't disclose details like rate limits, pagination, or what happens with invalid tickers, but given the annotations, a 3 is appropriate.
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 and front-loaded with the core purpose. It uses a short paragraph and a bullet-like list of indicators. It avoids unnecessary fluff and provides essential usage hints. Slightly more structure could be added, but it's efficient.
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 complexity (18 parameters, 7 indicators) and the presence of an output schema, the description is reasonably complete. It covers the key usage points: automatic price fetching, required tickers, indicator list, and window defaults. It doesn't explain return values, but the output schema covers that. It could mention the 'show_columns' parameter for reducing output, but that's in the schema. Overall, adequate for 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%, so the schema already documents all parameters. The description adds context for the 'indicator' parameter (required, omitting returns list) and the 'tickers' parameter (comma-separated, required). It also explains the 'window' parameter defaults for different indicators. This adds value beyond the schema, but the schema already does most of the work, so a 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 tool computes volatility technical indicators (ATR, True Range) and lists the available indicators. It distinguishes itself from siblings by focusing on volatility metrics, though it doesn't explicitly contrast with other technical analysis tools like momentum or overlap.
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 provides clear usage guidance: it states that price data is fetched automatically (no need to fetch prices first), requires tickers, and lists available indicators. It also mentions that omitting the indicator returns the list of available indicators. However, it doesn't explicitly state when to use this tool versus alternatives like momentum or overlap.
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. Dates show when Glama detected each change.
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
Several tools occupy overlapping territory: 'overlap' and 'volatility' both include Bollinger Bands and Keltner Channels, while 'performance' and 'risk' share volatility-related metrics. 'search_categories' vs 'search_by_category' are especially easy to confuse, and 'search_metrics' vs 'search_instruments' sound similar despite different purposes.
Most tools are single-word category nouns like 'breadth', 'liquidity', and 'models', but then four tools use snake_case verbs: 'search_categories', 'search_by_category', 'search_metrics', 'search_instruments'. There is no consistent verb_noun or noun pattern across the set.
At 26 tools, the server is on the heavy side of the ideal range, but each tool represents a distinct finance domain category and the three search tools help navigate the large surface. It is borderline rather than egregiously overstuffed.
The toolkit covers technical analysis, fundamental ratios, valuation, risk, performance, econometrics, options, fixed income, macro data, ESG, discovery, and raw market data. There are no obvious dead ends or missing core workflows for a data/analytics-focused finance server.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
SEC filings and financial data for AI agents: 55 tools for financials, valuation and supply chains.
1SEC filing intelligence for AI agents. Financials, screening, peer comparison for 5,000+ companies.
The financial MCP for AI agents - 90+ financial tables, SEC filings, signals, alt-data.
- mcpOAuthsh.opencapital
Give your AI deep fundamentals on US public companies — metrics, segments, peers. Free.
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.375Apache 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.375Apache 2.0
- AlicenseAqualityBmaintenanceAI-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.73,7367MIT
- AlicenseAqualityBmaintenanceAgent-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.3801MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/JerBouma/FinanceToolkit'
If you have feedback or need assistance with the MCP directory API, please join our Discord server