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=API_KEY, start_date="2017-12-31")

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

Three capabilities cut across nearly the whole toolkit:

  • 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")

# Screen for stocks matching a set of criteria
discovery.get_stock_screener(
    market_cap_higher=1000000,
    price_higher=100,
    price_lower=200,
    beta_higher=1,
    beta_lower=1.5,
    dividend_higher=1,
)

Which returns:

Symbol

Name

Market Cap

Sector

Industry

Beta

Price

Dividend

Exchange

Country

NKE

NIKE, Inc.

163403295604

Consumer Cyclical

Footwear & Accessories

1.079

107.36

1.48

New York Stock Exchange

US

SAF.PA

Safran SA

66234006559

Industrials

Aerospace & Defense

1.339

160.16

1.35

Paris

FR

ROST

Ross Stores, Inc.

46724188589

Consumer Cyclical

Apparel Retail

1.026

138.785

1.34

NASDAQ Global Select

US

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

Obtaining Historical Data

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

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

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

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

date

Open

High

Low

Close

Adj Close

Volume

Dividends

Return

Cumulative Return

2018-01-02

42.54

43.075

42.315

43.065

40.78

1.02224e+08

0

0

1

2018-01-03

43.1325

43.6375

42.99

43.0575

40.77

1.17982e+08

0

-0.0002

0.9998

2018-01-04

43.135

43.3675

43.02

43.2575

40.96

8.97384e+07

0

0.0047

1.0044

2018-01-05

43.36

43.8425

43.2625

43.75

41.43

9.46401e+07

0

0.0115

1.0159

2018-01-08

43.5875

43.9025

43.4825

43.5875

41.27

8.22711e+07

0

-0.0039

1.012

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

HistoricalData

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

Obtaining Financial Statements

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

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

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

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

2017

2018

2019

2020

2021

2022

2023

Revenue

2.29234e+11

2.65595e+11

2.60174e+11

2.74515e+11

3.65817e+11

3.94328e+11

3.83285e+11

Cost of Goods Sold

1.41048e+11

1.63756e+11

1.61782e+11

1.69559e+11

2.12981e+11

2.23546e+11

2.14137e+11

Gross Profit

8.8186e+10

1.01839e+11

9.8392e+10

1.04956e+11

1.52836e+11

1.70782e+11

1.69148e+11

Gross Profit Ratio

0.3847

0.3834

0.3782

0.3823

0.4178

0.4331

0.4413

Research and Development Expenses

1.1581e+10

1.4236e+10

1.6217e+10

1.8752e+10

2.1914e+10

2.6251e+10

2.9915e+10

And below the Earnings Before Interest, Taxes, Depreciation and Amortization (EBITDA) are plotted for both Apple and Microsoft. Find the Notebook here and the full financial statement documentation here.

FinancialStatements

Obtaining Financial Ratios

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

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

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

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

2017

2018

2019

2020

2021

2022

2023

Gross Margin

0.6191

0.6525

0.659

0.6778

0.6893

0.684

0.6892

Operating Margin

0.2482

0.3177

0.3414

0.3703

0.4159

0.4206

0.4177

Net Profit Margin

0.2357

0.1502

0.3118

0.3096

0.3645

0.3669

0.3415

Interest Coverage Ratio

13.9982

16.5821

20.3429

25.3782

34.7835

47.4275

52.0244

Income Before Tax Profit Margin

0.2574

0.3305

0.3472

0.3708

0.423

0.4222

0.4214

And below a few of the profitability ratios are plotted for Microsoft.

FinancialRatios

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

Obtaining Financial Models

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

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

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

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

2017

2018

2019

2020

2021

2022

2023

Interest Burden Ratio

0.9572

0.9725

0.9725

0.988

0.9976

1.0028

1.005

Tax Burden Ratio

0.7882

0.8397

0.8643

0.8661

0.869

0.8356

0.8486

Operating Profit Margin

0.2796

0.2745

0.2527

0.2444

0.2985

0.302

0.2967

Asset Turnover

nan

0.7168

0.7389

0.8288

1.0841

1.1206

1.0868

Equity Multiplier

nan

3.0724

3.5633

4.2509

5.255

6.1862

6.252

Return on Equity

nan

0.4936

0.5592

0.7369

1.4744

1.7546

1.7195

And below each component of the Extended Dupont Analysis is plotted including the resulting Return on Equity (ROE).

Models

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:

Greeks

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.

Performance

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

Obtaining Risk Metrics

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

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

AAPL

MSFT

Benchmark

2023-09-25/2023-10-01

-0.0205

-0.0133

-0.0122

2023-10-02/2023-10-08

-0.0048

-0.0206

-0.0108

2023-10-09/2023-10-15

-0.0089

-0.0092

-0.0059

2023-10-16/2023-10-22

-0.0135

-0.0124

-0.0131

2023-10-23/2023-10-29

-0.0224

-0.0293

-0.0139

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

Risk

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

Obtaining Technical Indicators

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

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

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

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

Date

Base Line

Conversion Line

Leading Span A

Leading Span B

2023-10-30

174.005

171.755

176.245

178.8

2023-10-31

174.005

171.755

176.37

178.8

2023-11-01

174.005

170.545

176.775

178.8

2023-11-02

174.005

171.725

176.235

178.8

2023-11-03

174.005

171.725

175.558

178.8

And below the Ichimoku Cloud parameters are plotted for Apple and Microsoft side-by-side.

Technicals

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

Obtaining Fixed Income Metrics

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

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

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

Date

AAA

AA

A

BBB

BB

B

CCC

2024-04-19

0.0518

0.0532

0.0561

0.0594

0.0678

0.0804

0.1385

2024-04-22

0.0517

0.0532

0.056

0.0593

0.0671

0.0793

