Skip to main content
Glama
JerBouma

Finance Toolkit

by JerBouma

FinanceToolkit

GitHub Sponsors Buy Me a Coffee LinkedIn MCP Server Download MCP Bundle Smithery Glama Documentation Supported Python Versions PYPI Version PYPI Downloads

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

  1. Installation

  2. Functionality

  3. MCP Server

  4. Questions & Answers

  5. Contributing

  6. Mentions

  7. Contact

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 -U

Then within Python use:

from financetoolkit import Toolkit

companies = Toolkit(
    tickers=['AAPL', 'MSFT'],
    api_key="FINANCIAL_MODELING_PREP_KEY",  # replace with your actual API key
)

To be able to get started, you need to obtain an API Key from FinancialModelingPrep. This is used to gain access to 30+ years of financial statement both annually and quarterly. Note that the Free plan is limited to 250 requests each day, 5 years of data and only features companies listed on US exchanges.


Obtain an API Key from FinancialModelingPrep here.


Through the link you are able to subscribe for the free plan and also premium plans at a 15% discount. This is an affiliate link and thus supports the project at the same time. I have chosen FinancialModelingPrep as a source as I find it to be the most transparent, reliable and at an affordable price. I have yet to find a platform offering such low prices for the amount of data offered. When you notice that the data is inaccurate or have any other issue related to the data, note that I simply provide the means to access this data and I am not responsible for the accuracy of the data itself. For this, use their contact form or provide the data yourself.

By default, the Finance Toolkit prioritizes Financial Modeling Prep for data retrieval. If data acquisition from Financial Modeling Prep is unsuccessful (e.g., due to plan restrictions or API key issues), the toolkit automatically switches to Yahoo Finance as a secondary source. To disable this fallback behavior and exclusively use Financial Modeling Prep, set enforce_source="FinancialModelingPrep" during Toolkit initialization. This configuration ensures that an error is raised if Financial Modeling Prep data cannot be accessed. Alternatively, you can set enforce_source="YahooFinance" to exclusively use Yahoo Finance as the data source.

The same enforce_source argument is also accepted per call on get_historical_data, get_treasury_data and the four statement functions (get_balance_sheet_statement, get_income_statement, get_cash_flow_statement and get_statistics_statement), where it overrides whatever the Toolkit was initialised with.

Functionality

This section is an introduction to the Finance Toolkit. Find with the link below fully-fledged code documentation as well as Jupyter Notebooks in which you can see many examples ranging from basic examples to creating custom ratios to working with your own datasets.


Find a variety of How-To Guides including Code Documentation for the FinanceToolkit here.


A basic example of how to use the Finance Toolkit is shown below. Every code snippet in the sections that follow builds on this same companies instance.

from financetoolkit import Toolkit

# Initialize the Toolkit for Apple and Microsoft
companies = Toolkit(["AAPL", "MSFT"], api_key="FINANCIAL_MODELING_PREP_KEY", start_date="2017-12-31")

Each ratio, indicator and metric has a corresponding function that can be called directly, for example ratios.get_return_on_equity or technicals.get_relative_strength_index. Every module also has one or more collect_ functions that return a whole category at once, e.g. ratios.collect_profitability_ratios, useful when you want everything in one call instead of assembling it metric by metric.

Three capabilities cut across nearly the whole toolkit:

  • rolling and trailing windows. Many metrics return one value per reporting period by default. Pass rolling=<n> to compute the metric over a sliding window instead, or trailing=<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.

  • growth and lag. Pass growth=True on almost any get_ or collect_ function to return the period-over-period growth instead of the raw value. lag (an int or list of ints, default 1) controls how many periods back that growth is measured against, e.g. lag=4 for year-over-year growth on quarterly data. Combine with trailing (e.g. trailing=4, growth=True) to get TTM growth.

  • standardize (Z-Score). Most get_* methods across Economics, Ratios, Technicals, Risk, Performance, Models, Options and Fixed Income accept standardize=True, converting raw values into standard deviations from their own historical mean/std. Useful for ranking, scoring, or spotting an unusual reading across metrics that otherwise live on incompatible scales.

Every module below also has a How-To Guide notebook and full code documentation (formulas, parameters, worked examples) linked in its own section, see the documentation hub for the complete index.

Discovering Instruments & News

Before analyzing a ticker you often need to find it. The Discovery module is standalone and covers among other things lists of companies, cryptocurrencies, forex, commodities, ETFs and indices.

from financetoolkit import Discovery

# Initialize the standalone Discovery module
discovery = Discovery(api_key="FINANCIAL_MODELING_PREP_KEY")

# Find US semiconductor companies worth more than $100 billion
semiconductors = discovery.get_stock_screener(
    industry="Semiconductors",
    country="US",
    exchange="NASDAQ",
    market_cap_higher=100_000_000_000,
    is_etf=False,
)

The screener returns twelve companies, of which the five largest are shown below:

Symbol

Name

Market Cap

Beta

Price

Dividend

NVDA

NVIDIA Corporation

5677886820000

2.217

234.42

0.28

AVGO

Broadcom Inc.

1688566002696

1.457

354.92

2.60

MU

Micron Technology, Inc.

1212744628950

2.222

1073.81

0.53

AMD

Advanced Micro Devices, Inc.

1028957518000

2.476

631.03

0.00

INTC

Intel Corp.

604977329655

2.231

119.94

0.00

And below all twelve are ranked by market cap.

Furthermore, you can find in this module stock screeners, sector/industry performance and news feeds and more. Find the Notebook here and the full instrument discovery documentation here.

Obtaining Historical Data

Obtain historical data on a daily, weekly, monthly or yearly basis. This includes OHLC, volumes, dividends, returns and cumulative returns for each corresponding period.

# Obtain historical market data for all tickers
historical_data = companies.get_historical_data()

# Select the results for Apple
historical_data.xs('AAPL', axis=1, level=1)

For example, a portion of the historical data for Apple is shown below.

date

Open

High

Low

Close

Adj Close

Volume

Dividends

Return

Cumulative Return

2018-01-02

42.54

43.075

42.315

43.065

40.78

1.02224e+08

0

0

1

2018-01-03

43.1325

43.6375

42.99

43.0575

40.77

1.17982e+08

0

-0.0002

0.9998

2018-01-04

43.135

43.3675

43.02

43.2575

40.96

8.97384e+07

0

0.0047

1.0044

2018-01-05

43.36

43.8425

43.2625

43.75

41.43

9.46401e+07

0

0.0115

1.0159

2018-01-08

43.5875

43.9025

43.4825

43.5875

41.27

8.22711e+07

0

-0.0039

1.012

And below the cumulative returns are plotted which include the S&P 500 as benchmark:

Metrics such as Volatility, Excess Return and Excess Volatility are calculated as dedicated Risk and Performance methods rather than columns on this table to create more efficient and flexible functionalities. Find the Notebook here and the full historical data documentation here.

Obtaining Financial Statements

Obtain an Income Statement on an annual or quarterly basis. This can also be a balance statement or cash flow statement.

# Obtain the Income Statement for all tickers
income_statement = companies.get_income_statement()

# Select the results for Apple
income_statement.loc['AAPL']

For example, the first 5 rows of the Income Statement for Apple are shown below.

2017

2018

2019

2020

2021

2022

2023

Revenue

2.29234e+11

2.65595e+11

2.60174e+11

2.74515e+11

3.65817e+11

3.94328e+11

3.83285e+11

Cost of Goods Sold

1.41048e+11

1.63756e+11

1.61782e+11

1.69559e+11

2.12981e+11

2.23546e+11

2.14137e+11

Gross Profit

8.8186e+10

1.01839e+11

9.8392e+10

1.04956e+11

1.52836e+11

1.70782e+11

1.69148e+11

Gross Profit Ratio

0.3847

0.3834

0.3782

0.3823

0.4178

0.4331

0.4413

Research and Development Expenses

1.1581e+10

1.4236e+10

1.6217e+10

1.8752e+10

2.1914e+10

2.6251e+10

2.9915e+10

And below the Earnings Before Interest, Taxes, Depreciation and Amortization (EBITDA) are plotted for Apple and Alphabet since 2017. Their fiscal years line up closely, so both show the same latest reported year. Find the Notebook here and the full financial statement documentation here.

Obtaining Financial Ratios

Get Profitability Ratios based on the inputted balance sheet, income and cash flow statements. This can be any of the 80+ ratios within the ratios module.

# Collect all Profitability Ratios for all tickers
profitability_ratios = companies.ratios.collect_profitability_ratios()

# Select the results for Microsoft
profitability_ratios.loc['MSFT']

For example, see some of the profitability ratios of Microsoft below.

2017

2018

2019

2020

2021

2022

2023

Gross Margin

0.6191

0.6525

0.659

0.6778

0.6893

0.684

0.6892

Operating Margin

0.2482

0.3177

0.3414

0.3703

0.4159

0.4206

0.4177

Net Profit Margin

0.2357

0.1502

0.3118

0.3096

0.3645

0.3669

0.3415

Interest Coverage Ratio

13.9982

16.5821

20.3429

25.3782

34.7835

47.4275

52.0244

Income Before Tax Profit Margin

0.2574

0.3305

0.3472

0.3708

0.423

0.4222

0.4214

And below a few of the profitability ratios of Microsoft, each with its latest value, the change over the period and its trend.

The 80+ ratios are divided into five categories: Efficiency (asset/inventory/receivables turnover, cash conversion cycle, R&D/SG&A/SBC-to-revenue), Liquidity (current, quick and cash ratios, working capital), Profitability (margins, ROE/ROA/ROIC, cash vs. effective tax rate), Solvency (debt-to-equity, debt-to-capital, interest and dividend coverage) and Valuation (P/E, PEG, Forward P/E, EV multiples, buyback and shareholder yield). It's also possible to define fully custom ratios calculated automatically from the balance sheet, income and cash flow statements. Find the Notebook here and the full ratio-by-ratio documentation here.

Obtaining Financial Models

Get an Extended DuPont Analysis based on the inputted balance sheet, income and cash flow statements.

# Get the Extended DuPont Analysis for all tickers
extended_dupont_analysis = companies.models.get_extended_dupont_analysis()

# Select the results for Apple
extended_dupont_analysis.loc['AAPL']

For example, this shows the Extended DuPont Analysis for Apple:

2017

2018

2019

2020

2021

2022

2023

Interest Burden Ratio

0.9572

0.9725

0.9725

0.988

0.9976

1.0028

1.005

Tax Burden Ratio

0.7882

0.8397

0.8643

0.8661

0.869

0.8356

0.8486

Operating Profit Margin

0.2796

0.2745

0.2527

0.2444

0.2985

0.302

0.2967

Asset Turnover

nan

0.7168

0.7389

0.8288

1.0841

1.1206

1.0868

Equity Multiplier

nan

3.0724

3.5633

4.2509

5.255

6.1862

6.252

Return on Equity

nan

0.4936

0.5592

0.7369

1.4744

1.7546

1.7195

The five components of the Extended DuPont Analysis multiply into the Return on Equity (ROE): interest burden × tax burden × operating margin × asset turnover × equity multiplier. Below they are shown for each year, ending in the resulting ROE.

The models module covers 10+ models in total, for example DuPont Analysis, WACC, Economic Value Added (EVA), Altman Z-Score, Beneish M-Score and the Graham Number. Find the Notebook here and the full model-by-model documentation here.

Obtaining Options and Greeks

Get the Black Scholes Model for both call and put options including the relevant Greeks, in this case Delta, Gamma, Theta and Vega. This can be any of the First, Second or Third Order Greeks.

# Get Delta for all tickers across strikes and expirations
delta = companies.options.get_delta(expiration_time_range=180)

# Select the results for Apple
delta.loc['AAPL']

For example, see the delta of the Call options for Apple for multiple expiration times and strike prices below (Stock Price: 185.92, Volatility: 31.59%, Dividend Yield: 0.49% and Risk Free Rate: 3.95%):

1 Month

2 Months

3 Months

4 Months

5 Months

6 Months

175

0.7686

0.7178

0.6967

0.6857

0.6794

0.6759

180

0.6659

0.64

0.6318

0.629

0.6285

0.6291

185

0.5522

0.5583

0.5648

0.571

0.5767

0.5816

190

0.4371

0.4762

0.4977

0.513

0.5249

0.5342

195

0.3298

0.3971

0.4324

0.4562

0.474

0.4875

Which can also be plotted together with Gamma, Theta and Vega as follows:

The options module is divided into four categories: Option Pricing (Black-Scholes, Binomial Model, Implied Volatility), First-Order Greeks (Delta, Vega, Theta, Rho), Second-Order Greeks (Gamma, Vanna, Charm, Vomma) and Third-Order Greeks (Speed, Zomma, Color, Ultima). Find the Notebook here and the full option pricing and Greeks documentation here.

Obtaining Performance Metrics

Get the correlations with the factors as defined by Fama-and-French. These include market, size, value, operating profitability and investment. The beauty of all functionality here is that it can be based on any period as the function accepts the period intraday, weekly, monthly, quarterly and yearly.

# Get the Fama-French factor correlations for all tickers, quarterly
factor_asset_correlations = companies.performance.get_factor_asset_correlations(period="quarterly")

# Select the results for Apple
factor_asset_correlations['AAPL']

For example, this shows the quarterly correlations for Apple:

Mkt-RF

SMB

HML

RMW

CMA

2022Q2

0.9177

-0.1248

-0.5077

-0.3202

-0.2624

2022Q3

0.8092

0.1528

-0.5046

-0.1997

-0.5231

2022Q4

0.8998

0.2309

-0.5968

-0.1868

-0.5946

2023Q1

0.7737

0.1606

-0.3775

-0.228

-0.5707

2023Q2

0.7416

-0.1166

-0.2722

0.0093

-0.4745

And below the correlations with each factor are plotted over time for both Apple and Microsoft.

Beyond Beta, CAPM and the Fama-French factors, the performance module covers around 20+ metrics in total, for example Sharpe Ratio, Sortino Ratio, Calmar Ratio, Omega Ratio and the Correlation Matrix. Most of these also support rolling=<n> for a value that evolves through time instead of one number per period. Find the Notebook here and the full performance metric documentation here.

Obtaining Risk Metrics

Get the Value at Risk for each week. Here, the days within each week are considered for the Value at Risk. This makes it so that you can understand within each period what is the expected Value at Risk (VaR) which can again be any period but also based on distributions such as Historical, Gaussian, Student-t, Cornish-Fisher, or a Peak-over-Threshold Extreme Value Theory (distribution="evt") fit for the tail.

# Get the weekly Value at Risk for all tickers
companies.risk.get_value_at_risk(period="weekly", within_period=True)

AAPL

MSFT

Benchmark

2023-09-25/2023-10-01

-0.0205

-0.0133

-0.0122

2023-10-02/2023-10-08

-0.0048

-0.0206

-0.0108

2023-10-09/2023-10-15

-0.0089

-0.0092

-0.0059

2023-10-16/2023-10-22

-0.0135

-0.0124

-0.0131

2023-10-23/2023-10-29

-0.0224

-0.0293

-0.0139

And below the Value at Risk (VaR) for Apple, Microsoft and the benchmark (S&P 500) are plotted also demonstrating the impact of COVID-19.

Beyond VaR/CVaR/Entropic VaR, the risk module covers around 20+ metrics in total, for example Conditional Drawdown at Risk, Maximum Drawdown Duration, EWMA Volatility and the Hurst Exponent. Most of these support rolling=<n> for a value that evolves through time instead of one number per period. Find the Notebook here and the full risk metric documentation here.

Obtaining Technical Indicators

Get the Ichimoku Cloud parameters based on the historical market data. This can be any of the 40+ technical indicators within the technicals module.

# Get the Ichimoku Cloud for all tickers
ichimoku_cloud = companies.technicals.get_ichimoku_cloud()

# Select the results for Apple
ichimoku_cloud.xs('AAPL', axis=1, level=1)

For example, see some of the parameters for Apple below:

Date

Base Line

Conversion Line

Leading Span A

Leading Span B

2023-10-30

174.005

171.755

176.245

178.8

2023-10-31

174.005

171.755

176.37

178.8

2023-11-01

174.005

170.545

176.775

178.8

2023-11-02

174.005

171.725

176.235

178.8

2023-11-03

174.005

171.725

175.558

178.8

And below the Ichimoku Cloud of the last twelve months is plotted for Apple and Microsoft, together with the closing price.

The 40+ indicators are divided into four categories: Breadth (McClellan Oscillator, Advancers/Decliners, OBV, ADL, Chaikin Oscillator, TRIN, New Highs - New Lows), Momentum (RSI, MACD, Stochastic, Williams %R, Aroon, CCI, ADX and more), Overlap (SMA, EMA, DEMA, TRIX, WMA, Hull MA, VWAP, Parabolic SAR, Pivot Points, Support/Resistance) and Volatility (ATR, Keltner Channels, Bollinger Bands, Donchian Channels, Volatility Cone). Find the Notebook here and the full technical indicator documentation here.

Obtaining Fixed Income Metrics

Get access to the ICE BofA Corporate Bond benchmark indices and a variety of other bond and derivative related valuations within the fixedincome module.

# Get the ICE BofA Effective Yield for each Credit Rating
companies.fixedincome.get_ice_bofa_effective_yield(maturity=False)

For example, see the Effective Yield for the ICE BofA Corporate Bond Index below for each Credit Rating:

Date

AAA

AA

A

BBB

BB

B

CCC

2024-04-19

0.0518

0.0532

0.0561

0.0594

0.0678

0.0804

0.1385

2024-04-22

0.0517

0.0532

0.056

0.0593

0.0671

0.0793

0.1377

2024-04-23

0.0514

0.0528

0.0556

0.0589

0.066

0.0777

0.1364

2024-04-24

0.0518

0.0531

0.0559

0.0592

0.0664

0.0778

0.1361

2024-04-25

0.0524

0.0537

0.0564

0.0598

0.0673

0.079

0.1368

And below the effective yield for each credit rating is plotted over time.

Beyond ICE BofA benchmarks, the fixedincome module covers Bond Valuations (Present Value, Macaulay/Modified Duration, Convexity, Yield to Maturity), Derivative Valuations (Black and Bachelier models for Swaptions), Government Bonds (3-month and 10-year yields) and Central Bank rates (Euribor, ECB and Federal Reserve rates incl. SOFR). It can be called via companies.fixedincome or standalone through from financetoolkit import FixedIncome. Find the Notebook here and the full fixed income documentation here.

Understanding Key Economic Indicators

Get insights for 60+ countries into key economic indicators such as the Consumer Price Index (CPI), Gross Domestic Product (GDP), Unemployment Rates and 3-month and 10-year Government Interest Rates. This is done through the economics module and can be used as a standalone module as well by using from financetoolkit import Economics.

# Get the Unemployment Rate for a selection of countries
companies.economics.get_unemployment_rate()

For example see a selection of the countries below:

Colombia

United States

Sweden

Japan

Germany

2017

0.093

0.0435

0.0686

0.0281

0.0357

2018

0.0953

0.039

0.0648

0.0244

0.0321

2019

0.1037

0.0367

0.0691

0.0235

0.0298

2020

0.1586

0.0809

0.0848

0.0278

0.0362

2021

0.1381

0.0537

0.0889

0.0282

0.0358

2022

0.1122

0.0365

0.0748

0.026

0.0307

And below these Unemployment Rates are plotted over time:

The 40+ indicators are divided into five categories: Government (GDP, government debt/revenue/expenditure/deficit, trust in government), Economy (CPI, inflation, consumer/business confidence, house/rent/share prices), Finance (money supply, central bank policy rate, short/long-term interest rates), Environment (renewable energy, carbon footprint) and Jobs & Society (unemployment, labour productivity, income inequality, population, poverty rate). Find the Notebook here and the full economic indicator documentation here.

Explore your own Portfolio

Through a custom XLSX, XLS or CSV file you are able to load in your own portfolio directly into the Finance Toolkit. This allows you to view your positions and performance (over time) versus a benchmark and other positions as well as your PnL development over time. Furthermore, the portfolio can be directly loaded in the core functionality of the Finance Toolkit as well making it possible to calculate all metrics and ratios for your portfolio (which is a time-weighted sum of all positions). The portfolio module is a standalone module and can be used as such by using from financetoolkit import Portfolio. Find the the full portfolio documentation here.


It is important to note that it requires a specific Excel template to work, see for further instructions the following notebook here.


from financetoolkit import Portfolio

# Initialize the Portfolio module with your own dataset
portfolio = Portfolio(example=True, api_key="FINANCIAL_MODELING_PREP_KEY")

# Get an overview of all positions
portfolio.get_positions_overview()

The table below shows one of the functionalities of the Portfolio module but is purposely shrunken down given the >30 assets.

Identifier

Volume

Costs

Price

Invested

Latest Price

Latest Value

Return

Return Value

Benchmark Return

Volatility

Benchmark Volatility

Alpha

Beta

Weight

AAPL

137

-28

38.9692

5310.78

241.84

33132.1

5.2386

27821.3

2.2258

0.3858

0.1937

3.0128

1.2027

0.0405

ALGN

81

-34

117.365

9472.53

187.03

15149.4

0.5993

5676.9

2.1413

0.5985

0.1937

-1.542

1.5501

0.0185

AMD

78

-30

11.9075

898.784

99.86

7789.08

7.6662

6890.3

3.7945

0.6159

0.1937

3.8718

1.6551

0.0095

AMZN

116

-28

41.5471

4791.46

212.28

24624.5

4.1392

19833

1.8274

0.4921

0.1937

2.3118

1.1594

0.0301

ASML

129

-25

33.3184

4273.07

709.08

91471.3

20.4065

87198.3

3.8005

0.4524

0.1937

16.606

1.4407

0.1119

VOO

77

-12

238.499

18352.5

546.33

42067.4

1.2922

23715

1.1179

0.1699

0.1937

0.1743

0.9973

0.0515

WMT

92

-18

17.8645

1625.53

98.61

9072.12

4.581

7446.59

2.4787

0.2334

0.1937

2.1024

0.4948

0.0111

Portfolio

2142

-532

59.8406

128710

381.689

817577

5.3521

688867

2.0773

0.4193

0.1937

3.2747

1.2909

1

In which the weights and returns can be depicted as follows:

Applying Econometric Techniques

The econometrics module provides regression, hypothesis testing, unit root and cointegration, Granger causality and panel data methods built on statsmodels and linearmodels. It requires the optional financetoolkit[econometrics] extra (pip install financetoolkit[econometrics]) and can be used via companies.econometrics.

# AAPL is the Toolkit's first ticker, so it's the default dependent ticker;
# every other ticker becomes the default independent set
companies.econometrics.get_ols(period="weekly")

Regressing Apple's returns on a mix of its chip suppliers, megacap peers and two unrelated names (Benchmark excluded) gives:

Coefficient

Std. Error

t-Statistic

P-Value

Intercept

0.0028

0.0017

1.6815

0.0943

TSM

-0.0054

0.0523

-0.1028

0.9182

QCOM

0.1432

0.0361

3.9717

0.0001

SWKS

0.2141

0.0484

4.4221

0.0000

MSFT

0.3036

0.0864

3.5144

0.0005

GOOGL

0.1448

0.0689

2.1015

0.0369

AMZN

0.0617

0.0529

1.1664

0.2448

META

-0.0132

0.0389

-0.3398

0.7343

NVDA

-0.0024

0.0415

-0.0575

0.9542

XOM

-0.0291

0.0373

-0.7799

0.4364

PG

0.2858

0.0707

4.0393

0.0001

And below each coefficient is shown with its 95% confidence interval, with stars marking how significant it is.

Only QCOM, SWKS, MSFT, GOOGL and PG come out statistically significant once every regressor is controlled for at once. The econometrics module covers 48 methods in total, including unit root tests (ADF, KPSS, Phillips-Perron), cointegration and Granger causality, panel data estimators (Fixed/Random Effects), causal inference (IV-2SLS, Difference-in-Differences, Regression Discontinuity, Propensity Score Matching, Synthetic Control) and time-series forecasting (ARIMA, VAR, VECM). Find the Notebook here and the full econometrics documentation here.

MCP Server

The Finance Toolkit MCP Server exposes 500+ financial methods directly to any AI assistant that supports the Model Context Protocol (MCP). Ask questions in plain English — the AI fetches live financial data on your behalf, backed by the transparent, open-source calculation methods of the Finance Toolkit.

See an example of the Finance Toolkit MCP server in action in Claude Desktop below:

https://github.com/user-attachments/assets/96ad5288-d83d-4497-a345-1841c48c29d5

Remote server

Connect directly to the hosted server at https://financetoolkit.jeroenbouma.com/mcp. Nothing needs to be installed locally. On first connection your client opens an OAuth consent page asking for your FMP API key; enter it once and the server handles authentication from there.

Client

Steps

Claude Desktop

Customize → Connectors → Add custom connector → paste the URL

Claude.ai

Customize → Connectors → Add custom connector → paste the URL

Claude Code

claude mcp add --transport http finance-toolkit https://financetoolkit.jeroenbouma.com/mcp

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-setup

For manual config, add the following to your client's MCP config file (e.g. claude_desktop_config.json, .cursor/mcp.json, .vscode/mcp.json):

{
  "mcpServers": {
    "finance-toolkit": {
      "command": "uvx",
      "args": ["--from", "financetoolkit[mcp]", "financetoolkit-mcp"],
      "env": { "FINANCIAL_MODELING_PREP_API_KEY": "YOUR_API_KEY_HERE" }
    }
  }
}

Alternatively, download the Finance Toolkit MCPB bundle and open it with Claude Desktop. An installation dialog will prompt for your FMP API key.

Questions & Answers

This section includes frequently asked questions and is meant to clear up confusion about certain results and/or deviations from other sources. If you have any questions that are not answered here, feel free to reach out to me via the contact details below.

How do you deal with companies that have different fiscal years?

For any financial statement, I make sure to line it up with the corresponding calendar period. For example, Apple's Q4 2023 relates to July to September of 2023. This corresponds to the calendar period Q3 which is why I normalize Apple's numbers to Q3 2023 instead. This is done to allow for comparison between companies that have different fiscal years.

Why do the numbers in the financial statements sometimes deviate from the data from FinancialModelingPrep?

When looking at a company such as Hyundai Motor Company (ticker: 005380.KS), you will notice that the financial statements are reported in KRW (South Korean won). As this specific ticker is listed on the Korean Exchange, the historical market data will also be reported in KRW. However, if you use the ticker HYMTF, which is listed on the American OTC market, the historical market data will be reported in USD. To deal with this discrepancy, the end of year or end of quarter exchange rate is retrieved which is used to convert the financial statements to USD. This is done to prevent ratio calculations such as the Free Cash Flow Yield (which is based on the market capitalization) or Price Earnings Ratio (which is based on the stock price) from being incorrect. This can be disabled by setting convert_currency=False in the Toolkit initialization. It is recommended to always use the ticker that is listed on the exchange where the company is based.

How can I get TTM (Trailing Twelve Months) and Growth metrics?

Most functions will have the option to define the trailing parameter. This lets you define the number of periods that you want to use to calculate the trailing metrics. For example, if you want to calculate the trailing 12-month (TTM) Price-to-Earnings Ratio, you can set trailing=4 when you have set quarterly=True in the Toolkit initialization. The same goes for growth metrics which can be calculated by setting growth=True. This will calculate the growth for each period based on the previous period. This also includes a lag parameter in which you can define lagged growth. Furthermore, you can also combine the trailing and growth parameters to get trailing growth. For example, set trailing=4 and growth=True for the Price-to-Earnings Ratio which will then calculate the TTM growth.

How can I save the data periodically so that I don't have to retrieve it every single time again?

The Toolkit has the option to work with cached data through use_cached_data=True when initializing the Toolkit class. Any data that comes from an external source (financial statements, historical prices, economic indicators, and so on) is then stored in a local SQLite database and reused on the next run. Anything the Toolkit calculates itself is never cached, it is always derived from that data on demand.

The cache keeps track of what it already holds per ticker and per date range, which means changing a parameter does not throw the rest away:

  • Repeating the same request retrieves nothing at all.

  • Widening the period only retrieves the years that were missing.

  • Adding a ticker only retrieves that one ticker.

By default the database lives in your user configuration directory, which is the same one the MCP server uses, so both share a single cache. You can also select a specific location by providing a string to the use_cached_data parameter, which will store the database in the provided folder.

To see what is currently stored, use toolkit.get_cache_contents(). It reports the entries grouped by source and dataset:

source

dataset

entities

entries

oldest_write

newest_write

FinancialModelingPrep

historical

2

2

2025-01-14 09:12:03

2025-01-14 09:12:05

FinancialModelingPrep

statements

2

2

2025-01-14 09:12:01

2025-01-14 09:12:02

The Finance Toolkit never clears the cache on its own, not even when its own internal structure changes. Removing data is always something you ask for explicitly with toolkit.clear_cache(), and it can be narrowed instead of wholesale:

# Remove only the price history of a single ticker
toolkit.clear_cache(source="FinancialModelingPrep", ticker="AAPL")

# Remove everything retrieved from the OECD
toolkit.clear_cache(source="OECD")

# Remove the entire cache, which has to be confirmed
toolkit.clear_cache(confirm=True)

The source names match the ones used by the enforce_source parameter, so "FinancialModelingPrep" and "YahooFinance" mean the same thing in both places.

What is the "Benchmark" that is automatically obtained when acquiring historical data?

This is related to the benchmark_ticker parameter which is set to "SPY" (S&P 500) by default. This is important when calculating performance metrics such as the Sharpe Ratio or Treynor Ratio that require a market return. This can be disabled by setting benchmark_ticker=None in the Toolkit initialization.

Data collection seems to be slow, what could be the issue?

Generally, it should take less than 15 seconds to retrieve the historical data of 100 tickers. If it takes much longer, this could be due to reaching the API limit (the Starter plan has 250 requests per minute), due to a slow internet connection or due to unoptimized code. The Finance Toolkit collects data with a bounded pool of worker threads (10 by default, configurable through the FINANCETOOLKIT_MAX_WORKERS environment variable) over a shared connection, so it is recommended to initialize the Toolkit with all tickers you want to analyze at once rather than one at a time. If it is taking 10+ minutes consider having a look at this issue that managed to resolve the problem.

Are you part of FinancialModelingPrep?

No, I am not. I've merely picked them as the primary data provider given that they have a generous free tier and fair pricing compared to other providers. Therefore, any questions related to the data should go through their contact form. When it comes to any type of ratios, performance metrics, risk metrics, technical indicators or economic indicators, feel free to reach out to me as this is my own work.

Contributing

First off all, thank you for taking the time to contribute (or at least read the Contributing Guidelines)! 🚀


Find the Contributing Guidelines here.


The goal of the Finance Toolkit is to make any type of financial calculation as transparent and efficient as possible. I want to make these type of calculations as accessible to anyone as possible and seeing how many websites exists that do the same thing (but instead you have to pay) gave me plenty of reasons to work on this.

Mentions

The Finance Toolkit has been mentioned in various blogposts, research papers, newsletters and social media. Below is a list of some of the mentions that I am aware of. If you have any other mentions, feel free to reach out to me so I can add them to this list.

Blogposts

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:

If you'd like to support my efforts, either help me out by contributing to the package or Sponsor Me.

Available Tools

26 tools
breadthA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lagNoNumber of periods to lag when computing growth rates.
growthNoReturn period-over-period growth rates instead of absolute values.
periodNoObservation frequency, e.g. 'monthly', 'quarterly', or 'annual'.daily
windowNoValue 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.
tickersNoComma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'.
end_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-02
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
quarterlyNoReturn quarterly data instead of annual when True.
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-03
long_windowNoValue for long_window.
standardizeNoReturn the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.
start_valueNoValue for start_value.
close_columnNoValue for close_column.Adj Close
short_windowNoValue for short_window.
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.
volume_divisorNoValue for volume_divisor.
long_ema_windowNoValue for long_ema_window.
benchmark_tickerNoTicker used as the market benchmark, e.g. 'SPY' or '^GSPC'.SPY
short_ema_windowNoValue for short_ema_window.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, openWorld), so the bar is lower, yet the description still adds real behavior: automatic price fetching, the tickers precondition, and that omitting the indicator returns the available-indicator list. It does not mention rate limits or the cost of the 19-parameter surface, but the added context is meaningful.

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

Conciseness4/5

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

Two short blocks, front-loaded with the domain and the auto-fetch behavior, followed by the indicator list. The indicator enumeration mirrors the enum but is reasonable given the tool's dispatch-style design; no filler sentences.

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

Completeness4/5

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

For a 19-parameter dispatcher with an output schema, the description covers the required selection (indicator), the data precondition (tickers), and the discovery behavior (omitting indicator lists options). Remaining details — window defaults, benchmark_ticker, show_columns — are fully specified in the schema, so nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so all 19 parameters are already documented with defaults (window defaults per indicator, standardize, growth, etc.). The description only restates the tickers comma-separated format and the indicator requirement, adding little beyond the schema — the baseline 3 for high coverage applies.

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

Purpose4/5

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

The description names the specific resource domain ('Market breadth technical indicators') and enumerates the exact indicator family it computes (McClellan, OBV, A/D, Chaikin), so an agent can tell it apart from momentum/volatility siblings by scope. It does not explicitly contrast itself with those siblings, which is the only thing keeping it from a 5.

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

Usage Guidelines3/5

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

It gives one genuinely useful routing hint ('Applied to price data automatically — no need to fetch prices first') and a precondition (tickers must be set). However it never says when to choose breadth versus momentum/volatility/performance siblings, so selection guidance is only implied.

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

discoveryA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoValue for date.
pageNoValue for page.
limitNoValue 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.
pagesNoValue for pages.
is_etfNoValue for is_etf.
sectorNoValue for sector.
countryNoValue for country.
exchangeNoValue for exchange.
industryNoValue for industry.
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
beta_lowerNoValue for beta_lower.
beta_higherNoValue for beta_higher.
price_lowerNoValue for price_lower.
price_higherNoValue for price_higher.
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.
volume_lowerNoValue for volume_lower.
volume_higherNoValue for volume_higher.
dividend_lowerNoValue for dividend_lower.
dividend_higherNoValue for dividend_higher.
market_cap_lowerNoValue for market_cap_lower.
market_cap_higherNoValue for market_cap_higher.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