0.1377

2024-04-23

0.0514

0.0528

0.0556

0.0589

0.066

0.0777

0.1364

2024-04-24

0.0518

0.0531

0.0559

0.0592

0.0664

0.0778

0.1361

2024-04-25

0.0524

0.0537

0.0564

0.0598

0.0673

0.079

0.1368

And below a variety of Fixed Income metrics are shown all acquired from the Fixed Income module.

Fixed Income

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:

Economics

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:

Portfolio

Applying Econometric Techniques

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

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

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

Coefficient

Std. Error

t-Statistic

P-Value

Intercept

0.0028

0.0017

1.6815

0.0943

TSM

-0.0054

0.0523

-0.1028

0.9182

QCOM

0.1432

0.0361

3.9717

0.0001

SWKS

0.2141

0.0484

4.4221

0.0000

MSFT

0.3036

0.0864

3.5144

0.0005

GOOGL

0.1448

0.0689

2.1015

0.0369

AMZN

0.0617

0.0529

1.1664

0.2448

META

-0.0132

0.0389

-0.3398

0.7343

NVDA

-0.0024

0.0415

-0.0575

0.9542

XOM

-0.0291

0.0373

-0.7799

0.4364

PG

0.2858

0.0707

4.0393

0.0001

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

MCP Server

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

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

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

Remote server

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

Client

Steps

Claude Desktop

Customize → Connectors → Add custom connector → paste the URL

Claude.ai

Customize → Connectors → Add custom connector → paste the URL

Claude Code

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. As the Finance Toolkit makes use of threading, initializing the Toolkit with a single ticker will result in a slow process. This is because the Toolkit will have to wait for the previous request to finish before it can start the next one. Therefore, it is recommended to initialize the Toolkit with all tickers you want to analyze. If it is taking 10+ minutes consider having a look at this issue that managed to resolve the problem.

Are you part of FinancialModelingPrep?

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

Contributing

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


Find the Contributing Guidelines here.


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

Mentions

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

Blogposts

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
breadthB
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-08-19
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-08-20
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

B3.4/5.0
Behavior3/5

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

Beyond the readOnlyHint annotation, the description explains that the tool automatically applies to price data, which is a behavioral detail. It does not discuss rate limits, error handling, or output structure, but the read-only and idempotent hints already cover the main expectations.

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

Conciseness4/5

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

The description is compact and front-loaded with the purpose. The list of indicators is somewhat redundant with the enum in the schema, but it is brief and does not overwhelm. The two paragraphs are well-structured and to the point.

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

Completeness3/5

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

Given the tool's complexity (19 parameters), the description does not explain the meanings of many parameters (e.g., short_window, standardize, volume_divisor) or the output format. However, the schema descriptions compensate, so the description is minimally sufficient but not comprehensive.

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

Parameters3/5

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

The schema already provides detailed descriptions for all parameters (100% coverage). The description adds limited extra value by clarifying that tickers should be comma-separated and by listing the available indicator names, but it does not explain windows, standardization, or other nuances beyond the schema.

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

Purpose4/5

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

The description clearly states that this tool provides market breadth technical indicators and lists several examples (e.g., McClellan Oscillator, OBV). It distinguishes the category from sibling tools like momentum or liquidity by naming the indicator family, though it does not explicitly contrast with alternatives.

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

Usage Guidelines3/5

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

It gives a key usage hint that price data is automatically handled ('no need to fetch prices first') and specifies that tickers should be provided. However, it does not mention when not to use this tool or mention alternative tools, leaving some ambiguity about selection among sibling indicators.

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

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.

econometricsA
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-08-19
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-08-20
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

A3.7/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 the 'Requires tickers' constraint and the indicator list, but it does not describe output shape, p-value conventions, or behavior when required inputs are omitted. With an output schema present, this is acceptable but not especially rich.

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

Conciseness2/5

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

The first three sentences are compact and front-loaded, but the description then appends a 48-item 'Available indicators' list that duplicates the tool's own enum. This creates a long, dense wall of text that undermines conciseness and adds little value for an agent that can already read the enum in the schema.

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

Completeness4/5

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

For a tool with 80 parameters and 48 selectable indicators, the description provides the essential context: what the tests are, when to use them, and the tickers requirement. The presence of an output schema, annotations, and a detailed indicator enum reduces the need to document return formats and every parameter; still, per-indicator selection guidance is absent.

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

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 per the rubric. The description adds a tickers requirement and repeats the indicator enum, but it does not add meaningful semantics for the other 79 parameters beyond what the schema already provides, many of which have generic descriptions like 'Value for p.'

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

Purpose5/5

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

The description opens with a specific verb+resource ('Statistical/econometric tests on price or return series') and enumerates concrete test families such as ADF, Johansen, Granger causality, and ARCH-LM, making the tool's scope unambiguous. It clearly differentiates this tool from sibling metric categories by emphasizing hypothesis testing and inference rather than simple metric calculation.

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

Usage Guidelines4/5

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

The description explicitly states when to use the tool: 'Use for pairs-trading/spread-modeling foundations or diagnosing return-series properties.' It also gives a concrete invocation hint ('Requires tickers=\'AAPL\''). However, it does not mention when not to use it or point to alternative sibling tools, so it stops short of top-tier guidance.

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

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-08-19
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-08-20
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 it returns pre-computed ratios and supports multiple tickers, but does not mention any side effects, data source variability, or rate limits. This adds moderate context beyond annotations but not rich behavioral detail.

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

Conciseness4/5

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

The description is a single paragraph that front-loads the purpose and includes a long list of indicators. The indicator list is redundant with the schema enum, but the overall length is manageable and the essential information is up front. It earns a high score for being relatively concise while conveying core details.

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

Completeness4/5

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