econometricsB
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dNoValue for d.
pNoValue for p.
qNoValue 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.
tauNoValue for tau.
lagsNoValue 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.
lossNoValue for loss.squared
trimNoValue for trim.
modelNoValue for model.arima
omegaNoValue for omega. Leave unset to use the default of the indicator you selected. Required by: get_gls.
powerNoValue for power.
columnNoValue for column. Leave unset to use the default of the indicator you selected. Defaults differ between indicators.
cutoffNoValue for cutoff. Leave unset to use the default of the indicator you selected. Required by: get_regression_discontinuity.
kernelNoValue for kernel.uniform
periodNoObservation frequency, e.g. 'monthly', 'quarterly', or 'annual'.
caliperNoValue for caliper.
lambda_NoValue for lambda_.
max_lagNoValue 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.
maxlagsNoValue for maxlags.
periodsNoValue for periods.
tickersNoComma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'.
weightsNoValue for weights. Leave unset to use the default of the indicator you selected. Required by: get_wls.
clustersNoValue for clusters.
cov_typeNoValue for cov_type.nonrobust
end_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-02
gap_daysNoValue for gap_days.
method_aNoValue for method_a.ewma
method_bNoValue for method_b.rolling
bandwidthNoValue for bandwidth.
det_orderNoValue for det_order.
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
k_ar_diffNoValue for k_ar_diff.
quarterlyNoReturn quarterly data instead of annual when True.
break_dateNoValue for break_date. Leave unset to use the default of the indicator you selected. Required by: get_chow_test.
event_dateNoValue for event_date. Leave unset to use the default of the indicator you selected. Required by: get_event_study.
regressionNoValue for regression.c
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-03
n_bootstrapNoValue for n_bootstrap.
window_sizeNoValue for window_size.
add_constantNoValue for add_constant.
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.
significanceNoValue for significance.
time_effectsNoValue for time_effects.
asset_tickersNoValue for asset_tickers.
donor_tickersNoValue for donor_tickers.
other_tickersNoValue for other_tickers.
within_periodNoValue for within_period.
entity_effectsNoValue for entity_effects.
equal_varianceNoValue for equal_variance.
factor_tickersNoValue for factor_tickers.
forecast_stepsNoValue for forecast_steps.
orthogonalizedNoValue for orthogonalized.
pre_event_daysNoValue for pre_event_days.
suspect_tickerNoValue for suspect_ticker. Leave unset to use the default of the indicator you selected. Required by: get_hausman_wu_test.
train_fractionNoValue for train_fraction.
treated_tickerNoValue for treated_ticker. Leave unset to use the default of the indicator you selected. Required by: get_synthetic_control.
treatment_dateNoValue for treatment_date. Leave unset to use the default of the indicator you selected. Required by: get_difference_in_differences.
control_tickersNoValue for control_tickers.
post_event_daysNoValue for post_event_days.
treated_tickersNoValue for treated_tickers. Leave unset to use the default of the indicator you selected. Required by: get_difference_in_differences.
benchmark_tickerNoTicker used as the market benchmark, e.g. 'SPY' or '^GSPC'.SPY
dependent_tickerNoValue 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_constantNoValue for include_constant.
treatment_periodNoValue for treatment_period. Leave unset to use the default of the indicator you selected. Required by: get_synthetic_control.
treatment_tickerNoValue for treatment_ticker. Leave unset to use the default of the indicator you selected. Required by: get_propensity_score_matching.
covariate_tickersNoValue for covariate_tickers. Leave unset to use the default of the indicator you selected. Required by: get_propensity_score_matching.
dependent_tickersNoValue for dependent_tickers.
endogenous_tickerNoValue for endogenous_ticker. Leave unset to use the default of the indicator you selected. Required by: get_iv_2sls.
estimation_windowNoValue for estimation_window.
exogenous_tickersNoValue for exogenous_tickers.
include_benchmarkNoValue for include_benchmark.
independent_columnNoValue for independent_column.
instrument_tickersNoValue for instrument_tickers. Leave unset to use the default of the indicator you selected. Required by: get_hausman_wu_test, get_iv_2sls.
restriction_matrixNoValue for restriction_matrix. Leave unset to use the default of the indicator you selected. Required by: get_wald_test.
restriction_valuesNoValue for restriction_values.
independent_tickersNoValue for independent_tickers.
treatment_thresholdNoValue for treatment_threshold.
running_variable_tickerNoValue for running_variable_ticker. Leave unset to use the default of the indicator you selected. Required by: get_regression_discontinuity.
other_independent_tickersNoValue for other_independent_tickers.
restricted_independent_tickersNoValue 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_tickersNoValue 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

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the agent knows this is a safe, cached, external-data operation. The description adds no meaningful behavioral traits beyond what annotations provide — no mention of rate limits, data-source constraints, or output behavior. With annotations covering the safety profile, a 3 is appropriate for adding little extra context.

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

Conciseness4/5

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

The first sentence front-loads the test taxonomy, and the second sentence provides usage context and a key parameter example. However, the 48-item 'Available indicators' list is a repetitive dump of the enum already present in the schema, adding noise and length without new information.

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

Completeness3/5

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

Given a tool with 80 parameters and 48 sub-indicators, the description is surprisingly thin on how to select the correct indicator and which parameter combinations matter. It doesn't cover rate limits, data availability, or output format, though an output schema exists. More context on indicator selection and parameter interactions would be needed for an agent to call this correctly without trial and error.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 80 parameters, including indicator-specific defaults and required-by relationships. The description only restates the tickers='AAPL' format, adding marginal value beyond what the schema provides, so baseline 3 applies.

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

Purpose4/5

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

The opening clause names a specific set of statistical tests (unit root, cointegration, Granger causality, ARCH-LM, etc.) on price or return series, which is a specific verb+resource. However, it does not explicitly differentiate from siblings like 'models' or 'performance' that could also involve returns, though the test taxonomy is reasonably distinctive.

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

Usage Guidelines3/5

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

It provides a use case ('pairs-trading/spread-modeling foundations or diagnosing return-series properties') and a required-parameter instruction ('Requires tickers=...'), but there are no explicit when-not-to-use or alternative tool comparisons. The 48-indicator list is a menu, not guidance on selection.

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

efficiencyA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lagNoNumber of periods to lag when computing growth rates.
daysNoNumber of calendar days used in day-count-based calculations.
growthNoReturn period-over-period growth rates instead of absolute values.
tickersNoComma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'.
end_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-02
trailingNoTrailing 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.
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
quarterlyNoReturn quarterly data instead of annual when True.
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-03
standardizeNoReturn the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.
benchmark_tickerNoTicker used as the market benchmark, e.g. 'SPY' or '^GSPC'.SPY

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds operational context such as ticker formatting and indicator availability, but does not disclose rate limits, auth requirements, or other behavioral traits. It also states tickers are required despite the schema marking tickers optional, which may mislead.

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

Conciseness3/5

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

The description is front-loaded with purpose and key usage notes, which is good. However, the long list of available indicators duplicates the enum already present in the schema, bloating the description without adding new information.

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

Completeness4/5

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

Given the rich input schema (100% coverage), output schema, and annotations, the description covers the core purpose, indicator selection, and main optional parameters sufficiently. The many advanced parameters are documented in the schema, so the description does not need to repeat them, though the ticker requirement inconsistency is a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, so parameter meanings are already fully documented. The description mostly repeats enum values and comma-separated ticker syntax, though it does add a useful 'use instead of raw financial statements' framing. The claim that tickers are required conflicts with the schema and reduces added value.

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

Purpose4/5

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

The description names the resource category (pre-computed efficiency ratios) and gives concrete examples such as asset turnover and cash conversion cycle. It distinguishes itself from raw financial statements, but does not explicitly differentiate from sibling category tools like profitability or liquidity.

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

Usage Guidelines4/5

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

It states a key use case: 'Use instead of raw financial statements,' and documents required ticker formatting and supported parameters like quarterly and start_date/end_date. It lacks explicit when-not guidance or comparisons to sibling ratio tools, but the intended context is clear.

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

environmentA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lagNoNumber of periods to lag when computing growth rates.
growthNoReturn period-over-period growth rates instead of absolute values.
rollingNoRolling 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.
tickersNoComma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'.
end_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-02
trailingNoTrailing 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.
countriesNoComma-separated country names, e.g. 'United States,Germany,Japan'.
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
quarterlyNoReturn quarterly data instead of annual when True.
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-03
standardizeNoReturn the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.
benchmark_tickerNoTicker used as the market benchmark, e.g. 'SPY' or '^GSPC'.SPY

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds useful dispatch behavior (tickers vs countries, indicator acting as a sub-selector) but says nothing about pagination, date-range defaults, or result-shaping behavior beyond what the schema already documents.

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

Conciseness4/5

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

Three short sentences, front-loaded with the domain and immediately followed by the parameter-routing rules and the indicator list. Minimal waste; the indicator enumeration is somewhat redundant with the enum in the schema but aids quick scanning.

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

Completeness4/5

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

With an output schema present, return-value detail is unnecessary, and the 13-parameter schema is fully self-documented. The description covers the essential decision (which of the three indicators and which entity parameter), leaving only minor gaps around date defaults and smoothing behavior that the schema handles.

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

Parameters4/5

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

Although schema coverage is 100%, the description adds cross-parameter semantics the schema cannot express: tickers= applies to ESG scores while countries= applies to carbon/renewable indicators, and it highlights that this tool uniquely accepts both. That is meaningfully more than the per-field descriptions provide.

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

Purpose4/5

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

The description opens with a specific domain statement ('Environmental and ESG data') and enumerates the three indicators the tool exposes, so an agent knows this is ESG/carbon/renewables, not general financial data. It does not explicitly contrast with sibling categories like macroeconomics or market_data, but the domain is unmistakable.

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

Usage Guidelines4/5

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

It gives concrete usage conditions: 'For ESG scores use tickers=...', 'For carbon footprint and renewable energy use countries=...', and notes rolling/trailing support. This is real routing guidance that maps indicator to parameter, though it never names an alternative sibling tool or states when NOT to use this one.

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

fixed_incomeA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
guessNoValue 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.
modelNoValue for model.black
tenorNoValue for tenor.
end_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-02
maturityNoValue for maturity.
notionalNoValue for notional.
countriesNoComma-separated country names, e.g. 'United States,Germany,Japan'.
frequencyNoValue for frequency.
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
par_valueNoValue for par_value.
quarterlyNoReturn quarterly data instead of annual when True.
toleranceNoValue for tolerance.
bond_priceNoClean price of the bond per 100 face value.
real_ratesNoValue for real_rates.
spot_ratesNoValue for spot_rates.
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-03
volatilityNoValue for volatility.
coupon_rateNoAnnual coupon rate as a decimal, e.g. 0.05 for 5 %. Leave unset to use the default of the indicator you selected. Defaults are 0.05 for get_key_rate_duration, get_yield_to_maturity, get_z_spread; None for get_duration, get_present_value, get_taylor_price_change.
is_receiverNoValue for is_receiver.
strike_rateNoOption strike price.
far_maturityNoValue for far_maturity.
forward_rateNoValue for forward_rate.
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.
yield_changeNoValue 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_typeNoValue for duration_type.modified
long_maturityNoValue for long_maturity.
near_maturityNoValue for near_maturity.
nominal_ratesNoValue for nominal_rates.
discount_yieldNoValue for discount_yield.
include_payoffNoValue for include_payoff.
max_iterationsNoValue for max_iterations.
risk_free_rateNoValue for risk_free_rate.
short_maturityNoValue for short_maturity.
show_input_infoNoValue for show_input_info.
volatility_typeNoValue for volatility_type.
days_to_maturityNoValue for days_to_maturity.
key_rate_maturityNoValue for key_rate_maturity.
payment_frequencyNoValue for payment_frequency.
years_to_maturityNoYears remaining until the bond matures.
yield_to_maturityNoValue for yield_to_maturity.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds that parameters are passed directly without tickers or countries, which is helpful behavioral context, but it does not disclose anything further about execution, error handling, or output behavior beyond what the output schema provides.

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

Conciseness4/5

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

The description is front-loaded with the scope and the 'no tickers' caveat, then lists available indicators, which is reasonable for a gateway tool. It is somewhat repetitive because it names metrics in the opening parenthesis and again in the explicit indicator list, but that redundancy helps map human-readable concepts to exact enum values.

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

Completeness4/5

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

Given 40 parameters, an output schema, and read-only/idempotent annotations, the description covers the essential calling context: the domain, the required indicator concept, and the direct-argument usage style. It does not explain which parameters apply to which indicator, but that detail is largely available in the schema and output schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the structured schema already documents all 40 parameters, setting the baseline at 3. The description adds only a general note that bond/derivative parameters like face_value, coupon_rate, maturity, and spot_rates should be supplied directly, which is marginally useful but does not meaningfully extend parameter semantics beyond the schema.

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

Purpose4/5

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

The description names a specific domain (bond and derivative valuation) and enumerates twelve concrete calculations, so an agent can tell it apart from generic siblings like valuation or risk. However, it does not explicitly differentiate itself from potentially overlapping siblings such as options or rates, which limits it from a 5.

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

Usage Guidelines3/5

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

It gives one useful usage note ('No tickers or countries needed — provide bond/derivative parameters directly as arguments') and lists available indicators, which implies when the tool is relevant. But it provides no explicit when-to-use or when-not-to-use guidance relative to the many sibling category tools.

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

governmentA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lagNoNumber of periods to lag when computing growth rates.
growthNoReturn period-over-period growth rates instead of absolute values.
rollingNoRolling 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_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-02
trailingNoTrailing 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.
countriesNoComma-separated country names, e.g. 'United States,Germany,Japan'.
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
quarterlyNoReturn quarterly data instead of annual when True.
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-03
standardizeNoReturn the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered. The description adds operationally important context beyond that: the tickers= prohibition, the countries-required constraint, and how rolling/trailing transform the returned series (moving average vs trailing sum). It stops short of describing return shape, which is acceptable given an output schema exists.

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

Conciseness4/5

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

Front-loaded with purpose and hard constraints before the indicator enumeration; every sentence carries practical information. The enumerated indicator list is somewhat redundant with the schema enum, costing a little conciseness.

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

Completeness4/5

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

For an 11-parameter tool with an output schema, the description covers the non-obvious constraints (countries required, no tickers, quarterly/rolling/trailing behavior). Remaining params (lag, growth, standardize, show_columns) are adequately documented in the schema, so nothing critical is missing for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so baseline would be 3, but the description adds real meaning: it warns that countries is effectively required despite the schema default of empty string, and clarifies the rolling (smoothing) vs trailing (N-period sum) distinction with a concrete quarterly example. The indicator list merely duplicates the enum, which does not earn extra credit.

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

Purpose5/5

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

States a specific resource class (government fiscal metrics by country) and enumerates the exact metrics available, so an agent can immediately see this covers debt/deficit/expenditure/revenue/tax/trust rather than generic macro data. It is clearly distinguishable from siblings like macroeconomics, rates, and fixed_income.

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

Usage Guidelines4/5

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

Gives concrete usage rules: countries must be specified (with a literal example), do NOT use tickers=, and how to enable quarterly/rolling/trailing. It does not, however, say when to prefer this tool over sibling tools such as macroeconomics or rates, so routing among siblings is left partly to inference.

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

jobsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lagNoNumber of periods to lag when computing growth rates.
growthNoReturn period-over-period growth rates instead of absolute values.
periodNoObservation frequency, e.g. 'monthly', 'quarterly', or 'annual'.
rollingNoRolling 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_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-02
trailingNoTrailing 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.
countriesNoComma-separated country names, e.g. 'United States,Germany,Japan'.
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
quarterlyNoReturn quarterly data instead of annual when True.
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-03
gmdb_sourceNoUse 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.
standardizeNoReturn the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the read-only/idempotent profile, and the description adds non-obvious behavior beyond them: two indicators require a FRED API key and return only a 'United States' column regardless of countries=, and gmdb_source switches to an independent provider with different coverage. That is meaningful operational context the annotations do not supply.

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

Conciseness5/5

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

It is front-loaded with the resource and the hard 'countries=' requirement, then the indicator list, and closes with the FRED caveat. The only mild redundancy is restating rolling/trailing behavior already in the schema, but the density is justified for a 13-parameter tool.

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

Completeness4/5

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

With an output schema present, return formatting need not be explained, and the description covers the indicator set, source caveats, auth requirement and parameter behaviors. It is close to complete; adding a note on default date range behavior or the FRED-key failure mode would close the remaining gap.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents lag, growth, period, rolling, trailing, dates, countries, quarterly, standardize and show_columns. The description reinforces rolling/trailing semantics and the countries requirement but adds no syntax or format detail beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

The description states a specific resource ('Labour and social metrics by country') and enumerates the exact indicators available, so the agent knows what content lives behind the generic name 'jobs'. It also draws a boundary against ticker-based tools ('Do NOT use tickers='), though it does not distinguish itself from close siblings like 'macroeconomics' or 'government'.

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

Usage Guidelines4/5

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

It gives explicit usage constraints: 'Requires countries=United States', comma-separated multi-country syntax, and an exclusion ('Do NOT use tickers= for this tool'). What it lacks is guidance on when to prefer this tool over the government/macroeconomics siblings, so it is clear context without full routing logic.

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

liquidityA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lagNoNumber of periods to lag when computing growth rates.
daysNoNumber of calendar days used in day-count-based calculations.
growthNoReturn period-over-period growth rates instead of absolute values.
tickersNoComma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'.
end_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-02
trailingNoTrailing 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.
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
quarterlyNoReturn quarterly data instead of annual when True.
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-03
standardizeNoReturn the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.
benchmark_tickerNoTicker used as the market benchmark, e.g. 'SPY' or '^GSPC'.SPY

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds that values are pre-computed and lists the supported indicators, but says nothing about response shape, empty results, or rate/coverage limits. Adequate, not rich.

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

Conciseness4/5

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

Front-loaded with the resource and metric list, then usage notes, then indicators. Tight overall, though the indicator enumeration largely duplicates the schema enum and costs tokens the schema already spends.

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

Completeness4/5

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

With an output schema present and full parameter descriptions, the description needn't explain returns; it covers the primary tickers/date/quarterly controls. Slight gap: it asserts 'Requires tickers=...' while the schema marks tickers optional with a default and only 'indicator' required, which could mislead a caller.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains lag, days, growth, trailing, standardize, show_columns, and benchmark_ticker. The description merely echoes tickers/quarterly/start_date/end_date, adding no syntax or semantics beyond the structured fields — the baseline 3.

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

Purpose5/5

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