Given the tool's complexity (12 params, many indicators) and the presence of a detailed schema and output schema, the description adequately sets expectations: it identifies this as an efficiency-ratio tool, explains it should replace raw financial statements, and lists supported metrics. It does not explain all parameter behaviors, but the schema covers those. The description is complete enough for an agent to know when and how to invoke the tool.

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

Parameters3/5

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

Schema description coverage is 100%, so all 12 parameters already have detailed descriptions. The description restates tickers format and quarterly/date support, and lists indicators already present in the enum, adding little extra semantic value. Also, the claim 'Requires tickers=...' conflicts with the schema where tickers is optional with a default, creating minor confusion.

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

Purpose5/5

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

The description clearly states that the tool provides 'Pre-computed efficiency ratios' and enumerates specific metrics (asset turnover, inventory turnover, DSO, DPO, CCC). It also distinguishes itself from raw financial statements and lists available indicators, making the purpose and scope unambiguous.

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

Usage Guidelines4/5

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

The description gives clear usage context: 'Requires tickers=...' and 'Use instead of raw financial statements.' It mentions support for quarterly and date range parameters, but does not explicitly contrast with sibling tools (e.g., liquidity, solvency) or state when not to use it. Still, the classification by ratio type is evident from the name and sibling list.

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

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-08-19
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-08-20
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

A4.4/5.0
Behavior4/5

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

With readOnlyHint=true, openWorldHint=true, and idempotentHint=true already declared, the safety profile is fully covered by annotations — the burden on the description is low. The description adds genuine value on top by disclosing the dual-query-style behavior (tickers vs countries) and characterizing rolling/trailing as 'smoothing/summation.' No contradiction with the read-only annotations; the description consistently implies pure data access.

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

Conciseness5/5

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

Three dense sentences, each with a distinct job: state the domain, give usage patterns, differentiate from siblings. The 'Available indicators' enumeration replaces longer prose and mirrors the enum. For a 13-parameter dispatcher tool this is appropriately sized — nothing extraneous, nothing missing.

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

Completeness4/5

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

For a complex dispatcher with 13 parameters, an output schema, and safe read-only annotations, the description covers the essential decision surface: domain, parameter-selection strategy, special smoothing behavior, and indicator list. The presence of an output schema relieves it of explaining return values. It could have more explicitly stated the dispatcher pattern (one call = one of three named endpoints) and acknowledged the annual/quarterly dimension, but nothing critical is missing.

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

Parameters4/5

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

Schema coverage is 100% with rich per-parameter descriptions, so baseline is 3. The description elevates this by disambiguating the easily-confused rolling (smoothing) and trailing (summation) parameters, and by teaching which parameter family fits which indicator. A minor blemish: the schema's indicator enum example ('get_asset_turnover_ratio') is stale and inconsistent with the actual enum values, which the description partially papers over by listing the three real indicator names.

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

Purpose5/5

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

Opens with a clear domain statement ('Environmental and ESG data') followed by specific, actionable examples mapping indicators to parameters ('For ESG scores... use tickers="AAPL"'). Closes with explicit sibling differentiation ('This is the only tool that accepts BOTH tickers= and countries=') which positions it squarely against the breadth/momentum/volatility family. The verb+resource is specific and the tool's dispatcher role is evident.

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

Usage Guidelines4/5

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

Provides concrete when-to-use-which-parameter guidance (tickers for ESG scores, countries for carbon/renewable data) and flags the rolling/trailing behavior with examples. The 'only tool that accepts BOTH' phrasing helps rule out alternatives, though it never names a specific sibling to prefer instead. Loses a point for not addressing when NOT to use this tool (e.g., single-instrument financial metrics that belong to siblings like momentum or valuation).

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

fixed_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-08-19
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-08-20
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.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 safe calculation nature is established. The description adds that parameters are passed directly and enumerates indicators, but it does not describe return behavior, response format, or edge cases beyond what annotations and schema already imply.

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

Conciseness4/5

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

The description is front-loaded with the core purpose, then clarifies the input style, then enumerates the indicators. It is reasonably concise given the breadth of the tool, though the indicator list partially duplicates the enum in the schema.

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

Completeness3/5

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

Given the high complexity of 40 parameters and 12 indicators, the description could do more to map indicators to their relevant parameters. It provides the indicator names and general input guidance, but stops short of helping an agent determine which parameters to supply for each specific calculation; output-schema presence helps but does not fully compensate.

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

Parameters3/5

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

Parameter descriptions in the schema are extensive, so the description doesn't need to repeat all 40 parameters. It does add helpful examples like coupon_rate, maturity, and spot_rates, though it also mentions face_value which does not appear in the schema, causing slight confusion.

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

Purpose5/5

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

The description clearly states the tool performs bond and derivative valuation calculations with a specific list of supported indicators, such as duration, yield-to-maturity, and Z-spread. It also distinguishes this tool from market-data siblings by noting that no tickers or countries are needed and that parameters are provided directly.

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

Usage Guidelines3/5

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

The description gives useful context: it is for calculations using direct bond/derivative parameters rather than ticker-based lookups, and it lists available indicators. However, it does not explicitly say when to prefer this tool over sibling tools like valuation, rates, or options, nor does it give exclusions or alternatives.

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

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-08-19
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-08-20
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.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. Description adds meaningful behavioral info: mandatory countries constraint, prohibition on tickers, and explains rolling vs trailing data transformations. No contradictions. Could mention pagination or output size limits but output schema exists.

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

Conciseness4/5

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

Two concise paragraphs. First paragraph explains purpose and key constraints; second lists indicators. Front-loaded. No fluff. The indicator list is redundant with schema enum but serves as quick reference. Sufficiently concise.

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

Completeness5/5

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

Given the high schema coverage and output schema present, the description is complete. It covers all critical usage constraints (countries required, tickers forbidden, date/frequency options) and clarifies the main non-obvious parameters (rolling vs trailing). No gaps.

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

Parameters4/5

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

Schema coverage is 100%, so baseline 3. However, description adds critical information: countries must be provided (default empty but required), tickers= not used, rolling=N and trailing=N semantics clarified (moving-average vs trailing sum), and shows comma-separated example. This elevates beyond schema.

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

Purpose5/5

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

The description clearly specifies the tool's function: government fiscal metrics by country (debt, deficit, expenditure, revenue, tax revenue). It lists all 11 available indicators explicitlyaining any ambiguity about scope. The verb 'get' and the resource 'fiscal metrics' with country parameters is specific.

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

Usage Guidelines4/5

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

Provides explicit conditions: requires countries='United States' (with comma-separated for multiple), supports date range and quarterly, and explicitly warns NOT to use tickers=. This gives strong practical usage guidance. Minor gap: doesn't mention when to prefer this over sibling economic tools, but that's acceptable given the tool's clear domain.

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

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-08-19
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-08-20
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/5.0
Behavior5/5

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

Beyond the readOnly/openWorld/idempotent annotations, the description discloses meaningful behavioral traits: two indicators are US-only and ignore the countries argument, they require a FRED API key, and they always return only a 'United States' column. It also clarifies that rolling is moving-average smoothing and trailing is a trailing-period sum, adding real value beyond the annotations.

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

Conciseness4/5

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

The description is dense but well organized: scope, key usage constraints, transformation options, special-case caveats, and a clear indicator list. The indicator list partially duplicates the schema enum, and the 'Requires countries="United States"' phrasing is slightly ambiguous, but every sentence contributes operational content and the text is front-loaded with the core purpose.

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

Completeness4/5

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

Given 13 parameters, an output schema, and a multi-indicator tool, the description covers the critical operational context: country requirements, date/quarterly support, rolling/trailing transforms, FRED-specific limitations, and the full indicator set. An output schema exists and covers return structure. Minor gaps include not clarifying the OECD/GMDB source distinction in the description and the slightly ambiguous 'Requires countries' wording.

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

Parameters4/5

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

The schema already documents all 13 parameters with good descriptions, so the baseline is 3. The description adds extra semantic value by explaining comma-separated countries, prohibiting tickers, clarifying rolling/trailing behavior on raw series, and highlighting country/API-key constraints for FRED indicators. It does not exhaustively elaborate every parameter, but the schema covers those adequately.

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

Purpose5/5

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

The description clearly states the tool's scope: 'Labour and social metrics by country' and enumerates the exact indicators available (unemployment, productivity, population, poverty, income inequality, nonfarm payrolls, initial jobless claims). This distinguishes it from sibling tools like 'macroeconomics' or 'government' and gives a specific, actionable purpose.

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

Usage Guidelines4/5

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

The description gives strong practical guidance: countries must be specified, comma-separated values are supported, tickers should NOT be used, and date/quarterly/rolling/trailing parameters are supported. It also flags the FRED API key requirement and US-only behavior for two indicators. However, it does not explicitly name alternative tools or state when to prefer a sibling tool over this one.

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

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-08-19
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-08-20
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

A4.4/5.0
Behavior4/5

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

Annotations already indicate readOnly, idempotent, and openWorld, so the description doesn't need to restate safety. It adds useful behavioral details such as returning the list of indicators when omitted, behavior of standardize and growth parameters, and how show_columns affects output, which goes beyond the annotations.

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

Conciseness5/5

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

The description is a single, well-structured sentence that covers key facts: what it provides, the required tickers, and the available indicators. It avoids redundancy and is easy to parse, with the parameter list neatly embedded in the schema.

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

Completeness4/5

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

Given there is no explicit output schema, the description sufficiently conveys what to expect: pre-computed ratios, options for standardization/growth, and filtering via show_columns. It also informs about placeholder behavior when indicator is omitted. Missing details like exact output format are not critical for tool selection.

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

Parameters4/5

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

The schema already provides 100% coverage with detailed descriptions for every parameter. The description supplements this with practical examples (e.g., comma-separated tickers, quarterly=true, start_date/end_date) and clarifies that indicator is required, adding value beyond the schema's generic text.

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

Purpose5/5

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

The description explicitly states the tool provides pre-computed liquidity ratios, lists the specific indicators available (current, quick, cash, working capital, etc.), and distinguishes it from raw financial statements. This clearly defines the tool's purpose and sets it apart from other ratio-focused tools.

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

Usage Guidelines4/5

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

The description advises using this tool instead of raw financial statements and explains required parameters (indicator) and optional ones (tickers, quarterly, date range). However, it doesn't explicitly contrast with sibling ratio tools like profitability or solvency, though the name and indicator list make the use case clear.

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

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-08-19
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-08-20
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.6/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint, idempotentHint), the description reveals significant behavioral traits: some indicators require a free FRED API key, six indicators return only 'United States' regardless of countries, get_commodity_forward_curve returns dated futures contracts instead of a country series, and rates/ratios are returned as decimal fractions. These details go well beyond what annotations or schema convey.

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

Conciseness4/5

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

The description is long but packed with essential usage details and special cases that are necessary for correct invocation. It front-loads the core purpose and then organizes guidance logically (general usage, then indicator-specific notes). Given the tool's complexity (19 params, 44 indicators), the length is justified and not fluff.

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

Completeness5/5

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

This is a highly complex tool with many parameters, indicators, and edge cases. The description covers the major pitfalls: required countries, source selection, FRED key requirements, US-only behavior, rolling/trailing semantics, and output format (decimal fractions). The presence of an output schema reduces the need to describe return values, and the description addresses the remainder comprehensively.

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