States a specific verb+resource ('Pre-computed liquidity ratios') and enumerates the exact metrics covered, which cleanly separates it from siblings like solvency, profitability, and efficiency. An agent can select it without opening the enum.

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

Usage Guidelines4/5

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

Gives a clear 'use instead of raw financial statements' routing rule plus ticker and date-range usage notes, but never frames when to prefer this over the sibling ratio families (solvency, profitability) that an agent is choosing among. Context is present, exclusions are not.

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

macroeconomicsA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
lagNoNumber of periods to lag when computing growth rates.
growthNoReturn period-over-period growth rates instead of absolute values.
periodNoObservation frequency, e.g. 'monthly', 'quarterly', or 'annual'.
measureNoSub-measure selector, e.g. 'M1', 'M2', or 'M3' for money supply.
rollingNoRolling 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_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-02
trailingNoTrailing 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.
commodityNoValue for commodity. Leave unset to use the default of the indicator you selected. Required by: get_commodity_forward_curve.
contractsNoValue for contracts.
countriesNoComma-separated country names, e.g. 'United States,Germany,Japan'.
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
quarterlyNoReturn quarterly data instead of annual when True.
rate_typeNoValue for rate_type.long_term
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-03
gmdb_sourceNoUse 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_sourceNoValue for oecd_source.
standardizeNoReturn the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.
inflation_adjustedNoAdjust nominal values for inflation when True.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/openWorldHint, so the safety profile is covered; the description goes further by disclosing the FRED API-key dependency, that those indicators return only a 'United States' column regardless of countries=, that OECD vs GMDB are independent providers with different coverage, and that the forward curve returns dated futures contracts rather than a country series. The truncated trailing sentence leaves some behavioral description incomplete.

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

Conciseness2/5

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

The opening parenthetical enumerates dozens of indicators already present verbatim in the indicator enum, which is pure duplication, and the single enormous run-on sentence buries the most actionable guidance (source toggles, exclusions) mid-text. It also cuts off mid-sentence, so it is oversized and poorly front-loaded simultaneously.

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

Completeness4/5

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

With an output schema present, return-value explanation is unnecessary, and the description covers the high-risk gotchas for a 19-parameter mega-tool: required argument format, source switching, special-cased indicators, and the API-key caveat. Only the truncated final sentence leaves an evident gap.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine cross-parameter semantics: the countries= format, that commodity= replaces countries= for one indicator, that tickers= is invalid here, and how rolling/trailing alter the returned series. These constraints are not fully expressible in the flat schema.

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

Purpose4/5

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

States the verb+resource clearly ('Macroeconomic indicators by country') and enumerates the covered indicator families, plus calls out special cases like the commodity forward curve. However, the purpose statement is padded with a sprawling parenthetical list that duplicates the schema enum rather than crisply characterizing the tool, and the text is truncated mid-sentence.

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

Usage Guidelines5/5

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

Explicit operational routing: countries='United States' is required, 'Do NOT use tickers= for this tool', get_commodity_forward_curve needs commodity= instead of countries=, and get_consumer_price_index switches sources via oecd_source=true. It also flags the six US-only FRED-backed indicators and their API-key requirement, all of which steer correct invocation.

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

market_dataA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lagNoNumber of periods to lag when computing growth rates.
growthNoReturn period-over-period growth rates instead of absolute values.
periodNoObservation 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.
tickersNoComma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'.
end_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-02
fill_nanNoValue for fill_nan.
trailingNoTrailing 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.
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
quarterlyNoReturn quarterly data instead of annual when True.
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-03
show_errorsNoValue for show_errors.
actual_datesNoValue for actual_dates.
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.
return_columnNoValue 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_byNoValue for divide_ohlc_by.
enforce_sourceNoValue for enforce_source.
risk_free_rateNoValue for risk_free_rate.
benchmark_tickerNoTicker used as the market benchmark, e.g. 'SPY' or '^GSPC'.SPY
include_dividendsNoValue for include_dividends.
show_ticker_seperationNoValue for show_ticker_seperation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safe-read profile is covered. The description adds genuinely non-obvious behavior: the ticker requirement and the fact that two indicators are ticker/country-agnostic snapshots that silently ignore most other parameters. It does not discuss rate limits or response size limits beyond the show_columns tip.

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

Conciseness4/5

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

Purpose and routing rule are front-loaded in the first two sentences, and the special-case note follows. The trailing 'Available indicators' list duplicates the enum already in the schema verbatim, which is wasted length, though it does aid quick scanning.

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

Completeness4/5

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

For a 20-parameter aggregator with an output schema, the description covers routing, prerequisites, and the notable indicator quirks. The gaps are the opaque placeholder parameters, which neither the description nor the schema explains, but the presence of an output schema means return values need not be described here.

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

Parameters4/5

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

Schema description coverage is 100%, so the per-parameter baseline is 3. The description adds cross-parameter semantics the schema does not: the required tickers format, the conditional irrelevance of parameters for two indicators, and the show_columns workflow for reducing token usage. It does not clarify the many placeholder parameters (fill_nan, show_errors, enforce_source, divide_ohlc_by), which remain 'Value for X' in the schema.

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

Purpose5/5

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

The description names a concrete resource (raw financial data) and enumerates the data families it covers (prices, statements, profile, quotes, calendars, COT report). It explicitly distinguishes itself from the sibling family of computed-metric tools ('for pre-computed ratios, performance, risk, or model metrics use the dedicated tools instead'), so an agent can route without opening the schema.

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

Usage Guidelines5/5

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

It gives an explicit when-to-use ('ONLY for raw data needs') and a when-not with the alternative class of tools to use instead. It also states the hard prerequisite (tickers='AAPL', comma-separated) and the edge case that get_market_risk_premium and get_commitment_of_traders ignore most other parameters.

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