Parameters4/5

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

Schema covers 100% of parameters, so baseline is 3. The description adds meaning by explaining rolling as moving-average smoothing and trailing as trailing N-period sum, clarifying source selection (gmdb_source, oecd_source), and detailing special parameter requirements (commodity for forward curve, countries for most indicators). This enriches understanding beyond the schema's field-level descriptions.

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

Purpose5/5

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

The description states the tool provides macroeconomic indicators for countries and lists a comprehensive set of specific indicators (GDP, CPI, inflation rate, etc.), which clearly distinguishes it from sibling finance/metric tools like momentum or liquidity. It uses a specific verb-resource construction and the scope is unambiguous.

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

Usage Guidelines4/5

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

The description gives explicit usage instructions: requires countries='United States', do not use tickers, supports start_date/end_date, quarterly, rolling, trailing, and includes special-case guidance for specific indicators (oecd_source for CPI, commodity for forward curves, FRED key for US-only indicators). It lacks explicit exclusions for when not to use the tool, but the unique domain makes the differentiation clear.

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

market_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-08-19
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-08-20
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
Behavior5/5

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

While annotations already mark this as read-only, idempotent, and open-world, the description adds beyond that by specifying ticker requirements, indicator list, and the unusual behavior of two indicators that ignore most parameters. This supplements the annotation with practical operational details.

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

Conciseness4/5

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

The description is well-structured with a clear lead sentence, usage guidance, and a bullet list of indicators. It's slightly verbose but efficiently organized, front-loading the key purpose and constraints.

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

Completeness4/5

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

Given the tool's complexity (20 parameters, many indicators, output schema), the description covers the main purpose, usage boundaries, and special cases. It doesn't repeat output schema details because that's already present, and it provides enough context for an agent to select and invoke the tool appropriately.

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

Parameters3/5

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

The input schema has 100% description coverage, so baseline is 3. The description adds some context (e.g., tickers format, special case for two indicators) but does not clarify vague schema fields like 'Value for fill_nan' or 'Value for show_errors'. It does not significantly enhance parameter understanding beyond the schema.

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

Purpose5/5

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

The description explicitly states the tool provides raw financial data across numerous categories (prices, statements, profiles, etc.) and contrasts it with dedicated tools for pre-computed metrics. This clearly distinguishes it from its siblings such as momentum, volatility, and profitability.

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

Usage Guidelines5/5

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

It gives explicit direction: 'Use this ONLY for raw data needs' and points to alternative tools for ratios, performance, risk, or model metrics. It also notes the ticker requirement and explains that get_market_risk_premium and get_commitment_of_traders ignore most parameters, providing clear when-to-use and when-not-to-use guidance.

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

modelsC
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-08-19
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-08-20
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

C2.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=true, so the description need not repeat those. It adds some behavioral context by specifying the ticker requirement (though this contradicts the schema) and supporting quarterly or date-range options. However, it does not describe output behavior, error conditions, or how multiple tickers are handled beyond a comma-separated format, leaving gaps that annotations don't cover.

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

Conciseness2/5

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

The description is bloated, repeating the full list of indicator names that already exist in the enum. It front-loads the purpose but then dumps the entire enum list in a single paragraph, which is redundant and wastes tokens. A concise reference to the schema or a few examples would be more efficient. The description is not appropriately sized for its content.

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

Completeness3/5

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

Given the tool's complexity (25 parameters, many indicator-specific), the description provides only a high-level overview (ticker requirement, quarterly/date support) and a list of indicators. It does not explain which parameters are needed for which indicators (though the schema covers some), nor does it mention that the output schema is available. The description also omits guidance on parameter interactions and fails to resolve the ticker requirement ambiguity, making it incomplete for such a complex tool.

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

Parameters2/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 placeholders like 'Value for diluted.' or 'Value for periods.' that add little meaning. The description adds a few useful notes (ticker requirement, quarterly/date support), but it also incorrectly states tickers are required when the schema lists them as optional, confusing parameter semantics. It does not clarify which optional parameters apply to which indicators beyond what the schema already says.

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

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 'Pre-computed financial models' and lists the specific models (WACC, DuPont, DCF, etc.), which conveys a specific verb (compute) and resource (financial models). It distinguishes from sibling categories by listing its unique indicators, though it doesn't explicitly name alternatives like 'valuation' or 'profitability' tools, so it lacks a direct differentiation statement.

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

Usage Guidelines2/5

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

The description mentions prerequisites ('Requires tickers=...') and options (quarterly, date range), but it does not provide guidance on when to choose this tool over sibling categories (e.g., momentum, liquidity). There is no explicit 'when-to-use' or 'when-not-to-use' advice, and no mention of alternatives, so agents receive little direction on tool selection.

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

momentumA
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-08-19
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-08-20
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

A3.7/5.0
Behavior4/5

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

With readOnlyHint, openWorldHint, and idempotentHint already present, the description adds useful behavioral context: price data is handled automatically, tickers are required, and multiple tickers are supported via comma separation. No contradiction with annotations exists.

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

Conciseness3/5

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

The first sentence is front-loaded and useful, but the description includes a long list of 22 indicator names that duplicates the indicator enum in the input schema. The list adds bulk without much new information, making the description less concise than it could be.

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

Completeness3/5

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

Given the tool's complexity (27 parameters) and rich schema, the description provides a reasonable overview but does not clarify which parameters apply to which indicators or how to pick among the many indicator options. The output schema and annotations help, but the description leaves important selection guidance to the agent.

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

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 carries most parameter meaning. The description adds that tickers is effectively required and that defaults differ by indicator, but many parameters still rely on generic schema descriptions like 'Value for window_1' without further explanation.

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

Purpose4/5

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

The description clearly identifies the tool as providing momentum technical indicators (RSI, MACD, Stochastic Oscillator, etc.) and is distinct from categories like volatility, breadth, and performance. It lacks an explicit verb like 'computes' or 'returns,' but the scope and examples make the purpose clear.

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

Usage Guidelines4/5

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

It provides clear usage context: apply momentum indicators to price data automatically, no need to fetch prices first, and tickers must be supplied as 'AAPL' or comma-separated values. It does not explicitly mention when not to use it or recommend sibling tools, so it stops short of a 5.

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

optionsB
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-08-19
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-08-20
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

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 established. The description adds only the tickers requirement and indicator list, but no deeper behavior like error handling, return format, or rate limits, so it meets but doesn't exceed expectations.

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

Conciseness2/5

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

The first sentence is front-loaded and informative, but the long list of indicators duplicates the enum in the input schema, creating redundancy and length. This list adds bulk without explaining each indicator or its parameters.

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

Completeness2/5

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

With 39 parameters and 34 possible indicators, the description should explain which parameters apply to which indicator. It only provides a flat list of indicators and a ticker requirement; parameter-indicator mapping is left entirely to the schema, which has many tautological descriptions. An output schema exists but return semantics are not described.

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

Parameters3/5

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

The schema provides 100% description coverage, so the baseline is 3. The description adds guidance on tickers ("Requires tickers='AAPL'") and lists indicators, but most parameters remain poorly explained with generic "Value for X" schema descriptions; the description does not compensate for the 30+ parameters.

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

Purpose4/5

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

The description explicitly states "Option pricing and Greeks (Black-Scholes model, binomial tree, delta, gamma, theta, vega, rho, implied volatility)", which clearly identifies the tool's domain and distinguishes it from broader siblings like volatility or models. It also enumerates 34 available indicators, making the scope concrete. However, it lacks an explicit verb, so it's not a 5.

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

Usage Guidelines4/5

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

It gives clear usage context with "Requires tickers='AAPL' — use comma-separated values for multiple tickers," and lists the available indicators to choose from. It does not explicitly name alternatives or when-not-to-use, but the context is sufficient for a domain-specific tool.

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

overlapA
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-08-19
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-08-20
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

A3.6/5.0
Behavior4/5

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

Beyond the readOnly/idempotent annotations, the description adds that price data is fetched automatically (no need to fetch prices first) and enumerates available indicators. Minor limitation: no mention of output format or rate limits, but annotations cover critical side-effect aspects.

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

Conciseness4/5

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

The description is concise and organized into two short paragraphs. The list of indicators is redundant with the schema enum, but it adds a quick reference. No filler or excessive detail.

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

Completeness3/5

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

Given the tool's complex input schema, the description provides helpful context (price data handling, indicator list) but omits a clear definition of 'overlap' and lacks guidance on parameter interactions. The presence of an output schema may cover return formatting, but the description alone is not fully complete.

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

Parameters3/5

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

The description clarifies 'tickers' and 'indicator' (comma-separated, list of options) and 'show_columns' indirectly. However, many parameters (af_start, af_increment, sensitivity) have generic 'Value for X' descriptions in the schema, and the description does not enrich them. Schema coverage is 100% but semantics are weak for most parameters.

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

Purpose4/5

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

The description states the tool computes technical overlap indicators (SMA, EMA, Bollinger Bands, Keltner Channels) and lists available indicators. It clearly identifies the resource (price data) and the general action, but could be more precise about the 'overlap' concept and differentiate from sibling categories.

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

Usage Guidelines3/5

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

The description implies usage for overlap indicators and notes no need to fetch prices separately, but does not explicitly contrast with sibling tools like momentum or volatility. It lacks clear when-to-use vs alternatives guidance.

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

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-08-19
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-08-20
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?

The description adds useful behavioral detail beyond the readOnly/idempotent annotations: cumulative=true returns a compounded growth index rebased to 1, rolling=N changes output to a rolling N-period value, and period='daily' is explicitly rejected. This gives the agent practical expectations about output shape and supported frequencies without contradicting the annotations.

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

Conciseness3/5

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

The core sentences are dense and informative, front-loading the main metrics and key parameter behaviors. However, the long 'Available indicators' list duplicates the input schema enum and appears truncated mid-word with 'g', which is redundant and structurally messy.

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

Completeness4/5

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

Given the tool is an indicator hub with 26 parameters and an output schema, the description covers the most important decision-relevant behavior: available metric families, cumulative/rolling semantics, required tickers, and unsupported daily periods. It does not explain benchmark_ticker defaults or factor-specific parameters, but those are already documented in the schema and the description provides enough orienting context for a complex tool.

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

Parameters4/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 26 parameters. The description adds meaningful semantics for high-leverage parameters by explaining cumulative=true, rolling=N, period options, tickers formatting, and required indicator behavior. This goes beyond the schema's generic per-parameter descriptions, especially for rolling and cumulative combinations.

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

Purpose4/5

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

The description identifies the resource as 'Pre-computed risk-adjusted performance metrics' and enumerates specific metrics (Sharpe, Sortino, Alpha, Beta, CAPM, etc.), which distinguishes it from sibling tools like momentum, volatility, and risk. However, it lacks an explicit action verb such as 'calculates' or 'returns', and the broad tool name 'performance' makes the purpose slightly less crisp than a direct command.

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

Usage Guidelines3/5

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

The description gives concrete usage constraints: tickers must be supplied like 'AAPL', comma-separated for multiple tickers, and period='daily' is unsupported with explicit alternatives ('use weekly, monthly, quarterly, or yearly'). It does not, however, explain when to use this tool instead of sibling tools such as risk or volatility, or when to choose one indicator family over another.

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

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-08-19
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-08-20
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.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds 'Pre-computed' as behavioral context and mentions that this tool avoids raw financial statements, but it does not disclose much beyond that. No contradiction with annotations exists.

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