modelsB
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lagNoNumber of periods to lag when computing growth rates.
growthNoReturn period-over-period growth rates instead of absolute values.
dilutedNoValue for diluted.
periodsNoValue for periods.
tickersNoComma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'.
end_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-02
trailingNoTrailing 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.
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
quarterlyNoReturn quarterly data instead of annual when True.
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-03
growth_rateNoAssumed 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.
standardizeNoReturn the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.
cash_flow_typeNoValue for cash_flow_type.Free Cash Flow
rate_of_returnNoValue 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_dailyNoValue for calculate_daily.
project_periodsNoValue for project_periods.
benchmark_tickerNoTicker used as the market benchmark, e.g. 'SPY' or '^GSPC'.SPY
high_growth_rateNoValue for high_growth_rate. Leave unset to use the default of the indicator you selected. Required by: get_two_stage_dividend_discount_model.
include_dividendsNoValue for include_dividends.
show_full_resultsNoValue for show_full_results.
stable_growth_rateNoValue 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_periodsNoValue for high_growth_periods.
perpetual_growth_rateNoTerminal (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_capitalNoWACC 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

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered and the description only needs to add non-obvious behavior. It adds that resolution is per-indicator and that several inputs are optional, but not much beyond the schema. It also asserts 'Requires tickers=AAPL' while the schema marks only indicator as required, which is a mild inconsistency with structured data.

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

Conciseness3/5

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

The opening sentence is well front-loaded and the usage line is terse. The 'Available indicators:' block duplicates the indicator enum wholesale, which is pure token bloat in the tool description for a 25-param tool, though it does map human-readable model names to the enum values.

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

Completeness3/5

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

An output schema exists so return values need no explanation, and annotations cover the safety profile. For a 25-parameter tool, however, the description only covers four inputs and leaves many vaguely documented parameters (periods, diluted, show_full_results, cash_flow_type) to the schema, and does not differentiate this tool from the valuation sibling.

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

Parameters3/5

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

Schema description coverage is 100% and 1 of 25 parameters carries an enum, so the schema does the heavy lifting; baseline is 3. The description restates tickers/quarterly/start_date/end_date semantics that already exist verbatim in the schema and adds no new meaning for the many bare 'Value for X' parameters.

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

Purpose4/5

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

Names a specific resource (pre-computed financial models) and enumerates the concrete metrics it produces (WACC, DuPont, DCF, Altman Z-Score, etc.), so an agent knows exactly what family of computations this covers. It does not, however, differentiate itself from siblings like valuation or profitability, which overlap with several of the listed indicators.

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

Usage Guidelines3/5

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

Gives operational usage for the main inputs (tickers comma-separated, quarterly=true, start_date/end_date), which is real guidance for calling it. It never states when to prefer this tool over the valuation/solvency/profitability siblings, so the routing decision between overlapping tools is left to inference.

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

momentumB
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lagNoNumber of periods to lag when computing growth rates.
growthNoReturn period-over-period growth rates instead of absolute values.
periodNoObservation frequency, e.g. 'monthly', 'quarterly', or 'annual'.daily
windowNoValue for window. Leave unset to use the default of the indicator you selected. Defaults differ between indicators.
tickersNoComma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'.
weightsNoValue for weights.
constantNoValue for constant.
end_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-02
window_1NoValue for window_1.
window_2NoValue for window_2.
window_3NoValue for window_3.
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
quarterlyNoReturn quarterly data instead of annual when True.
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-03
base_windowNoValue for base_window.
long_windowNoValue 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_windowsNoValue for roc_windows.
sma_windowsNoValue for sma_windows.
standardizeNoReturn the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.
close_columnNoValue for close_column.Adj Close
short_windowNoValue 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_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.
signal_windowNoValue for signal_window.
smooth_windowNoValue for smooth_window.
benchmark_tickerNoTicker used as the market benchmark, e.g. 'SPY' or '^GSPC'.SPY
conversion_windowNoValue for conversion_window.
lead_span_b_windowNoValue for lead_span_b_window.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered. The description usefully adds that price data is applied automatically and that tickers/indicator are the driving inputs, but says nothing about output shape, latency, rate limits, or what the many window parameters do per indicator.

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

Conciseness3/5

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

The opening two sentences are well front-loaded and earn their place. The trailing list of 22 indicator names duplicates the enum already present in the schema verbatim, adding bulk without new information.

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

Completeness3/5

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

For a 27-parameter tool with a full output schema, the description covers the essential contract (indicator selection plus tickers) but leaves the interaction between indicator choice and the numerous window parameters entirely to the schema. It is adequate but does not reduce the trial-and-error of configuring per-indicator windows.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 27 parameters, and the description is not obliged to compensate. It reinforces only the tickers and indicator parameters, adding the comma-separated multi-ticker convention, which is marginally helpful but below the schema's own detail level.

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

Purpose4/5

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

The first sentence names a specific resource ('momentum technical indicators') and enumerates the families (RSI, MACD, Stochastic, Williams %R, Aroon), so an agent knows it is the technical-indicator calculator rather than a raw price fetcher. It stops short of distinguishing itself from siblings like volatility or market_data, which also deal with price series.

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

Usage Guidelines3/5

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

It gives concrete invocation guidance ('Requires tickers="AAPL"', comma-separated for multiples) and notes that prices are fetched automatically. It never says when to prefer this over volatility, models, or market_data, nor when-not to use it, so selection guidance is only implied.

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

optionsC
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
legsNoValue for legs. Leave unset to use the default of the indicator you selected. Required by: get_strategy_payoff.
seedNoValue for seed.
rebateNoValue for rebate.
tickersNoComma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'.
end_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-02
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
quarterlyNoReturn quarterly data instead of annual when True.
timestepsNoValue for timesteps.
knock_typeNoValue for knock_type.out
put_optionNoValue for put_option.
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-03
time_stepsNoValue for time_steps.
cash_payoutNoValue for cash_payout.
option_typeNoValue for option_type.cash-or-nothing
simulationsNoValue for simulations.
standardizeNoReturn the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.
dividend_yieldNoValue for dividend_yield.
risk_free_rateNoValue for risk_free_rate.
american_optionNoValue for american_option.
expiration_dateNoValue for expiration_date.
show_input_infoNoValue for show_input_info.
benchmark_tickerNoTicker used as the market benchmark, e.g. 'SPY' or '^GSPC'.SPY
expiration_datesNoValue for expiration_dates.
strike_step_sizeNoValue for strike_step_size.
barrier_directionNoValue for barrier_direction.down
number_of_strikesNoValue for number_of_strikes.
outlier_thresholdNoValue for outlier_threshold.
stock_price_rangeNoValue for stock_price_range.
barrier_percentageNoValue for barrier_percentage.
strike_price_rangeNoValue for strike_price_range. Leave unset to use the default of the indicator you selected. Defaults differ between indicators.
time_to_expirationNoValue for time_to_expiration.
show_standard_errorNoValue for show_standard_error.
expiration_time_rangeNoValue for expiration_time_range.
number_of_expirationsNoValue for number_of_expirations.
show_expiration_datesNoValue for show_expiration_dates.
stock_price_step_sizeNoValue for stock_price_step_size.
foreign_risk_free_rateNoValue for foreign_risk_free_rate.
show_unique_combinationsNoValue for show_unique_combinations.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds nothing behavioral beyond annotations — no mention of data-source/auth requirements, compute cost for Monte Carlo or simulation indicators, or what happens when an indicator's params are omitted.

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

Conciseness2/5

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

The purpose sentence is front-loaded and useful, but roughly half the text is a verbatim re-listing of the 33 enum values already in the schema. That duplication inflates the description without adding selection-relevant information, which is a significant structural waste.

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

Completeness2/5

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

For a dispatcher exposing 39 parameters and 33 indicators with an output schema present, the description never explains how the parameter set maps to individual indicators — an agent must infer from scattered schema hints which of the 39 params matter for a chosen indicator. The critical per-indicator parameter guidance is absent from the description.

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

Parameters3/5

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

Schema description coverage is 100% across 39 parameters, so baseline is 3. The description's ticker-format note ('comma-separated values for multiple tickers') merely restates the schema's own text, and the indicator list duplicates the enum, adding no semantic depth about which params apply to which indicator.

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

Purpose4/5

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

The description names the resource (option pricing and Greeks) and enumerates the model families it covers (Black-Scholes, binomial tree, implied volatility), so the domain is unambiguous. It does not differentiate itself from siblings like volatility, models, or econometrics, which partly overlap this territory.

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

Usage Guidelines2/5

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

The only usage guidance is a prerequisite ('Requires tickers="AAPL"'), which is already documented in the schema. There is no statement of when to select this tool over volatility/models, and no guidance on choosing among the 33 registered indicators beyond listing their names.

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

overlapB
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lagNoNumber of periods to lag when computing growth rates.
trendNoValue for trend.uptrend
af_maxNoValue for af_max.
growthNoReturn period-over-period growth rates instead of absolute values.
levelsNoValue for levels.
periodNoObservation frequency, e.g. 'monthly', 'quarterly', or 'annual'.daily
windowNoValue for window. Leave unset to use the default of the indicator you selected. Defaults differ between indicators.
tickersNoComma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'.
af_startNoValue for af_start.
end_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-02
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
quarterlyNoReturn quarterly data instead of annual when True.
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-03
fast_windowNoValue for fast_window.
sensitivityNoValue for sensitivity.
slow_windowNoValue for slow_window.
standardizeNoReturn the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.
af_incrementNoValue for af_increment.
close_columnNoValue for close_column.Adj Close
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.
benchmark_tickerNoTicker used as the market benchmark, e.g. 'SPY' or '^GSPC'.SPY

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, and openWorld, so the safety profile is covered. The description adds useful context that prices are fetched automatically and tickers accept comma-separated values. It adds nothing about how indicator-specific parameters behave or what happens with unknown tickers.

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

Conciseness4/5

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

Front-loaded with the core purpose and the two operational facts that matter (auto price fetch, tickers syntax). Reasonably tight, though the full enumeration of 13 indicator names duplicates the schema enum and consumes tokens without new information.

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

Completeness3/5

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

A 21-parameter tool with only 1 required parameter is complex, and the description leaves the relationship between parameters and the chosen indicator unexplained (e.g., that af_start/af_increment/af_max apply only to get_parabolic_sar, or that window defaults differ per indicator). The output schema covers return values, so that omission is acceptable, but the parameter-to-indicator mapping gap is significant.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 21 parameters, including tickers formatting and the indicator enum. The description only repeats the tickers format and lists the indicator values verbatim, adding no meaning beyond the structured fields (e.g., which params apply to which indicator).

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

Purpose4/5

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

States a specific verb+resource combination: computing overlapping technical indicators (SMA, EMA, Bollinger, Keltner) on price data. The category name 'overlap' is TA jargon, but the parenthetical examples make the intent concrete. It does not distinguish itself from category siblings like momentum or volatility, which also compute indicators.

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

Usage Guidelines3/5

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

Gives some framing ('applied to price data automatically — no need to fetch prices first') and usage syntax for tickers, which implies how to call it. But it never says when to pick this over momentum/volatility/performance or other indicator categories, and it falsely asserts tickers is required when the schema lists only 'indicator' as required.

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

performanceA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
lagNoNumber of periods to lag when computing growth rates.
alphaNoValue for alpha.
orderNoValue for order.
growthNoReturn period-over-period growth rates instead of absolute values.
methodNoValue 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.
periodNoObservation frequency, e.g. 'monthly', 'quarterly', or 'annual'.
rollingNoRolling 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.
tickersNoComma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'.
end_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-02
n_trialsNoValue for n_trials.
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
quarterlyNoReturn quarterly data instead of annual when True.
adjustmentNoValue for adjustment.
cumulativeNoReturn 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_dateNoStart of the date range in YYYY-MM-DD format.2021-10-03
standardizeNoReturn the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.
trials_windowNoValue for trials_window.
within_periodNoValue for within_period.
benchmark_tickerNoTicker used as the market benchmark, e.g. 'SPY' or '^GSPC'.SPY
exclude_risk_freeNoValue for exclude_risk_free.
show_full_resultsNoValue for show_full_results.
factors_to_calculateNoComma-separated factor names to include in the calculation.
benchmark_sharpe_ratioNoValue for benchmark_sharpe_ratio.
include_daily_residualsNoValue for include_daily_residuals.
minimum_acceptable_returnNoThe minimum acceptable return (MAR) threshold below which returns are considered downside, e.g. 0.0 for downside relative to a zero return.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, open-world, so the safety profile is covered. The description adds meaningful behavior beyond that: the unsupported 'daily' period, cumulative compounding rebased to 1, rolling=N spanning full history, and multi-ticker support. It does not describe rate limits or failure modes, but for a read-only metric tool this is solid added context.

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

Conciseness3/5

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

The core prose is dense and front-loaded, but the trailing 'Available indicators:' list duplicates the indicator enum already present in the schema, consuming tokens for no new information. The middle paragraph is efficiently packed.

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

Completeness4/5

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

With 26 parameters and an output schema present, the description need not explain return shapes, and it correctly focuses on the required indicator plus cross-cutting flags. It leaves some generic params (alpha, order, n_trials, trials_window, adjustment) unexplained, but these are largely niche, so the definition is reasonably complete for a dispatch-style metric tool.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds real semantics the schema does not: cumulative compounding/rebasing behavior, the rolling-window meaning (e.g. monthly + rolling=6), and the tickers multi-value convention. It is above baseline because it clarifies cross-parameter interaction, not just restating individual fields.

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

Purpose4/5

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

The description states a specific verb class (computes) and resource (pre-computed risk-adjusted performance metrics) and enumerates the covered measures: Sharpe, Sortino, Alpha, Beta, CAPM, Treynor, Tracking Error, Information Ratio, Fama-French, etc. That is enough for an agent to distinguish it from siblings like volatility or momentum, though it never explicitly names a competing tool.

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

Usage Guidelines3/5

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

It gives parameter-level usage rules (tickers='AAPL' required, comma-separated for multiple, period='daily' not supported, cumulative=true rebases to 1), which is real guidance. However it offers no when-to-use/when-not guidance relative to sibling tools such as volatility or risk, so routing is left to inference.

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

profitabilityA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lagNoNumber of periods to lag when computing growth rates.
growthNoReturn period-over-period growth rates instead of absolute values.
tickersNoComma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'.
end_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-02
trailingNoTrailing 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.
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
quarterlyNoReturn quarterly data instead of annual when True.
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-03
standardizeNoReturn the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.
benchmark_tickerNoTicker used as the market benchmark, e.g. 'SPY' or '^GSPC'.SPY
dividend_adjustedNoValue for dividend_adjusted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds useful context beyond them: values are pre-computed rather than raw statements, and quarterly/date-range scoping is supported. Auth, rate limits, and response shape are not addressed, but the output schema covers the latter.

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

Conciseness3/5

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

The purpose and usage guidance are front-loaded and tight, but the 23-item indicator list is duplicated verbatim from the schema enum, adding substantial bulk without new information.

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

Completeness4/5

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

With an output schema present and 100% schema coverage, the description need not explain return values or secondary params (lag, growth, trailing, standardize). It covers the essential calling pattern well; only explicit sibling routing is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description restates tickers formatting and the quarterly/date-range options that the schema already documents, adding little new semantic detail; it also says tickers is "required" while the schema marks only indicator as required.

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

Purpose4/5

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

Names a specific resource (pre-computed profitability ratios) and enumerates the metrics it covers (gross/operating/net margin, ROE, ROA, ROIC, ROCE), which implicitly separates it from solvency, valuation, and efficiency siblings. It does not explicitly name a sibling it is not, so it stops short of the top tier.

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

Usage Guidelines4/5

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

Gives a clear when-to-use directive ("Use instead of raw financial statements") plus the required tickers form ("Requires tickers='AAPL'") and supported modifiers (quarterly, start_date/end_date). No explicit when-not-to-use or sibling routing (e.g. vs. efficiency or valuation) is provided.

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

ratesA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
lagNoNumber of periods to lag when computing growth rates.
rateNoValue 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.
growthNoReturn period-over-period growth rates instead of absolute values.
periodNoObservation frequency, e.g. 'monthly', 'quarterly', or 'annual'.
nominalNoValue for nominal.
rollingNoRolling 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_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-02
maturityNoValue for maturity.
trailingNoTrailing 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.
countriesNoComma-separated country names, e.g. 'United States,Germany,Japan'.
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
quarterlyNoReturn quarterly data instead of annual when True.
maturitiesNoComma-separated bond maturity labels, e.g. '3month,2year,10year'.
short_termNoValue for short_term.
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-03
gmdb_sourceNoUse 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.
standardizeNoReturn the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description goes beyond them by disclosing that a FRED API key is optional but needed for three indicators, that those three return no data without it, and that FRED-backed indicators always return a 'United States' column regardless of countries=. That is genuine behavioral context, though response format and rate-limit behavior are not covered.

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

Conciseness3/5

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

The front-loaded scope and usage rules are efficient, but the trailing enumeration of all 15 indicators duplicates the schema enum (and is even truncated mid-word), adding length without new information. Useful caveats are buried after the redundant indicator list.

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

Completeness4/5

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

For an 18-parameter tool with an output schema and full annotation coverage, the description supplies the essential operating caveats (country requirement, no tickers, API-key dependency, FRED column behavior). Remaining gaps are minor given the schema carries parameter detail.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3, and the description adds real meaning by scoping rolling=N and trailing=N to only the policy-rate, short/long-term rate, and yield-curve-slope indicators, plus quarterly=true and date-range support. It does not explain the odd maturity/nominal/short_term/gmdb_source flags, leaving some ambiguity.

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

Purpose4/5

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

Names a specific resource (interest rate data) and enumerates the covered indicator families (central bank policy rates, bond yields, ICE BofA series, EURIBOR, Treasury curve, yield curve slope), so an agent knows exactly what domain this tool serves. It does not explicitly differentiate itself from siblings like fixed_income or macroeconomics, which is the main gap.

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

Usage Guidelines4/5

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

Gives several concrete usage constraints: countries='United States' is required for some indicators, comma-separated values for multiple countries, an explicit 'Do NOT use tickers= for this tool', and supported date/quarterly arguments. Strong context, but no explicit pointer to which sibling tool to use instead when tickers= is wanted.

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

riskB
Read-onlyIdempotent
Inspect

Pre-computed risk metrics (VaR incl. historic/gaussian/cf/studentt/evt distributions, CVaR, EVaR, GARCH volatility, max drawdown, drawdown duration, drawdown recovery time, Conditional Drawdown at Risk (CDaR), Tail Ratio, skewness, kurtosis, downside deviation, Variance, Volatility incl. close_to_close/parkinson/garman_klass/rogers_satchell/yang_zhang estimators, Excess Volatility). VaR, CVaR, skewness, kurtosis, CDaR, Tail Ratio, downside deviation, Variance, Volatility and Excess Volatility support rolling=N for a rolling N-period value spanning the full history instead of one value per period (e.g. period='monthly', rolling=6 for a rolling 6-month figure). Requires tickers='AAPL' — use comma-separated values for multiple tickers. Supports period='daily' for whole-series calculations; rolling and per-period outputs use weekly, monthly, quarterly, or yearly.

Available indicators: get_acerbi_szekely_test, get_amihud_illiquidity, get_autocorrelation, get_best_fitting_copula, get_coefficient_of_variation, get_component_value_at_risk, get_conditional_drawdown_at_risk, get_conditional_value_at_risk, get_copula_parameters, get_copula_simulation, get_covar, get_downside_deviation, get_egarch, get_egarch_forecast, get_egarch_parameters, get_entropic_value_at_risk, get_ewma_volatility, get_excess_volatility, get_garch, get_garch_forecast, get_garch_parameters, get_gjr_garch, get_gjr_garch_forecast, get_gjr_garch_parameters, get_har_rv_forecast, get_hill_estimator, get_hurst_exponent

ParametersJSON Schema
NameRequiredDescriptionDefault
kNoValue for k.
qNoValue for q.
dofNoValue for dof.
lagNoNumber of periods to lag when computing growth rates.
lagsNoValue for lags.
tailNoValue for tail.left
testNoValue for test.both
alphaNoValue for alpha.
scaleNoValue for scale.
columnNoValue for column.Return
copulaNoValue for copula.gaussian
fisherNoValue for fisher.
growthNoReturn period-over-period growth rates instead of absolute values.
methodNoValue 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.
periodNoObservation frequency, e.g. 'monthly', 'quarterly', or 'annual'.
tickerNoValue for ticker. Leave unset to use the default of the indicator you selected. Required by: get_covar.
horizonNoValue for horizon.
lambda_NoValue for lambda_.
max_lagNoValue for max_lag.
rollingNoRolling 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.
tickersNoComma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'.
weightsNoValue for weights.
end_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-02
ticker_aNoValue 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_bNoValue 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.
estimatorNoValue for estimator.squared_return
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
quarterlyNoReturn quarterly data instead of annual when True.
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-03
time_stepsNoValue 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_bootstrapNoValue for n_bootstrap.
standardizeNoReturn the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.
window_sizeNoValue for window_size.
distributionNoValue for distribution.historic
random_stateNoValue for random_state.
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.
n_simulationsNoValue for n_simulations.
weekly_windowNoValue for weekly_window.
within_periodNoValue for within_period.
monthly_windowNoValue for monthly_window.
optimization_tNoValue for optimization_t.
benchmark_tickerNoTicker used as the market benchmark, e.g. 'SPY' or '^GSPC'.SPY
empirical_marginsNoValue for empirical_margins.
show_full_resultsNoValue for show_full_results.
conditioning_tickerNoValue for conditioning_ticker. Leave unset to use the default of the indicator you selected. Required by: get_covar.
threshold_percentileNoOnly 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_returnNoThe minimum acceptable return (MAR) threshold below which returns are considered downside, e.g. 0.0 for downside relative to a zero return.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds real behavioral context: which indicators support rolling=N and that rolling spans the full history instead of one value per period. It does not disclose failure modes, data latency, or cost of heavy computations (n_simulations=10000, n_bootstrap=1000), so it is adequate rather than rich.

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

Conciseness2/5

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

The first paragraph is dense but informative; the trailing 'Available indicators:' list of 42 names is a verbatim duplication of the indicator enum with no added meaning, adding bulk without value. The whole block is an undifferentiated wall of text with no headings, so scanning for the relevant parameter or metric is slow.

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

Completeness3/5

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

For a 47-parameter mega-dispatcher with an output schema and safety annotations, the description covers the essentials: what it returns, the required tickers/indicator inputs, and rolling/period semantics. It omits parameter-to-indicator mapping details (which of the 47 params apply to a given indicator) and sibling routing, which would matter most for a tool this broad.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description contributes beyond the schema by enumerating exactly which metrics accept rolling=N, restating the tickers requirement, and clarifying the period/rolling output granularity. The many 'Value for k.' placeholders in the schema mean the description carries some of the semantic load, though not for most of the 47 parameters.

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

Purpose4/5

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

The description names the resource precisely — 'Pre-computed risk metrics' — and enumerates the specific metric families (VaR variants, CVaR, EVaR, GARCH volatility, drawdowns, CDaR, etc.) plus the full set of 42 indicator identifiers, so an agent knows exactly what this dispatcher computes. It does not, however, differentiate itself from siblings like 'volatility', 'models' or 'econometrics', which plausibly overlap with indicators such as get_volatility and get_garch listed here.

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

Usage Guidelines3/5

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

Operational guidance is present for parameters: 'Requires tickers=AAPL', comma-separated multi-ticker support, period='daily' for whole-series calculations, and which outputs accept weekly/monthly/quarterly/yearly. But there is no when-to-use/when-not guidance or named alternative tool for overlapping indicators, leaving the risk-vs-volatility-vs-models choice to inference.

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

search_by_categoryA
Read-onlyIdempotent
Inspect

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesCategory name as returned by search.categories, e.g. 'ratios', 'technicals', 'economics', 'discovery'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_categoriesA
Read-onlyIdempotent
Inspect

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_instrumentsA
Read-onlyIdempotent
Inspect

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesCompany name, ticker symbol, CIK, CUSIP, or ISIN to look up, e.g. 'Apple', 'AAPL', or '0000320193'.
search_methodNoLookup strategy: 'name', 'symbol', 'cik', 'cusip', or 'isin'. Defaults to 'name'.name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_metricsA
Read-onlyIdempotent
Inspect

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesFree-text keyword to search across all metric names and descriptions, e.g. 'sharpe', 'debt', or 'moving average'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

solvencyB
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lagNoNumber of periods to lag when computing growth rates.
growthNoReturn period-over-period growth rates instead of absolute values.
dilutedNoValue for diluted.
tickersNoComma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'.
end_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-02
trailingNoTrailing 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.
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
quarterlyNoReturn quarterly data instead of annual when True.
show_dailyNoValue for show_daily.
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-03
standardizeNoReturn the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.
benchmark_tickerNoTicker used as the market benchmark, e.g. 'SPY' or '^GSPC'.SPY

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so safety and repeatability are covered without the description. The description adds the tickers requirement and the available indicator set, but discloses nothing about authentication, rate limits, or data latency, and much of what it adds duplicates the schema enum rather than extending it.

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

Conciseness3/5

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

The opening sentences are tight and front-loaded on the purpose, which is good. But the 14-item 'Available indicators' list is a verbatim restatement of the enum already in the schema, adding length without new information and diluting the useful first paragraph.

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

Completeness4/5

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

An output schema exists and the schema documents all 13 parameters, so return-value and parameter explanation are not required of the description. The description covers the core call pattern (indicator + tickers, with quarterly/date options), leaving only secondary parameters like benchmark_ticker or standardize to the schema — adequate overall.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter (lag, trailing, standardize, benchmark_ticker, etc.) is already documented in structured form. The description only re-mentions tickers, quarterly, and start/end date, adding no format or edge-case meaning beyond the schema — baseline 3 is correct.

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

Purpose4/5

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

The description states a specific resource ('Pre-computed solvency ratios') and enumerates representative metrics (debt-to-equity, interest coverage, debt-to-assets, net debt to EBITDA), so the agent knows this is a ratio-computation tool rather than a raw statement fetch. It does not explicitly contrast itself with sibling category tools such as profitability or efficiency, so it stops short of a 5.

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

Usage Guidelines3/5

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

It gives operational guidance ('Requires tickers=... use comma-separated values for multiple tickers', 'Use instead of raw financial statements') and notes quarterly/date support, which implies when the tool applies. However, it never names which sibling (profitability, efficiency, valuation) to pick when a ratio spans categories, so the selection guidance remains implied rather than explicit.

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

valuationA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lagNoNumber of periods to lag when computing growth rates.
growthNoReturn period-over-period growth rates instead of absolute values.
dilutedNoValue for diluted.
tickersNoComma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'.
end_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-02
trailingNoTrailing 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.
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
quarterlyNoReturn quarterly data instead of annual when True.
show_dailyNoValue for show_daily.
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-03
standardizeNoReturn the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.
benchmark_tickerNoTicker used as the market benchmark, e.g. 'SPY' or '^GSPC'.SPY
include_dividendsNoValue for include_dividends.
use_ebitda_growth_rateNoValue for use_ebitda_growth_rate.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds real value beyond them: the Premium FMP gate on two forward indicators and the 'fetched on first use only' caching behavior, plus the fact that omitting indicator returns the indicator list. It does not discuss pagination or rate limits.

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

Conciseness3/5

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

Key constraints (tickers requirement, substitution guidance) are front-loaded, which is good. However, the 30-item indicator list is pure duplication of the enum already present in the schema, consuming a large block of text without adding information, which dilutes conciseness.

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

Completeness4/5

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

With an output schema present, return values need no explanation, and the description covers the required input, subscription gating, and the empty-indicator fallback. For a 15-parameter tool it is adequate, with the minor gap that the large optional-surface parameters (trailing, standardize, benchmark_ticker, show_columns) are left entirely to the schema.

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

Parameters3/5

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

Schema description coverage is 100%, and every parameter carries a description, so the baseline is 3. The description restates tickers usage, quarterly and start_date/end_date, which the schema already documents, and adds no syntax or interaction detail (e.g. how trailing interacts with growth or show_daily) beyond what is in the schema.

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

Purpose4/5

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

States a specific resource (pre-computed valuation ratios) and enumerates the metrics covered, so the agent knows it returns derived ratios rather than raw statements. It contrasts with 'raw financial statements' but never names or distinguishes the actual siblings that overlap heavily (profitability, efficiency, solvency), so vs-sibling routing is left to inference.

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

Usage Guidelines4/5

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

Gives concrete usage context: 'Requires tickers=AAPL', comma-separated for multiples, supports quarterly/start_date/end_date, and the when-to-use hint 'Use instead of raw financial statements'. It also flags the premium-subscription precondition for two forward indicators. No explicit when-not-to-use or sibling alternative is given, so it stops short of a 5.

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

volatilityA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lagNoNumber of periods to lag when computing growth rates.
growthNoReturn period-over-period growth rates instead of absolute values.
periodNoObservation frequency, e.g. 'monthly', 'quarterly', or 'annual'.daily
windowNoValue 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.
tickersNoComma-separated ticker symbols, e.g. 'AAPL,MSFT,GOOGL'.
windowsNoValue for windows.
end_dateNoEnd of the date range in YYYY-MM-DD format.2026-10-02
indicatorYesName of the specific metric to calculate, e.g. 'get_asset_turnover_ratio'. Required — omitting it returns the list of available indicators.
quarterlyNoReturn quarterly data instead of annual when True.
atr_windowNoValue for atr_window.
multiplierNoValue for multiplier.
start_dateNoStart of the date range in YYYY-MM-DD format.2021-10-03
num_std_devNoValue for num_std_dev.
standardizeNoReturn the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.
close_columnNoValue for close_column.Adj Close
show_columnsNoComma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.
atr_multiplierNoValue for atr_multiplier.
benchmark_tickerNoTicker used as the market benchmark, e.g. 'SPY' or '^GSPC'.SPY

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds genuinely new behavioral context: it discloses that price data is fetched implicitly and that tickers must be supplied as a comma-separated list, which the agent could not infer from the annotations.

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

Conciseness4/5

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

Three short sentences, front-loaded with purpose, then the auto-fetch behavior, then the tickers rule and indicator roster. No filler, though the indicator enumeration duplicates the schema enum and the 'Requires tickers' claim is stated with more force than the schema warrants.

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

Completeness4/5

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

For an 18-parameter tool with an output schema (so return values need not be explained), the description covers what the tool computes, that prices are auto-fetched, and the required input shape. The remaining gap is that it does not map which of the many indicator-specific parameters (atr_window, multiplier, num_std_dev, etc.) apply to which indicator, leaving the agent to infer this from the schema defaults.

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

Parameters4/5

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

Schema coverage is 100% but many parameter descriptions are generic ('Value for window', 'Value for multiplier'), so the schema is not fully self-explanatory. The description compensates on the two most important parameters by stating tickers format ('AAPL,MSFT,GOOGL') and naming the available indicator values; however, it never signals that 'indicator' is the only formally required field, and it flatly claims tickers is required when the schema lists it as optional.

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

Purpose4/5

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

The description names the resource (volatility technical indicators) and enumerates the concrete indicators (Bollinger Bands, True Range, ATR, Supertrend, Keltner, Donchian, volatility cone), so the agent knows exactly what this category tool computes. It does not explicitly differentiate itself from category siblings like momentum or risk, which keeps it short of a 5.

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

Usage Guidelines3/5

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

It gives one useful usage note ('price data is fetched automatically — no need to fetch prices first') and the tickers formatting rule, but never states when to pick volatility over momentum/risk siblings or how to choose among the seven indicators. Usage is implied from the indicator list rather than guided.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 21 tool updatesv2.2.1
    • Changedbreadth2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-08-19"New value: +"2026-10-02"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-08-20"New value: +"2021-10-03"
    • Changedeconometrics3 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-08-19"New value: +"2026-10-02"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-08-20"New value: +"2021-10-03"
      • changedInput schema / properties / within_period / default
        Previous value: -trueNew value: +false
    • Changedefficiency2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-08-19"New value: +"2026-10-02"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-08-20"New value: +"2021-10-03"
    • Changedenvironment2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-08-19"New value: +"2026-10-02"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-08-20"New value: +"2021-10-03"
    • Changedfixed_income2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-08-19"New value: +"2026-10-02"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-08-20"New value: +"2021-10-03"
    • Changedgovernment2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-08-19"New value: +"2026-10-02"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-08-20"New value: +"2021-10-03"
    • Changedjobs2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-08-19"New value: +"2026-10-02"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-08-20"New value: +"2021-10-03"
    • Changedliquidity2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-08-19"New value: +"2026-10-02"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-08-20"New value: +"2021-10-03"
    • Changedmacroeconomics2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-08-19"New value: +"2026-10-02"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-08-20"New value: +"2021-10-03"
    • Changedmarket_data2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-08-19"New value: +"2026-10-02"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-08-20"New value: +"2021-10-03"
    • Changedmodels2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-08-19"New value: +"2026-10-02"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-08-20"New value: +"2021-10-03"
    • Changedmomentum2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-08-19"New value: +"2026-10-02"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-08-20"New value: +"2021-10-03"
    • Changedoptions3 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-08-19"New value: +"2026-10-02"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-08-20"New value: +"2021-10-03"
      • changedInput schema / properties / stock_price_step_size / type
        Previous value: -"number"New value: +"integer"
    • Changedoverlap2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-08-19"New value: +"2026-10-02"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-08-20"New value: +"2021-10-03"
    • Changedperformance2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-08-19"New value: +"2026-10-02"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-08-20"New value: +"2021-10-03"
    • Changedprofitability2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-08-19"New value: +"2026-10-02"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-08-20"New value: +"2021-10-03"
    • Changedrates2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-08-19"New value: +"2026-10-02"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-08-20"New value: +"2021-10-03"
    • Changedrisk6 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-08-19"New value: +"2026-10-02"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-08-20"New value: +"2021-10-03"
      • removedInput schema / properties / within_period / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / within_period / default
        Previous value: -nullNew value: +false
      • changedInput schema / properties / within_period / description
        Previous value: -"Value for within_period. Leave unset to use the default of the indicator you selected. Defaults differ between indicators."New value: +"Value for within_period."
      • addedInput schema / properties / within_period / type
        Added value: +"boolean"
    • Changedsolvency2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-08-19"New value: +"2026-10-02"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-08-20"New value: +"2021-10-03"
    • Changedvaluation2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-08-19"New value: +"2026-10-02"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-08-20"New value: +"2021-10-03"
    • Changedvolatility2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-08-19"New value: +"2026-10-02"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-08-20"New value: +"2021-10-03"
  2. 22 tool updatesv2.2.0
    • Changedbreadth9 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-14"New value: +"2026-08-19"
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-15"New value: +"2021-08-20"
      • addedInput schema / properties / start_value
        Added value: +{
        +  "default": 1000,
        +  "description": "Value for start_value.",
        +  "title": "Start Value",
        +  "type": "number"
        +}
      • addedInput schema / properties / volume_divisor
        Added value: +{
        +  "default": 100000000,
        +  "description": "Value for volume_divisor.",
        +  "title": "Volume Divisor",
        +  "type": "number"
        +}
      • addedInput schema / properties / window / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / window / default
        Previous value: -252New value: +null
      • changedInput schema / properties / window / description
        Previous 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."
      • removedInput schema / properties / window / type
        Removed value: -"integer"
    • Changeddiscovery6 fields changed
      • addedInput schema / properties / country
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for country.",
        +  "title": "Country"
        +}
      • addedInput schema / properties / exchange
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for exchange.",
        +  "title": "Exchange"
        +}
      • addedInput schema / properties / limit / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / limit / default
        Previous value: -100New value: +null
      • changedInput schema / properties / limit / description
        Previous 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."
      • removedInput schema / properties / limit / type
        Removed value: -"integer"
    • Addedeconometrics
    • Changedefficiency3 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-14"New value: +"2026-08-19"
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-15"New value: +"2021-08-20"
    • Changedenvironment2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-14"New value: +"2026-08-19"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-15"New value: +"2021-08-20"
    • Changedfixed_income21 fields changed
      • changedInput schema / properties / coupon_rate / description
        Previous value: -"Annual coupon rate as a decimal, e.g. 0.05 for 5 %."New value: +"Annual coupon rate as a decimal, e.g. 0.05 for 5 %. Leave unset to use the default of the indicator you selected. Defaults are 0.05 for get_key_rate_duration, get_yield_to_maturity, get_z_spread; None for get_duration, get_present_value, get_taylor_price_change."
      • addedInput schema / properties / days_to_maturity
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for days_to_maturity.",
        +  "title": "Days To Maturity"
        +}
      • addedInput schema / properties / discount_yield
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for discount_yield.",
        +  "title": "Discount Yield"
        +}
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-14"New value: +"2026-08-19"
      • addedInput schema / properties / far_maturity
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for far_maturity.",
        +  "title": "Far Maturity"
        +}
      • addedInput schema / properties / guess / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / guess / default
        Previous value: -0.05New value: +null
      • changedInput schema / properties / guess / description
        Previous value: -"Value for guess."New value: +"Value for guess. Leave unset to use the default of the indicator you selected. Defaults are 0.01 for get_z_spread; 0.05 for get_yield_to_maturity."
      • removedInput schema / properties / guess / type
        Removed value: -"number"
      • changedInput schema / properties / indicator / enum
        Previous value: -[
        -  "get_derivative_price",
        -  "get_duration",
        -  "get_present_value",
        -  "get_yield_to_maturity"
        -]New value: +[
        +  "get_derivative_price",
        +  "get_duration",
        +  "get_present_value",
        +  "get_yield_to_maturity",
        +  "get_par_yield",
        +  "get_forward_rate",
        +  "get_breakeven_inflation_rate",
        +  "get_key_rate_duration",
        +  "get_yield_curve_spread",
        +  "get_z_spread",
        +  "get_bond_equivalent_yield",
        +  "get_taylor_price_change"
        +]
      • addedInput schema / properties / key_rate_maturity
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for key_rate_maturity.",
        +  "title": "Key Rate Maturity"
        +}
      • addedInput schema / properties / long_maturity
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for long_maturity.",
        +  "title": "Long Maturity"
        +}
      • addedInput schema / properties / maturity
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for maturity.",
        +  "title": "Maturity"
        +}
      • addedInput schema / properties / near_maturity
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for near_maturity.",
        +  "title": "Near Maturity"
        +}
      • addedInput schema / properties / nominal_rates
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for nominal_rates.",
        +  "title": "Nominal Rates"
        +}
      • addedInput schema / properties / real_rates
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for real_rates.",
        +  "title": "Real Rates"
        +}
      • addedInput schema / properties / short_maturity
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for short_maturity.",
        +  "title": "Short Maturity"
        +}
      • addedInput schema / properties / spot_rates
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for spot_rates.",
        +  "title": "Spot Rates"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-15"New value: +"2021-08-20"
      • addedInput schema / properties / volatility_type
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for volatility_type.",
        +  "title": "Volatility Type"
        +}
      • addedInput schema / properties / yield_change
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for yield_change. Leave unset to use the default of the indicator you selected. Defaults are 0.0001 for get_key_rate_duration; 0.01 for get_taylor_price_change.",
        +  "title": "Yield Change"
        +}
    • Changedgovernment2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-14"New value: +"2026-08-19"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-15"New value: +"2021-08-20"
    • Changedjobs4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-14"New value: +"2026-08-19"
      • changedInput schema / properties / gmdb_source / description
        Previous 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."
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-15"New value: +"2021-08-20"
    • Changedliquidity4 fields changed
      • addedInput schema / properties / days
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Number of calendar days used in day-count-based calculations.",
        +  "title": "Days"
        +}
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-14"New value: +"2026-08-19"
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-15"New value: +"2021-08-20"
    • Changedmacroeconomics8 fields changed
      • addedInput schema / properties / commodity
        Added 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"
        +}
      • addedInput schema / properties / contracts
        Added value: +{
        +  "default": 12,
        +  "description": "Value for contracts.",
        +  "title": "Contracts",
        +  "type": "integer"
        +}
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-14"New value: +"2026-08-19"
      • changedInput schema / properties / gmdb_source / description
        Previous 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."
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • addedInput schema / properties / oecd_source
        Added value: +{
        +  "default": false,
        +  "description": "Value for oecd_source.",
        +  "title": "Oecd Source",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / rate_type
        Added value: +{
        +  "default": "long_term",
        +  "description": "Value for rate_type.",
        +  "title": "Rate Type",
        +  "type": "string"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-15"New value: +"2021-08-20"
    • Changedmarket_data11 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-14"New value: +"2026-08-19"
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • addedInput schema / properties / period / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / period / default
        Previous value: -"daily"New value: +null
      • changedInput schema / properties / period / description
        Previous 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."
      • removedInput schema / properties / period / type
        Removed value: -"string"
      • addedInput schema / properties / return_column / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / return_column / default
        Previous value: -"Adj Close"New value: +null
      • changedInput schema / properties / return_column / description
        Previous 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."
      • removedInput schema / properties / return_column / type
        Removed value: -"string"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-15"New value: +"2021-08-20"
    • Changedmodels22 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-14"New value: +"2026-08-19"
      • addedInput schema / properties / growth_rate / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / growth_rate / default
        Previous value: -""New value: +null
      • changedInput schema / properties / growth_rate / description
        Previous 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."
      • removedInput schema / properties / growth_rate / type
        Removed value: -"number"
      • addedInput schema / properties / high_growth_periods
        Added value: +{
        +  "default": 5,
        +  "description": "Value for high_growth_periods.",
        +  "title": "High Growth Periods",
        +  "type": "integer"
        +}
      • addedInput schema / properties / high_growth_rate
        Added 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"
        +}
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • addedInput schema / properties / perpetual_growth_rate / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / perpetual_growth_rate / default
        Previous value: -""New value: +null
      • changedInput schema / properties / perpetual_growth_rate / description
        Previous 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."
      • removedInput schema / properties / perpetual_growth_rate / type
        Removed value: -"number"
      • addedInput schema / properties / rate_of_return / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / rate_of_return / default
        Previous value: -""New value: +null
      • changedInput schema / properties / rate_of_return / description
        Previous 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."
      • removedInput schema / properties / rate_of_return / type
        Removed value: -"number"
      • addedInput schema / properties / stable_growth_rate
        Added 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"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-15"New value: +"2021-08-20"
      • addedInput schema / properties / weighted_average_cost_of_capital / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / weighted_average_cost_of_capital / default
        Previous value: -""New value: +null
      • changedInput schema / properties / weighted_average_cost_of_capital / description
        Previous 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."
      • removedInput schema / properties / weighted_average_cost_of_capital / type
        Removed value: -"number"
    • Changedmomentum22 fields changed
      • changedInput schema / properties / base_window / default
        Previous value: -20New value: +26
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-14"New value: +"2026-08-19"
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • changedInput schema / properties / lead_span_b_window / default
        Previous value: -40New value: +52
      • addedInput schema / properties / long_window / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / long_window / default
        Previous value: -28New value: +null
      • changedInput schema / properties / long_window / description
        Previous 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."
      • removedInput schema / properties / long_window / type
        Removed value: -"integer"
      • addedInput schema / properties / roc_windows
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for roc_windows.",
        +  "title": "Roc Windows"
        +}
      • addedInput schema / properties / short_window / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / short_window / default
        Previous value: -7New value: +null
      • changedInput schema / properties / short_window / description
        Previous 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."
      • removedInput schema / properties / short_window / type
        Removed value: -"integer"
      • addedInput schema / properties / sma_windows
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for sma_windows.",
        +  "title": "Sma Windows"
        +}
      • removedInput schema / properties / smooth_widow
        Removed value: -{
        -  "default": 3,
        -  "description": "Value for smooth_widow.",
        -  "title": "Smooth Widow",
        -  "type": "integer"
        -}
      • addedInput schema / properties / smooth_window
        Added value: +{
        +  "default": 3,
        +  "description": "Value for smooth_window.",
        +  "title": "Smooth Window",
        +  "type": "integer"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-15"New value: +"2021-08-20"
      • addedInput schema / properties / weights
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for weights.",
        +  "title": "Weights"
        +}
      • addedInput schema / properties / window / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / window / default
        Previous value: -14New value: +null
      • changedInput schema / properties / window / description
        Previous value: -"Value for window."New value: +"Value for window. Leave unset to use the default of the indicator you selected. Defaults differ between indicators."
      • removedInput schema / properties / window / type
        Removed value: -"integer"
    • Changedoptions25 fields changed
      • addedInput schema / properties / barrier_direction
        Added value: +{
        +  "default": "down",
        +  "description": "Value for barrier_direction.",
        +  "title": "Barrier Direction",
        +  "type": "string"
        +}
      • addedInput schema / properties / barrier_percentage
        Added value: +{
        +  "default": 0.9,
        +  "description": "Value for barrier_percentage.",
        +  "title": "Barrier Percentage",
        +  "type": "number"
        +}
      • addedInput schema / properties / cash_payout
        Added value: +{
        +  "default": 1,
        +  "description": "Value for cash_payout.",
        +  "title": "Cash Payout",
        +  "type": "number"
        +}
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-14"New value: +"2026-08-19"
      • addedInput schema / properties / expiration_dates
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for expiration_dates.",
        +  "title": "Expiration Dates"
        +}
      • addedInput schema / properties / foreign_risk_free_rate
        Added value: +{
        +  "default": 0,
        +  "description": "Value for foreign_risk_free_rate.",
        +  "title": "Foreign Risk Free Rate",
        +  "type": "number"
        +}
      • changedInput schema / properties / indicator / enum
        Previous value: -[
        -  "get_binomial_model",
        -  "get_black_scholes_model",
        -  "get_charm",
        -  "get_color",
        -  "get_delta",
        -  "get_dual_delta",
        -  "get_dual_gamma",
        -  "get_epsilon",
        -  "get_gamma",
        -  "get_implied_volatility",
        -  "get_lambda",
        -  "get_option_chains",
        -  "get_partial_derivative",
        -  "get_rho",
        -  "get_speed",
        -  "get_stock_price_simulation",
        -  "get_theta",
        -  "get_ultima",
        -  "get_vanna",
        -  "get_vega",
        -  "get_vera",
        -  "get_veta",
        -  "get_vomma",
        -  "get_zomma"
        -]New value: +[
        +  "get_asian_option",
        +  "get_barrier_option",
        +  "get_binary_option",
        +  "get_binomial_model",
        +  "get_bjerksund_stensland",
        +  "get_black_scholes_model",
        +  "get_charm",
        +  "get_color",
        +  "get_delta",
        +  "get_dual_delta",
        +  "get_dual_gamma",
        +  "get_epsilon",
        +  "get_gamma",
        +  "get_garman_kohlhagen",
        +  "get_implied_volatility",
        +  "get_lambda",
        +  "get_monte_carlo_option_price",
        +  "get_option_chains",
        +  "get_partial_derivative",
        +  "get_put_call_parity",
        +  "get_rho",
        +  "get_risk_neutral_density",
        +  "get_speed",
        +  "get_stock_price_simulation",
        +  "get_strategy_payoff",
        +  "get_theta",
        +  "get_ultima",
        +  "get_vanna",
        +  "get_vega",
        +  "get_vera",
        +  "get_veta",
        +  "get_volatility_surface",
        +  "get_vomma",
        +  "get_zomma"
        +]
      • addedInput schema / properties / knock_type
        Added value: +{
        +  "default": "out",
        +  "description": "Value for knock_type.",
        +  "title": "Knock Type",
        +  "type": "string"
        +}
      • addedInput schema / properties / legs
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "string"
        +          }
        +        ]
        +      },
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for legs. Leave unset to use the default of the indicator you selected. Required by: get_strategy_payoff.",
        +  "title": "Legs"
        +}
      • addedInput schema / properties / number_of_expirations
        Added value: +{
        +  "default": 6,
        +  "description": "Value for number_of_expirations.",
        +  "title": "Number Of Expirations",
        +  "type": "integer"
        +}
      • addedInput schema / properties / number_of_strikes
        Added value: +{
        +  "default": 200,
        +  "description": "Value for number_of_strikes.",
        +  "title": "Number Of Strikes",
        +  "type": "integer"
        +}
      • addedInput schema / properties / option_type
        Added value: +{
        +  "default": "cash-or-nothing",
        +  "description": "Value for option_type.",
        +  "title": "Option Type",
        +  "type": "string"
        +}
      • addedInput schema / properties / outlier_threshold
        Added value: +{
        +  "default": 5,
        +  "description": "Value for outlier_threshold.",
        +  "title": "Outlier Threshold",
        +  "type": "number"
        +}
      • addedInput schema / properties / rebate
        Added value: +{
        +  "default": 0,
        +  "description": "Value for rebate.",
        +  "title": "Rebate",
        +  "type": "number"
        +}
      • addedInput schema / properties / seed
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for seed.",
        +  "title": "Seed"
        +}
      • addedInput schema / properties / show_standard_error
        Added value: +{
        +  "default": false,
        +  "description": "Value for show_standard_error.",
        +  "title": "Show Standard Error",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / simulations
        Added value: +{
        +  "default": 10000,
        +  "description": "Value for simulations.",
        +  "title": "Simulations",
        +  "type": "integer"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-15"New value: +"2021-08-20"
      • addedInput schema / properties / stock_price_range
        Added value: +{
        +  "default": 0.5,
        +  "description": "Value for stock_price_range.",
        +  "title": "Stock Price Range",
        +  "type": "number"
        +}
      • addedInput schema / properties / stock_price_step_size
        Added value: +{
        +  "default": 1,
        +  "description": "Value for stock_price_step_size.",
        +  "title": "Stock Price Step Size",
        +  "type": "number"
        +}
      • addedInput schema / properties / strike_price_range / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / strike_price_range / default
        Previous value: -0.25New value: +null
      • changedInput schema / properties / strike_price_range / description
        Previous value: -"Value for strike_price_range."New value: +"Value for strike_price_range. Leave unset to use the default of the indicator you selected. Defaults differ between indicators."
      • removedInput schema / properties / strike_price_range / type
        Removed value: -"number"
      • addedInput schema / properties / time_steps
        Added value: +{
        +  "default": 100,
        +  "description": "Value for time_steps.",
        +  "title": "Time Steps",
        +  "type": "integer"
        +}
    • Changedoverlap12 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-14"New value: +"2026-08-19"
      • addedInput schema / properties / fast_window
        Added value: +{
        +  "default": 2,
        +  "description": "Value for fast_window.",
        +  "title": "Fast Window",
        +  "type": "integer"
        +}
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • addedInput schema / properties / levels
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for levels.",
        +  "title": "Levels"
        +}
      • addedInput schema / properties / sensitivity
        Added value: +{
        +  "default": 0.05,
        +  "description": "Value for sensitivity.",
        +  "title": "Sensitivity",
        +  "type": "number"
        +}
      • addedInput schema / properties / slow_window
        Added value: +{
        +  "default": 30,
        +  "description": "Value for slow_window.",
        +  "title": "Slow Window",
        +  "type": "integer"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-15"New value: +"2021-08-20"
      • addedInput schema / properties / trend
        Added value: +{
        +  "default": "uptrend",
        +  "description": "Value for trend.",
        +  "title": "Trend",
        +  "type": "string"
        +}
      • addedInput schema / properties / window / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / window / default
        Previous value: -14New value: +null
      • changedInput schema / properties / window / description
        Previous value: -"Value for window."New value: +"Value for window. Leave unset to use the default of the indicator you selected. Defaults differ between indicators."
      • removedInput schema / properties / window / type
        Removed value: -"integer"
    • Changedperformance12 fields changed
      • addedInput schema / properties / alpha
        Added value: +{
        +  "default": 0.05,
        +  "description": "Value for alpha.",
        +  "title": "Alpha",
        +  "type": "number"
        +}
      • addedInput schema / properties / benchmark_sharpe_ratio
        Added value: +{
        +  "default": 0,
        +  "description": "Value for benchmark_sharpe_ratio.",
        +  "title": "Benchmark Sharpe Ratio",
        +  "type": "number"
        +}
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-14"New value: +"2026-08-19"
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • addedInput schema / properties / method / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / method / default
        Previous value: -"multi"New value: +null
      • changedInput schema / properties / method / description
        Previous 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."
      • removedInput schema / properties / method / type
        Removed value: -"string"
      • addedInput schema / properties / n_trials
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for n_trials.",
        +  "title": "N Trials"
        +}
      • changedInput schema / properties / rolling / description
        Previous 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."
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-15"New value: +"2021-08-20"
      • addedInput schema / properties / trials_window
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for trials_window.",
        +  "title": "Trials Window"
        +}
    • Changedprofitability3 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-14"New value: +"2026-08-19"
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-15"New value: +"2021-08-20"
    • Changedrates5 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-14"New value: +"2026-08-19"
      • changedInput schema / properties / gmdb_source / description
        Previous 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."
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • changedInput schema / properties / rate / description
        Previous 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."
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-15"New value: +"2021-08-20"
    • Changedrisk33 fields changed
      • addedInput schema / properties / column
        Added value: +{
        +  "default": "Return",
        +  "description": "Value for column.",
        +  "title": "Column",
        +  "type": "string"
        +}
      • addedInput schema / properties / conditioning_ticker
        Added 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"
        +}
      • addedInput schema / properties / copula
        Added value: +{
        +  "default": "gaussian",
        +  "description": "Value for copula.",
        +  "title": "Copula",
        +  "type": "string"
        +}
      • addedInput schema / properties / dof
        Added value: +{
        +  "default": 4,
        +  "description": "Value for dof.",
        +  "title": "Dof",
        +  "type": "number"
        +}
      • addedInput schema / properties / empirical_margins
        Added value: +{
        +  "default": true,
        +  "description": "Value for empirical_margins.",
        +  "title": "Empirical Margins",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-14"New value: +"2026-08-19"
      • addedInput schema / properties / estimator
        Added value: +{
        +  "default": "squared_return",
        +  "description": "Value for estimator.",
        +  "title": "Estimator",
        +  "type": "string"
        +}
      • addedInput schema / properties / horizon
        Added value: +{
        +  "default": 1,
        +  "description": "Value for horizon.",
        +  "title": "Horizon",
        +  "type": "integer"
        +}
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • addedInput schema / properties / k
        Added value: +{
        +  "default": 0.1,
        +  "description": "Value for k.",
        +  "title": "K",
        +  "type": "number"
        +}
      • addedInput schema / properties / method
        Added 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"
        +}
      • addedInput schema / properties / monthly_window
        Added value: +{
        +  "default": 22,
        +  "description": "Value for monthly_window.",
        +  "title": "Monthly Window",
        +  "type": "integer"
        +}
      • addedInput schema / properties / n_bootstrap
        Added value: +{
        +  "default": 1000,
        +  "description": "Value for n_bootstrap.",
        +  "title": "N Bootstrap",
        +  "type": "integer"
        +}
      • addedInput schema / properties / n_simulations
        Added value: +{
        +  "default": 10000,
        +  "description": "Value for n_simulations.",
        +  "title": "N Simulations",
        +  "type": "integer"
        +}
      • addedInput schema / properties / q
        Added value: +{
        +  "default": 0.95,
        +  "description": "Value for q.",
        +  "title": "Q",
        +  "type": "number"
        +}
      • addedInput schema / properties / random_state
        Added value: +{
        +  "default": 42,
        +  "description": "Value for random_state.",
        +  "title": "Random State",
        +  "type": "integer"
        +}
      • changedInput schema / properties / rolling / description
        Previous 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."
      • addedInput schema / properties / scale
        Added value: +{
        +  "default": 1000000,
        +  "description": "Value for scale.",
        +  "title": "Scale",
        +  "type": "number"
        +}
      • addedInput schema / properties / show_full_results
        Added value: +{
        +  "default": false,
        +  "description": "Value for show_full_results.",
        +  "title": "Show Full Results",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-15"New value: +"2021-08-20"
      • addedInput schema / properties / tail
        Added value: +{
        +  "default": "left",
        +  "description": "Value for tail.",
        +  "title": "Tail",
        +  "type": "string"
        +}
      • addedInput schema / properties / test
        Added value: +{
        +  "default": "both",
        +  "description": "Value for test.",
        +  "title": "Test",
        +  "type": "string"
        +}
      • addedInput schema / properties / ticker
        Added 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"
        +}
      • addedInput schema / properties / ticker_a
        Added 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"
        +}
      • addedInput schema / properties / ticker_b
        Added 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"
        +}
      • changedInput schema / properties / time_steps / description
        Previous 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."
      • addedInput schema / properties / weekly_window
        Added value: +{
        +  "default": 5,
        +  "description": "Value for weekly_window.",
        +  "title": "Weekly Window",
        +  "type": "integer"
        +}
      • addedInput schema / properties / weights
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for weights.",
        +  "title": "Weights"
        +}
      • addedInput schema / properties / window_size
        Added value: +{
        +  "default": 252,
        +  "description": "Value for window_size.",
        +  "title": "Window Size",
        +  "type": "integer"
        +}
      • addedInput schema / properties / within_period / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / within_period / default
        Previous value: -trueNew value: +null
      • changedInput schema / properties / within_period / description
        Previous 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."
      • removedInput schema / properties / within_period / type
        Removed value: -"boolean"
    • Changedsolvency3 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-14"New value: +"2026-08-19"
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-15"New value: +"2021-08-20"
    • Changedvaluation3 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-14"New value: +"2026-08-19"
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-15"New value: +"2021-08-20"
    • Changedvolatility9 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-14"New value: +"2026-08-19"
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • addedInput schema / properties / multiplier
        Added value: +{
        +  "default": 3,
        +  "description": "Value for multiplier.",
        +  "title": "Multiplier",
        +  "type": "number"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-15"New value: +"2021-08-20"
      • addedInput schema / properties / window / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / window / default
        Previous value: -14New value: +null
      • changedInput schema / properties / window / description
        Previous 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."
      • removedInput schema / properties / window / type
        Removed value: -"integer"
      • addedInput schema / properties / windows
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for windows.",
        +  "title": "Windows"
        +}
  3. 21 tool updates
    • Changedbreadth5 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-09"New value: +"2026-07-14"
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • addedInput schema / properties / standardize
        Added value: +{
        +  "default": false,
        +  "description": "Return the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.",
        +  "title": "Standardize",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-10"New value: +"2021-07-15"
      • addedInput schema / properties / window
        Added value: +{
        +  "default": 252,
        +  "description": "Value for window.",
        +  "title": "Window",
        +  "type": "integer"
        +}
    • Changeddiscovery7 fields changed
      • addedInput schema / properties / date
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for date.",
        +  "title": "Date"
        +}
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • addedInput schema / properties / industry
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for industry.",
        +  "title": "Industry"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 100,
        +  "description": "Value for limit.",
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / page
        Added value: +{
        +  "default": 0,
        +  "description": "Value for page.",
        +  "title": "Page",
        +  "type": "integer"
        +}
      • addedInput schema / properties / pages
        Added value: +{
        +  "default": 1,
        +  "description": "Value for pages.",
        +  "title": "Pages",
        +  "type": "integer"
        +}
      • addedInput schema / properties / sector
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for sector.",
        +  "title": "Sector"
        +}
    • Changedefficiency5 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-09"New value: +"2026-07-14"
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • addedInput schema / properties / standardize
        Added value: +{
        +  "default": false,
        +  "description": "Return the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.",
        +  "title": "Standardize",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-10"New value: +"2021-07-15"
      • changedInput schema / properties / trailing / description
        Previous 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."
    • Changedenvironment5 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-09"New value: +"2026-07-14"
      • addedInput schema / properties / rolling
        Added 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"
        +}
      • addedInput schema / properties / standardize
        Added value: +{
        +  "default": false,
        +  "description": "Return the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.",
        +  "title": "Standardize",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-10"New value: +"2021-07-15"
      • addedInput schema / properties / trailing
        Added 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"
        +}
    • Changedfixed_income4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-09"New value: +"2026-07-14"
      • addedInput schema / properties / payment_frequency
        Added value: +{
        +  "default": 2,
        +  "description": "Value for payment_frequency.",
        +  "title": "Payment Frequency",
        +  "type": "integer"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-10"New value: +"2021-07-15"
      • addedInput schema / properties / tenor
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Value for tenor.",
        +  "title": "Tenor"
        +}
    • Changedgovernment5 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-09"New value: +"2026-07-14"
      • addedInput schema / properties / rolling
        Added 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"
        +}
      • addedInput schema / properties / standardize
        Added value: +{
        +  "default": false,
        +  "description": "Return the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.",
        +  "title": "Standardize",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-10"New value: +"2021-07-15"
      • addedInput schema / properties / trailing
        Added 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"
        +}
    • Changedjobs5 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-09"New value: +"2026-07-14"
      • addedInput schema / properties / rolling
        Added 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"
        +}
      • addedInput schema / properties / standardize
        Added value: +{
        +  "default": false,
        +  "description": "Return the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.",
        +  "title": "Standardize",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-10"New value: +"2021-07-15"
      • addedInput schema / properties / trailing
        Added 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"
        +}
    • Changedliquidity4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-09"New value: +"2026-07-14"
      • addedInput schema / properties / standardize
        Added value: +{
        +  "default": false,
        +  "description": "Return the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.",
        +  "title": "Standardize",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-10"New value: +"2021-07-15"
      • changedInput schema / properties / trailing / description
        Previous 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."
    • Changedmacroeconomics5 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-09"New value: +"2026-07-14"
      • addedInput schema / properties / rolling
        Added 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"
        +}
      • addedInput schema / properties / standardize
        Added value: +{
        +  "default": false,
        +  "description": "Return the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.",
        +  "title": "Standardize",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-10"New value: +"2021-07-15"
      • addedInput schema / properties / trailing
        Added 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"
        +}
    • Changedmarket_data3 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-09"New value: +"2026-07-14"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-10"New value: +"2021-07-15"
      • changedInput schema / properties / trailing / description
        Previous 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."
    • Changedmodels5 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-09"New value: +"2026-07-14"
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • addedInput schema / properties / standardize
        Added value: +{
        +  "default": false,
        +  "description": "Return the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.",
        +  "title": "Standardize",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-10"New value: +"2021-07-15"
      • changedInput schema / properties / trailing / description
        Previous 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."
    • Changedmomentum3 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-09"New value: +"2026-07-14"
      • addedInput schema / properties / standardize
        Added value: +{
        +  "default": false,
        +  "description": "Return the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.",
        +  "title": "Standardize",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-10"New value: +"2021-07-15"
    • Changedoptions3 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-09"New value: +"2026-07-14"
      • addedInput schema / properties / standardize
        Added value: +{
        +  "default": false,
        +  "description": "Return the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.",
        +  "title": "Standardize",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-10"New value: +"2021-07-15"
    • Changedoverlap7 fields changed
      • addedInput schema / properties / af_increment
        Added value: +{
        +  "default": 0.02,
        +  "description": "Value for af_increment.",
        +  "title": "Af Increment",
        +  "type": "number"
        +}
      • addedInput schema / properties / af_max
        Added value: +{
        +  "default": 0.2,
        +  "description": "Value for af_max.",
        +  "title": "Af Max",
        +  "type": "number"
        +}
      • addedInput schema / properties / af_start
        Added value: +{
        +  "default": 0.02,
        +  "description": "Value for af_start.",
        +  "title": "Af Start",
        +  "type": "number"
        +}
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-09"New value: +"2026-07-14"
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • addedInput schema / properties / standardize
        Added value: +{
        +  "default": false,
        +  "description": "Return the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.",
        +  "title": "Standardize",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-10"New value: +"2021-07-15"
    • Changedperformance10 fields changed
      • addedInput schema / properties / adjustment
        Added value: +{
        +  "default": 0.1,
        +  "description": "Value for adjustment.",
        +  "title": "Adjustment",
        +  "type": "number"
        +}
      • addedInput schema / properties / cumulative
        Added 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"
        +}
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-09"New value: +"2026-07-14"
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • addedInput schema / properties / minimum_acceptable_return
        Added 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"
        +}
      • addedInput schema / properties / order
        Added value: +{
        +  "default": 3,
        +  "description": "Value for order.",
        +  "title": "Order",
        +  "type": "integer"
        +}
      • changedInput schema / properties / rolling / description
        Previous 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."
      • addedInput schema / properties / standardize
        Added value: +{
        +  "default": false,
        +  "description": "Return the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.",
        +  "title": "Standardize",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-10"New value: +"2021-07-15"
      • addedInput schema / properties / within_period
        Added value: +{
        +  "default": true,
        +  "description": "Value for within_period.",
        +  "title": "Within Period",
        +  "type": "boolean"
        +}
    • Changedprofitability5 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-09"New value: +"2026-07-14"
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • addedInput schema / properties / standardize
        Added value: +{
        +  "default": false,
        +  "description": "Return the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.",
        +  "title": "Standardize",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-10"New value: +"2021-07-15"
      • changedInput schema / properties / trailing / description
        Previous 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."
    • Changedrates5 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-09"New value: +"2026-07-14"
      • addedInput schema / properties / rolling
        Added 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"
        +}
      • addedInput schema / properties / standardize
        Added value: +{
        +  "default": false,
        +  "description": "Return the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.",
        +  "title": "Standardize",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-10"New value: +"2021-07-15"
      • addedInput schema / properties / trailing
        Added 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"
        +}
    • Changedrisk13 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-09"New value: +"2026-07-14"
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • addedInput schema / properties / lags
        Added value: +{
        +  "default": 10,
        +  "description": "Value for lags.",
        +  "title": "Lags",
        +  "type": "integer"
        +}
      • addedInput schema / properties / lambda_
        Added value: +{
        +  "default": 0.94,
        +  "description": "Value for lambda_.",
        +  "title": "Lambda",
        +  "type": "number"
        +}
      • addedInput schema / properties / max_lag
        Added value: +{
        +  "default": 20,
        +  "description": "Value for max_lag.",
        +  "title": "Max Lag",
        +  "type": "integer"
        +}
      • addedInput schema / properties / minimum_acceptable_return
        Added 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"
        +}
      • addedInput schema / properties / rolling / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / rolling / default
        Previous value: -14New value: +null
      • changedInput schema / properties / rolling / description
        Previous 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."
      • removedInput schema / properties / rolling / type
        Removed value: -"integer"
      • addedInput schema / properties / standardize
        Added value: +{
        +  "default": false,
        +  "description": "Return the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.",
        +  "title": "Standardize",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-10"New value: +"2021-07-15"
      • addedInput schema / properties / threshold_percentile
        Added 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"
        +}
    • Changedsolvency5 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-09"New value: +"2026-07-14"
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • addedInput schema / properties / standardize
        Added value: +{
        +  "default": false,
        +  "description": "Return the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.",
        +  "title": "Standardize",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-10"New value: +"2021-07-15"
      • changedInput schema / properties / trailing / description
        Previous 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."
    • Changedvaluation5 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-09"New value: +"2026-07-14"
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • addedInput schema / properties / standardize
        Added value: +{
        +  "default": false,
        +  "description": "Return the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.",
        +  "title": "Standardize",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-10"New value: +"2021-07-15"
      • changedInput schema / properties / trailing / description
        Previous 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."
    • Changedvolatility4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-07-09"New value: +"2026-07-14"
      • changedInput schema / properties / indicator / enum
        Previous 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"
        +]
      • addedInput schema / properties / standardize
        Added value: +{
        +  "default": false,
        +  "description": "Return the Z-Score (standard score) instead of the raw values, i.e. how many standard deviations each value is from the mean of its own series. When combined with growth=True, the growth values are standardized instead of the raw values.",
        +  "title": "Standardize",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-07-10"New value: +"2021-07-15"
  4. 20 tool updatesv2.1.4
    • Changedbreadth2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-27"New value: +"2026-07-09"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-28"New value: +"2021-07-10"
    • Changedefficiency2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-27"New value: +"2026-07-09"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-28"New value: +"2021-07-10"
    • Changedenvironment2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-27"New value: +"2026-07-09"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-28"New value: +"2021-07-10"
    • Changedfixed_income2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-27"New value: +"2026-07-09"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-28"New value: +"2021-07-10"
    • Changedgovernment2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-27"New value: +"2026-07-09"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-28"New value: +"2021-07-10"
    • Changedjobs2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-27"New value: +"2026-07-09"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-28"New value: +"2021-07-10"
    • Changedliquidity2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-27"New value: +"2026-07-09"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-28"New value: +"2021-07-10"
    • Changedmacroeconomics2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-27"New value: +"2026-07-09"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-28"New value: +"2021-07-10"
    • Changedmarket_data2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-27"New value: +"2026-07-09"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-28"New value: +"2021-07-10"
    • Changedmodels2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-27"New value: +"2026-07-09"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-28"New value: +"2021-07-10"
    • Changedmomentum2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-27"New value: +"2026-07-09"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-28"New value: +"2021-07-10"
    • Changedoptions2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-27"New value: +"2026-07-09"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-28"New value: +"2021-07-10"
    • Changedoverlap2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-27"New value: +"2026-07-09"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-28"New value: +"2021-07-10"
    • Changedperformance2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-27"New value: +"2026-07-09"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-28"New value: +"2021-07-10"
    • Changedprofitability2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-27"New value: +"2026-07-09"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-28"New value: +"2021-07-10"
    • Changedrates2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-27"New value: +"2026-07-09"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-28"New value: +"2021-07-10"
    • Changedrisk2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-27"New value: +"2026-07-09"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-28"New value: +"2021-07-10"
    • Changedsolvency2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-27"New value: +"2026-07-09"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-28"New value: +"2021-07-10"
    • Changedvaluation2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-27"New value: +"2026-07-09"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-28"New value: +"2021-07-10"
    • Changedvolatility2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-27"New value: +"2026-07-09"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-28"New value: +"2021-07-10"
  5. 20 tool updatesv2.1.3
    • Changedbreadth2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-23"New value: +"2026-06-27"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-24"New value: +"2021-06-28"
    • Changedefficiency2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-23"New value: +"2026-06-27"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-24"New value: +"2021-06-28"
    • Changedenvironment2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-23"New value: +"2026-06-27"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-24"New value: +"2021-06-28"
    • Changedfixed_income2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-23"New value: +"2026-06-27"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-24"New value: +"2021-06-28"
    • Changedgovernment2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-23"New value: +"2026-06-27"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-24"New value: +"2021-06-28"
    • Changedjobs2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-23"New value: +"2026-06-27"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-24"New value: +"2021-06-28"
    • Changedliquidity2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-23"New value: +"2026-06-27"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-24"New value: +"2021-06-28"
    • Changedmacroeconomics2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-23"New value: +"2026-06-27"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-24"New value: +"2021-06-28"
    • Changedmarket_data2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-23"New value: +"2026-06-27"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-24"New value: +"2021-06-28"
    • Changedmodels2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-23"New value: +"2026-06-27"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-24"New value: +"2021-06-28"
    • Changedmomentum2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-23"New value: +"2026-06-27"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-24"New value: +"2021-06-28"
    • Changedoptions2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-23"New value: +"2026-06-27"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-24"New value: +"2021-06-28"
    • Changedoverlap2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-23"New value: +"2026-06-27"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-24"New value: +"2021-06-28"
    • Changedperformance2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-23"New value: +"2026-06-27"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-24"New value: +"2021-06-28"
    • Changedprofitability2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-23"New value: +"2026-06-27"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-24"New value: +"2021-06-28"
    • Changedrates2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-23"New value: +"2026-06-27"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-24"New value: +"2021-06-28"
    • Changedrisk2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-23"New value: +"2026-06-27"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-24"New value: +"2021-06-28"
    • Changedsolvency2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-23"New value: +"2026-06-27"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-24"New value: +"2021-06-28"
    • Changedvaluation2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-23"New value: +"2026-06-27"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-24"New value: +"2021-06-28"
    • Changedvolatility2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-23"New value: +"2026-06-27"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-24"New value: +"2021-06-28"
  6. 21 tool updatesv0.1.2
    • Changedbreadth4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-22"New value: +"2026-06-23"
      • removedInput schema / properties / rounding
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Number of decimal places to round results to.",
        -  "title": "Rounding"
        -}
      • addedInput schema / properties / show_columns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
        +  "title": "Show Columns"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-23"New value: +"2021-06-24"
    • Changeddiscovery1 field changed
      • addedInput schema / properties / show_columns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
        +  "title": "Show Columns"
        +}
    • Changedefficiency4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-22"New value: +"2026-06-23"
      • removedInput schema / properties / rounding
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Number of decimal places to round results to.",
        -  "title": "Rounding"
        -}
      • addedInput schema / properties / show_columns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
        +  "title": "Show Columns"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-23"New value: +"2021-06-24"
    • Changedenvironment4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-22"New value: +"2026-06-23"
      • removedInput schema / properties / rounding
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Number of decimal places to round results to.",
        -  "title": "Rounding"
        -}
      • addedInput schema / properties / show_columns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
        +  "title": "Show Columns"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-23"New value: +"2021-06-24"
    • Changedfixed_income3 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-22"New value: +"2026-06-23"
      • addedInput schema / properties / show_columns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
        +  "title": "Show Columns"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-23"New value: +"2021-06-24"
    • Changedgovernment4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-22"New value: +"2026-06-23"
      • removedInput schema / properties / rounding
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Number of decimal places to round results to.",
        -  "title": "Rounding"
        -}
      • addedInput schema / properties / show_columns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
        +  "title": "Show Columns"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-23"New value: +"2021-06-24"
    • Changedjobs4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-22"New value: +"2026-06-23"
      • removedInput schema / properties / rounding
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Number of decimal places to round results to.",
        -  "title": "Rounding"
        -}
      • addedInput schema / properties / show_columns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
        +  "title": "Show Columns"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-23"New value: +"2021-06-24"
    • Changedliquidity4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-22"New value: +"2026-06-23"
      • removedInput schema / properties / rounding
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Number of decimal places to round results to.",
        -  "title": "Rounding"
        -}
      • addedInput schema / properties / show_columns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
        +  "title": "Show Columns"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-23"New value: +"2021-06-24"
    • Changedmacroeconomics4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-22"New value: +"2026-06-23"
      • removedInput schema / properties / rounding
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Number of decimal places to round results to.",
        -  "title": "Rounding"
        -}
      • addedInput schema / properties / show_columns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
        +  "title": "Show Columns"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-23"New value: +"2021-06-24"
    • Changedmarket_data4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-22"New value: +"2026-06-23"
      • removedInput schema / properties / rounding
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Number of decimal places to round results to.",
        -  "title": "Rounding"
        -}
      • addedInput schema / properties / show_columns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
        +  "title": "Show Columns"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-23"New value: +"2021-06-24"
    • Changedmodels4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-22"New value: +"2026-06-23"
      • removedInput schema / properties / rounding
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Number of decimal places to round results to.",
        -  "title": "Rounding"
        -}
      • addedInput schema / properties / show_columns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
        +  "title": "Show Columns"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-23"New value: +"2021-06-24"
    • Changedmomentum4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-22"New value: +"2026-06-23"
      • removedInput schema / properties / rounding
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Number of decimal places to round results to.",
        -  "title": "Rounding"
        -}
      • addedInput schema / properties / show_columns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
        +  "title": "Show Columns"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-23"New value: +"2021-06-24"
    • Changedoptions4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-22"New value: +"2026-06-23"
      • removedInput schema / properties / rounding
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Number of decimal places to round results to.",
        -  "title": "Rounding"
        -}
      • addedInput schema / properties / show_columns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
        +  "title": "Show Columns"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-23"New value: +"2021-06-24"
    • Changedoverlap4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-22"New value: +"2026-06-23"
      • removedInput schema / properties / rounding
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Number of decimal places to round results to.",
        -  "title": "Rounding"
        -}
      • addedInput schema / properties / show_columns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
        +  "title": "Show Columns"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-23"New value: +"2021-06-24"
    • Changedperformance4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-22"New value: +"2026-06-23"
      • removedInput schema / properties / rounding
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Number of decimal places to round results to.",
        -  "title": "Rounding"
        -}
      • addedInput schema / properties / show_columns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
        +  "title": "Show Columns"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-23"New value: +"2021-06-24"
    • Changedprofitability4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-22"New value: +"2026-06-23"
      • removedInput schema / properties / rounding
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Number of decimal places to round results to.",
        -  "title": "Rounding"
        -}
      • addedInput schema / properties / show_columns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
        +  "title": "Show Columns"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-23"New value: +"2021-06-24"
    • Changedrates4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-22"New value: +"2026-06-23"
      • removedInput schema / properties / rounding
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Number of decimal places to round results to.",
        -  "title": "Rounding"
        -}
      • addedInput schema / properties / show_columns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
        +  "title": "Show Columns"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-23"New value: +"2021-06-24"
    • Changedrisk4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-22"New value: +"2026-06-23"
      • removedInput schema / properties / rounding
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Number of decimal places to round results to.",
        -  "title": "Rounding"
        -}
      • addedInput schema / properties / show_columns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
        +  "title": "Show Columns"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-23"New value: +"2021-06-24"
    • Changedsolvency4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-22"New value: +"2026-06-23"
      • removedInput schema / properties / rounding
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Number of decimal places to round results to.",
        -  "title": "Rounding"
        -}
      • addedInput schema / properties / show_columns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
        +  "title": "Show Columns"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-23"New value: +"2021-06-24"
    • Changedvaluation4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-22"New value: +"2026-06-23"
      • removedInput schema / properties / rounding
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Number of decimal places to round results to.",
        -  "title": "Rounding"
        -}
      • addedInput schema / properties / show_columns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
        +  "title": "Show Columns"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-23"New value: +"2021-06-24"
    • Changedvolatility4 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-22"New value: +"2026-06-23"
      • removedInput schema / properties / rounding
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Number of decimal places to round results to.",
        -  "title": "Rounding"
        -}
      • addedInput schema / properties / show_columns
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Comma-separated names to filter the output. For historical data use the key names visible in any response record (e.g. 'Close,Volume,Return'). For financial statements use the 'metric' field values from the response (e.g. 'Revenue,Net Income,EBITDA'). Call the tool once without this parameter to see all available names, then repeat with show_columns to reduce response size and token usage.",
        +  "title": "Show Columns"
        +}
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-23"New value: +"2021-06-24"
  7. 41 tool updatesv0.1.1
    • Addedbreadth
    • Addeddiscovery
    • Removedeconomics_environment
    • Removedeconomics_fixed_income
    • Removedeconomics_general
    • Removedeconomics_government
    • Removedeconomics_jobs
    • Removedeconomics_rates
    • Addedefficiency
    • Addedenvironment
    • Addedfixed_income
    • Addedgovernment
    • Addedjobs
    • Addedliquidity
    • Addedmacroeconomics
    • Changedmarket_data2 fields changed
      • changedInput schema / properties / end_date / default
        Previous value: -"2026-06-21"New value: +"2026-06-22"
      • changedInput schema / properties / start_date / default
        Previous value: -"2021-06-22"New value: +"2021-06-23"
    • Removedmarket_discovery
    • Addedmodels
    • Addedmomentum
    • Addedoptions
    • Addedoverlap
    • Addedperformance
    • Addedprofitability
    • Removedquant_models
    • Removedquant_options
    • Removedquant_performance
    • Removedquant_risk
    • Addedrates
    • Removedratios_efficiency
    • Removedratios_liquidity
    • Removedratios_profitability
    • Removedratios_solvency
    • Removedratios_valuation
    • Addedrisk
    • Addedsolvency
    • Removedtechnicals_breadth
    • Removedtechnicals_momentum
    • Removedtechnicals_overlap
    • Removedtechnicals_volatility
    • Addedvaluation
    • Addedvolatility
  8. 25 tool updatesv0.1.0
    • First observedeconomics_environment
    • First observedeconomics_fixed_income
    • First observedeconomics_general
    • First observedeconomics_government
    • First observedeconomics_jobs
    • First observedeconomics_rates
    • First observedmarket_data
    • First observedmarket_discovery
    • First observedquant_models
    • First observedquant_options
    • First observedquant_performance
    • First observedquant_risk
    • First observedratios_efficiency
    • First observedratios_liquidity
    • First observedratios_profitability
    • First observedratios_solvency
    • First observedratios_valuation
    • First observedsearch_by_category
    • First observedsearch_categories
    • First observedsearch_instruments
    • First observedsearch_metrics
    • First observedtechnicals_breadth
    • First observedtechnicals_momentum
    • First observedtechnicals_overlap
    • First observedtechnicals_volatility