Conciseness3/5

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

The opening sentences are concise and front-loaded with the key purpose and usage guidance. However, the large list of available indicators duplicates the enum already present in the input schema, making the description longer than necessary without adding new information.

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

Completeness4/5

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

Given the tool's complexity—12 parameters, a rich input schema, an output schema, and clear annotations—the description provides the essential selection and invocation cues: indicator choice, tickers requirement, time-series options, and differentiation from raw financial statements. It does not need to restate every schema detail.

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

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 a meaningful operational note: tickers must be set (e.g., 'AAPL') even though the schema does not mark tickers as required. It also highlights quarterly and date-range parameters. The many other parameters are well documented in the schema itself.

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

Purpose4/5

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

The description clearly identifies the tool as providing pre-computed profitability ratios and names major metrics like gross margin, ROE, and ROA. It distinguishes itself from raw financial statements and, through its metric list, from sibling ratio categories, though it lacks an explicit verb like 'Returns' or 'Gets'.

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

Usage Guidelines4/5

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

The description explicitly says 'Use instead of raw financial statements' and gives a practical invocation requirement: 'Requires tickers="AAPL"'. It also mentions quarterly=true and start_date/end_date support, giving clear usage context, though it does not explicitly contrast with sibling tools like solvency or liquidity.

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

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-08-19
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-08-20
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.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, and the description adds meaningful behavioral context: FRED-backed indicators return no data without an API key, only return a 'United States' column, and rolling/trailing have specific smoothing/sum semantics. No contradiction with annotations.

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

Conciseness2/5

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

The description is information-dense but overly long and poorly structured as a single wall of text. The 'Available indicators' list duplicates the enum in the input schema and is truncated mid-word ('g'), which is a structural defect. It could be tightened with headers and by removing redundant enumeration.

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

Completeness4/5

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

For a tool with 16 indicators and 18 parameters, the description covers the most important cross-cutting constraints: country requirements, ticker prohibition, FRED API key dependency, and rolling/trailing behavior. The output schema and rich input schema cover the remaining details, so the description is complete enough for correct invocation.

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

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 value beyond the schema by explaining how countries should be used, that tickers= must not be used, and what rolling/trailing mean in practice. This is more than the schema's generic parameter descriptions provide.

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

Purpose4/5

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

The description clearly identifies the tool as providing interest rate data and enumerates specific rate families (central bank policy rates, government bond yields, EURIBOR, ECB/Fed rates, Treasury yield curve, etc.), which distinguishes it from sibling tools like fixed_income or government. It lacks an explicit verb like 'retrieve' or 'get', but the resource scope is specific and unambiguous.

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

Usage Guidelines4/5

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

The description gives explicit usage constraints: requires countries='United States', forbids tickers=, supports start_date/end_date and quarterly=true, and explains rolling/trailing behavior. It also clarifies the optional FRED API key and which indicators are affected. It does not name sibling tools as alternatives, so it stops short of a 5.

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

riskA
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. Does NOT support period='daily'; use weekly, monthly, quarterly, or yearly instead.

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

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-08-19
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-08-20
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. Leave unset to use the default of the indicator you selected. Defaults differ between indicators.
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

A4.6/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 clear from the structured data alone. The description adds value by explaining behavioral nuances beyond the schema, such as the `rolling` behavior for different indicators and the `method` parameter defaults for specific indicators. There's no contradiction, so no points deducted.

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

Conciseness4/5

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

The description is long, but the complexity of the tool (47 parameters, 42 indicators) justifies it. The most critical information is front-loaded, and the 'Available indicators' list, while lengthy, improves usability since it can be referenced directly. One minor deduction for some redundancy with schema enums, but overall it's well-structured.

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

Completeness4/5

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

Given the tool's complexity and 47 parameters, the description covers the most critical constraints and interactions well. It explains the date handling via `period`, the roll-up via `rolling`, and default behaviors for parameters like `method`. However, it doesn't discuss all parameter combinations, and some less-common parameters like `within_period` or `show_full_results` are left to the schema. Still, it covers the critical mass for an agent to use it effectively.

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

Parameters5/5

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

Even though schema coverage is 100%, the description provides crucial semantic context that the schema lacks. For example, it explains how `moving` and `period` interact, clarifies the meaning of `tickers` (comma-separated), and details the `method` parameter's per-indicator defaults. It also explains the `threshold_percentile` parameter, which is not explained in the schema.

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

Purpose5/5

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

The description clearly identifies the tool as providing pre-computed risk metrics, listing a comprehensive set of metrics (VaR, CVaR, EVaR, GARCH, etc.). It differentiates from siblings by focusing solely on risk-related indicators and providing a large list of 'Available indicators'. The scope is explicit and detailed.

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

Usage Guidelines5/5

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

The description provides explicit usage constraints: 'Requires tickers='AAPL'' and 'Does NOT support period='daily''. It also explains how to use `rolling` and `period` together, and notes the behavior when `indicator` is omitted. These details far exceed what's in the schema, giving clear guidance on when and how to use the tool.

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

search_by_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.

solvencyA
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-08-19
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-08-20
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

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, but the description adds context beyond that: it clarifies that tickers are required, explains quarterly toggle, and lists all supported indicators. It also states 'pre-computed' and recommends using it over raw statements, which conveys the tool's derived nature. No contradictions with annotations.

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

Conciseness4/5

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

The description is front-loaded with the purpose and usage guidance, then lists the available indicators. The indicator list is somewhat redundant with the schema enum but still useful for quick scanning. It is concise overall, though the final list sentence is long. No wasted prose.

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

Completeness4/5

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