TDQS

B3.4/5.0

Scored across 26 tools

Disambiguation3/5

Most category tools are clearly distinct, but some indicators appear in multiple categories (e.g., interest coverage in both solvency and profitability, FCF yield in solvency but arguably valuation). The overlap description claims Bollinger Bands and Keltner Channels belong there, yet they are listed under volatility, creating confusion. Search meta-tools help, but boundaries are not always crisp.

Naming Consistency4/5

All tool names are lowercase snake_case, which is consistent. However, some are singular (solvency, valuation) while others are plural (options, rates, models, jobs), a minor deviation. The nouns are all category labels, which is predictable despite lacking verb_noun structure.

Tool Count2/5

26 tools is above the recommended 3–15 range and feels heavy for an MCP server. Many categories could be merged (e.g., solvency/valuation/liquidity/profitability/efficiency into a single ratios tool; breadth/momentum/overlap/volatility into a single technicals tool), indicating unnecessary fragmentation. The count exceeds the 25+ threshold for 'too many'.

Completeness5/5

The toolkit covers an exceptionally broad surface: fundamental ratios, technical indicators, risk, performance, econometrics, options, macroeconomics, government finance, environment, jobs, rates, fixed income, market data, and discovery. Search tools aid navigation, and no obvious domain gaps are apparent for a finance data/calculation server. Coverage is extensive and well beyond minimal CRUD.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides AI assistants with access to comprehensive financial data including real-time stock quotes, company fundamentals, financial statements, market analysis, SEC filings, and economic indicators through 253+ tools across 24 categories.
    245 npm
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides AI assistants access to comprehensive financial data including real-time stock quotes, company fundamentals, financial statements, market analysis, economic indicators, and 250+ financial tools across 24 categories from Financial Modeling Prep API.
    245 npm
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Agent-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.
    3
    41 npm
    1
    MIT