With 13 parameters and a full schema plus output schema, the description covers the essential context: what the tool does, when to use it, and key usage constraints. It does not explain return formats, but the output schema exists. The description is sufficiently complete for an agent to invoke the tool correctly, especially with the indicator list and example.

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

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 reinforces tickers as a requirement and names quarterly/start_date/end_date, but these are already well-documented in the schema. The indicator list duplicates the enum. The description adds minimal new semantic value beyond the schema, though it does give a concrete example (tickers='AAPL').

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

Purpose5/5

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

The description clearly states the tool provides pre-computed solvency ratios (debt-to-equity, interest coverage, debt-to-assets, net debt to EBITDA), giving a specific verb+resource and distinguishing it from sibling tools like liquidity or profitability. It also lists the exact available indicators, leaving no ambiguity about its scope.

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

Usage Guidelines4/5

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

The description explicitly says 'Use instead of raw financial statements', providing a clear when-to-use recommendation. It also gives an example requirement (tickers='AAPL') and mentions quarterly flag and date range support. However, it does not explicitly state when not to use it or mention alternatives like liquidity for other ratio types.

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

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-08-19
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-08-20
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

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds valuable behavioral context: two indicators 'require a Premium FMP subscription' and 'are fetched on first use only.' This goes beyond the annotations and alerts users to potential access restrictions and caching behavior.

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

Conciseness4/5

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

The first paragraph is concise and front-loaded with essential information. The second paragraph is a long list of indicators, but it is a single sentence and serves as a useful reference. Some redundancy exists because the same list appears in the schema enum, but the overall structure is clear and not wasteful.

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

Completeness4/5

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

Given the tool's complexity (15 parameters, 1 required, output schema present), the description covers the essential usage scenarios: ticker requirement, quarterly/dates, and the premium subscription caveat. It doesn't explain return values, but the output schema fills that gap. The description is sufficiently complete for an AI agent to select and invoke the tool.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are already documented. The description reinforces key parameters like tickers, quarterly, and start_date/end_date, but does not add deeper semantic meaning beyond what the schema provides. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states it provides 'Pre-computed valuation ratios' and lists specific metrics (P/E, EPS, EV/EBITDA, etc.). It distinguishes itself from sibling tools by focusing on valuation and explicitly says to use it 'instead of raw financial statements.' The purpose is specific and actionable.

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

Usage Guidelines4/5

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

The description provides clear usage context: 'Requires tickers="AAPL"' and 'use comma-separated values for multiple tickers.' It explicitly directs users to use this tool instead of raw financial statements, which is an alternative. It lacks explicit when-not-to-use instructions relative to sibling tools, but the guidance is sufficient.

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

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-08-19
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-08-20
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.6/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 safety profile is covered. The description adds that price data is fetched automatically and that omitting the indicator returns the list of available indicators, which is useful. However, it doesn't disclose details like rate limits, pagination, or what happens with invalid tickers, but given the annotations, a 3 is appropriate.

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

Conciseness4/5

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

The description is concise and front-loaded with the core purpose. It uses a short paragraph and a bullet-like list of indicators. It avoids unnecessary fluff and provides essential usage hints. Slightly more structure could be added, but it's efficient.

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

Completeness4/5

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

Given the tool's complexity (18 parameters, 7 indicators) and the presence of an output schema, the description is reasonably complete. It covers the key usage points: automatic price fetching, required tickers, indicator list, and window defaults. It doesn't explain return values, but the output schema covers that. It could mention the 'show_columns' parameter for reducing output, but that's in the schema. Overall, adequate for the complexity.

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

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 parameters. The description adds context for the 'indicator' parameter (required, omitting returns list) and the 'tickers' parameter (comma-separated, required). It also explains the 'window' parameter defaults for different indicators. This adds value beyond the schema, but the schema already does most of the work, so a 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool computes volatility technical indicators (ATR, True Range) and lists the available indicators. It distinguishes itself from siblings by focusing on volatility metrics, though it doesn't explicitly contrast with other technical analysis tools like momentum or overlap.

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

Usage Guidelines4/5

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

The description provides clear usage guidance: it states that price data is fetched automatically (no need to fetch prices first), requires tickers, and lists available indicators. It also mentions that omitting the indicator returns the list of available indicators. However, it doesn't explicitly state when to use this tool versus alternatives like momentum or overlap.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 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"
        +}
  2. 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"
  3. 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"
  4. 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"
  5. 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"
  6. 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
  7. 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
Disambiguation2/5

Several tools occupy overlapping territory: 'overlap' and 'volatility' both include Bollinger Bands and Keltner Channels, while 'performance' and 'risk' share volatility-related metrics. 'search_categories' vs 'search_by_category' are especially easy to confuse, and 'search_metrics' vs 'search_instruments' sound similar despite different purposes.

Naming Consistency2/5

Most tools are single-word category nouns like 'breadth', 'liquidity', and 'models', but then four tools use snake_case verbs: 'search_categories', 'search_by_category', 'search_metrics', 'search_instruments'. There is no consistent verb_noun or noun pattern across the set.

Tool Count3/5

At 26 tools, the server is on the heavy side of the ideal range, but each tool represents a distinct finance domain category and the three search tools help navigate the large surface. It is borderline rather than egregiously overstuffed.

Completeness5/5

The toolkit covers technical analysis, fundamental ratios, valuation, risk, performance, econometrics, options, fixed income, macro data, ESG, discovery, and raw market data. There are no obvious dead ends or missing core workflows for a data/analytics-focused finance server.

Maintenance

ActivityActive
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

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.
    375
    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.
    375
    Apache 2.0
  • A
    license
    A
    quality
    B
    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
    80
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JerBouma/FinanceToolkit'

If you have feedback or need assistance with the MCP directory API, please join our Discord server