Skip to main content
Glama
major7apps

tiingo-mcp

by major7apps

tiingo-mcp

License: MIT CI

A native Model Context Protocol server for the Tiingo financial data API. Version 2.1.0 exposes 38 tools across EOD, IEX, consolidated equity, BOATS, forex, crypto, Crypto Yield, funds, Search, news, fundamentals, corporate actions, and bounded upstream market-data subscriptions, plus three fixed resources, one resource template, and five prompts.

The server uses MCP over stdio. Its finite subscription tools connect to upstream Tiingo WebSockets; MCP Streamable HTTP and WebSocket transports are not part of this server.

Installation

Published 2.1.0 installers, MCPB bundles, and the crates.io package expose the 38-tool surface documented below.

Release installer

On macOS or Linux:

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/major7apps/tiingo-mcp/releases/download/v2.1.0/tiingo-mcp-installer.sh | sh

On Windows PowerShell:

powershell -ExecutionPolicy ByPass -c "irm https://github.com/major7apps/tiingo-mcp/releases/download/v2.1.0/tiingo-mcp-installer.ps1 | iex"

The installers place tiingo-mcp in Cargo's binary directory. Ensure that directory is on PATH so MCP clients can use the command by name.

Cargo

With Rust 1.88 or newer installed, install the latest published release:

cargo install tiingo-mcp --version 2.1.0 --locked

To install the current development tree from a local checkout:

cargo install --path . --locked

MCPB desktop bundle

Target-specific bundles are named tiingo-mcp-<target>.mcpb. Download a published bundle for your system, open it with an MCPB-compatible desktop host's extension installer, and enter your Tiingo API key when prompted. The bundle carries the binary and MCP configuration, so it does not require a separate executable path.

Supported release targets:

  • aarch64-apple-darwin

  • x86_64-apple-darwin

  • aarch64-unknown-linux-musl

  • x86_64-unknown-linux-musl

  • x86_64-pc-windows-msvc

Related MCP server: aigroup-finnhub-mcp

MCP configuration

Create an API key at api.tiingo.com. Endpoint access depends on the capabilities enabled for that key.

Add the server to your MCP client's configuration:

{
  "mcpServers": {
    "tiingo": {
      "command": "tiingo-mcp",
      "args": [],
      "env": { "TIINGO_API_KEY": "your-api-key-here" }
    }
  }
}

For Claude Code, the equivalent command is:

claude mcp add tiingo --env TIINGO_API_KEY=your-api-key-here -- tiingo-mcp

You can also launch the server directly:

TIINGO_API_KEY=your-api-key-here tiingo-mcp

tiingo-mcp starts the stdio MCP server by default, writes protocol messages only to stdout, and sends diagnostics to stderr. It exits cleanly when stdin closes.

Tools

Version 2.1.0 exposes this 38-tool surface. The original 17 tool names, required inputs, omission behavior, and results remain compatible; four optional columns fields are the only approved additions to those legacy descriptors.

Stocks (EOD and lifecycle metadata)

Tool

Description

get_stock_metadata

Per-ticker name, exchange, description, and EOD date range

get_stock_prices

Historical raw and adjusted EOD OHLCV, dividends, and splits

get_bulk_eod_prices

Typed bulk CSV refresh with raw/adjusted fields and history-refresh tickers

get_ticker_metadata

Selected vendor-supplied lifecycle/security-master columns

IEX REST

Tool

Description

get_realtime_price

Current per-ticker IEX snapshot

get_intraday_prices

Per-ticker IEX intraday history and optional columns

get_iex_market_snapshot

All-market IEX snapshot; use deliberately because the response can be large

Consolidated equity REST beta (4am–8pm ET)

Tool

Description

get_equity_realtime_snapshot

Consolidated ticker or all-market snapshot

get_equity_intraday_prices

Consolidated intraday history with resampling, after-hours, fill, and column filters

BOATS REST beta/add-on (8pm–3:59am ET)

Tool

Description

get_boats_snapshot

BOATS ticker or all-market snapshot

get_boats_prices

BOATS intraday history with resampling, after-hours, and column filters

Funds

Tool

Description

get_fund_metadata

Mutual-fund or ETF fee metadata

get_fund_fee_metrics

Current and historical mutual-fund or ETF fee metrics

Search early beta

Tool

Description

search_tiingo_assets

Bounded asset search by ticker or name

Crypto Yield

Tool

Description

get_crypto_yield_platforms

Lending-platform list with optional platform filters

get_crypto_yield_pools

Lending-pool metadata with pool/platform filters

get_crypto_yield_ticks

Latest lending-pool metric ticks

get_crypto_yield_metrics

Historical OHLC metrics for one lending pool

Forex beta

Tool

Description

get_forex_quote

Current top-of-book rate for one pair

get_forex_quotes

Batch top-of-book rates for 1–100 pairs

get_forex_prices

Historical forex prices

Crypto

Tool

Description

get_crypto_quote

Current prices for one or more crypto tickers

get_crypto_prices

Historical crypto prices

get_crypto_metadata

Ticker metadata and supported exchanges

News

Tool

Description

get_news

Search financial articles by ticker, tag, source, or date

Fundamentals

Tool

Description

get_fundamentals_definitions

Tiingo fundamental metric definitions

get_financial_statements

Income statements, balance sheets, and cash-flow statements

get_daily_fundamentals

Daily market and valuation metrics with optional columns

get_company_meta

Company sector, industry, and location metadata with optional columns

Corporate actions

Tool

Description

get_distributions_by_ex_date

Cross-ticker distributions for an optional exact ex-date, including announced events

get_dividends

Per-ticker dividend and distribution history

get_dividend_yield

Per-ticker dividend-yield history

get_splits

Per-ticker split history

get_splits_by_ex_date

Cross-ticker splits for an optional exact ex-date, including announced/cancelled events

Finite upstream market-data lifecycle

Tool

Description

start_market_data_subscription

Start one bounded IEX or consolidated-equity upstream subscription

poll_market_data_subscription

Poll retained events by local arrival sequence with finite limits/wait; terminal sessions include a sanitized terminalError classification

update_market_data_subscription

Add or remove explicit symbols on an active subscription; a partial failure reports the current appliedSymbols inventory

stop_market_data_subscription

Idempotently unsubscribe, close, cancel, and join the worker

EOD cache workflow

Seed each ticker's history from /tiingo/daily/{ticker}/prices. Refresh daily with bulk CSV /tiingo/daily/prices; the server returns typed JSON that keeps raw and adjusted OHLCV plus splitFactor and divCash separately named. If a refresh row has splitFactor != 1 or divCash > 0, reseed that ticker's cached history so its adjusted series reflects the corporate action.

Access and quota

Access is determined by the capabilities attached to the caller's Tiingo key; this project does not promise access from a named plan. HTTP 401 means Tiingo rejected the credential. HTTP 403 means the credential is valid but the account is not entitled to the requested capability.

  • IEX upstream subscriptions default to derived-reference threshold 6. Levels 0 and 5 are accepted only when the caller explicitly confirms a direct IEX market-data agreement.

  • Consolidated equity is beta, operates 4am–8pm ET, and supports reference ticks at threshold 6 or liquidity/top-of-book-derived data at threshold 4.

  • BOATS REST is a separate beta/add-on for 8pm–3:59am ET. It is not combined with consolidated equity into a unified 24x5 endpoint.

  • Fund-fee data is restricted to enterprise/institutional access. Fundamentals and corporate actions are entitlement dependent.

  • Search is early beta. Crypto Yield is plan/entitlement dependent. /tiingo/daily/meta is vendor-supplied and availability dependent; a 404 does not imply another route.

Every live REST call consumes quota and bandwidth, and every live upstream subscription consumes bandwidth. Filter tickers and dates. Bulk and all-market operations are deterministic-test only by default, not routine smoke tests.

Resources

The server exposes static reference data without making Tiingo API calls.

Resource

Description

tiingo://capabilities

Server capabilities and source-dated entitlement guidance

tiingo://fundamentals/definitions

Curated reference for common fundamental metrics

tiingo://guide/date-formats

Date formats, resample frequencies, sort options, and parameters

tiingo://guide/{asset_class}

Guide template for stocks, market data, forex, crypto, Crypto Yield, funds, Search, news, fundamentals, and corporate actions

Prompts

Prompt

Arguments

Description

analyze-stock

ticker, include_news

Comprehensive single-stock analysis

compare-stocks

ticker1, ticker2, period

Side-by-side stock comparison

crypto-market-overview

tickers

Crypto market snapshot with seven-day trends

earnings-report-analysis

ticker, earnings_date

Earnings report, price-reaction, and news workflow

forex-pair-analysis

pair, period

Currency-pair trend and volatility workflow

Results and errors

Successful tool calls return both a JSON text content block for older clients and MCP structured content. Recoverable failures are returned as MCP tool errors with a concise, sanitized JSON text block. A terminal WebSocket poll reports only authentication, entitlement, transport, or protocol in terminalError; it never retains Tiingo's raw rejection text. The client retries only safe transient failures, limits responses to 8 MiB, and never exposes the API key or authorization header in client-visible errors.

Development

git clone https://github.com/major7apps/tiingo-mcp.git
cd tiingo-mcp

cargo fmt --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-targets --locked
cargo llvm-cov --all-targets --all-features --locked --fail-under-lines 93 --summary-only
cargo build --release --locked
cargo deny check all

The normal test suite uses local mock servers and does not need a Tiingo key. Ignored live-smoke tests require TIINGO_API_KEY, explicit authorization, and consume API quota or bandwidth. See ARCHITECTURE.md, API_SURFACE.md, and QUALITY.md for maintained engineering and evidence contracts.

License

MIT

Available Tools

17 tools
get_company_metaA

Get company metadata including sector, industry, and location.

Args: tickers: Comma-separated ticker symbols (e.g. AAPL,MSFT,GOOGL).

ParametersJSON Schema
NameRequiredDescriptionDefault
tickersYes

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?

The description implies a read-only operation but does not explicitly state behavioral traits such as idempotency, rate limits, or authentication requirements. With no annotations, the description carries the burden, but the tool's simplicity limits the need for extensive disclosure.

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 extremely concise—two short sections—with no extraneous words. It front-loads the purpose and follows with a clear parameter explanation.

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 that an output schema exists, the description need not detail return values. However, it could mention that multiple tickers yield multiple results or hint at the output structure. Still, it covers the essential use case adequately.

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 description enriches the schema's bare string type by explaining the expected format (comma-separated tickers) and providing examples (AAPL,MSFT,GOOGL). This adds meaning beyond what the schema alone offers, compensating for the 0% schema description coverage.

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 verb 'Get' and the resource 'company metadata', specifying the fields sector, industry, and location. It distinguishes from siblings like get_stock_metadata by focusing on company-level attributes, though not explicitly contrasting them.

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?

No guidance is provided on when to use this tool versus alternatives like get_stock_metadata or get_fundamentals_definitions. There are no context cues for prerequisites or exclusions.

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

get_crypto_metadataA

Get metadata for crypto tickers including supported exchanges and pairs.

Args: tickers: Comma-separated crypto tickers to filter by. Omit for all.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It indicates a read-only operation ('Get metadata') but does not explicitly state it is non-destructive, required permissions, or any side effects. It is adequate but lacks explicit transparency.

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 two sentences with no wasted words. It front-loads the purpose and then provides parameter details. Every sentence earns its place.

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 presence of an output schema, the description need not explain return values. It adequately covers input and purpose. However, it does not mention whether the metadata includes all exchanges/pairs or just a subset, leaving some ambiguity.

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 input schema has 0% description coverage, but the description fully explains the 'tickers' parameter: it is a comma-separated list to filter by, and omitting it returns all. This adds significant meaning beyond the schema's minimal type definition.

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 retrieves metadata for crypto tickers, including supported exchanges and pairs. It uses a specific verb ('Get') and resource ('metadata'), and the mention of 'crypto tickers' distinguishes it from sibling tools like get_stock_metadata or get_forex_quote.

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 when crypto metadata is needed, but it does not explicitly state when to use this tool over alternatives like get_crypto_prices or get_crypto_quote. No exclusions or when-not-to-use guidance are provided.

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

get_crypto_pricesB

Get historical crypto prices.

Args: tickers: Comma-separated crypto tickers (e.g. btcusd, ethusd). start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format. resample_freq: Resample frequency — 1min, 5min, 15min, 30min, 1hour, 1day.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickersYes
end_dateNo
start_dateNo
resample_freqNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It does not disclose behavioral traits like rate limits, data source, or what happens if no data exists for a date range.

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 with a clear purpose sentence followed by a focused parameter list. No unnecessary content, though it could be slightly more streamlined.

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?

Beyond parameters, the description lacks completeness on usage edge cases (e.g., date inclusivity, missing data handling). However, the presence of an output schema partially compensates.

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 0%, but the description explains all 4 parameters: tickers (comma-separated), dates (YYYY-MM-DD), and resample frequency options. This adds significant 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 'Get historical crypto prices' with a specific verb and resource, and the parameters (date range, resample frequency) differentiate it from siblings like get_crypto_quote and get_realtime_price.

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?

No explicit guidance on when to use this tool versus alternatives. For example, it does not caution against using it for real-time data instead of get_realtime_price.

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

get_crypto_quoteB

Get current top-of-book crypto prices.

Returns data for all supported cryptos if no tickers specified.

Args: tickers: Comma-separated crypto tickers (e.g. btcusd, ethusd). Omit for all.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description bears full responsibility for disclosing behavior. It mentions the return behavior (all cryptos if no tickers specified) but does not disclose read-only nature, rate limits, data freshness, or any side effects. Minimal transparency beyond the tool's name.

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 concise and well-structured: a single-sentence purpose, followed by a note on default behavior, and a clear parameter specification. No unnecessary words or redundancy.

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 that there is only one optional parameter and an output schema exists, the description adequately covers the tool's interface and behavior. It explains the default return of all cryptos and parameter format. Minor gap: no mention of output structure, but output schema likely covers that.

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 0%, but the description compensates by explaining the 'tickers' parameter: comma-separated crypto tickers, with examples and default behavior (omit for all). This adds significant meaning beyond the raw 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 states 'Get current top-of-book crypto prices', which clearly specifies the verb (get), resource (crypto prices), and the specific type (top-of-book). However, it does not differentiate from sibling tools like 'get_crypto_prices', which could be confused. A brief distinction would improve clarity.

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?

No guidance is provided on when to use this tool versus alternatives such as 'get_crypto_prices' or 'get_realtime_price'. The description only explains the tool's behavior without context for selection.

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

get_daily_fundamentalsB

Get daily fundamental metrics for a stock (market cap, P/E ratio, etc).

Args: ticker: Stock ticker symbol (e.g. AAPL). start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, so description bears full burden. It does not disclose rate limits, data freshness, authentication needs, or that it's a read-only operation. Only the purpose is stated, not behavioral traits.

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?

Description is two lines plus Args block, no fluff, front-loaded. The Args section adds value but is slightly redundant with schema. Still concise.

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 3 parameters, no annotations, but has output schema, the description covers basic purpose and parameter formats. Lacks usage guidelines and behavioral transparency, making it adequate but 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?

Schema coverage is 0%, but description adds format examples (e.g., YYYY-MM-DD) and an example ticker (AAPL). However, it does not explain constraints like date ordering or allowed values beyond the schema defaults.

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 'Get daily fundamental metrics for a stock (market cap, P/E ratio, etc.)' with specific verb and resource, and distinguishes from siblings like get_fundamentals_definitions and get_financial_statements.

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?

No guidance on when to use this tool versus alternatives from the sibling list (e.g., get_stock_prices vs fundamental metrics). Lacks prerequisites, exclusions, or context about when this tool is appropriate.

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

get_dividendsA

Get historical dividend and distribution data for a stock or ETF.

Args: ticker: Stock/ETF ticker symbol (e.g. AAPL, SPY). start_date: Filter dividends with ex-date on or after this date (YYYY-MM-DD). end_date: Filter dividends with ex-date on or before this date (YYYY-MM-DD).

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose any behavioral traits such as idempotency, data freshness, or rate limits. The tool appears read-only, but this is not explicitly stated.

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 concise with a clear one-line purpose followed by parameter definitions. No extraneous information; every sentence earns its place.

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 an output schema (provided elsewhere), the description covers the essential input parameters and overall purpose. It lacks examples or notes on edge cases, but is sufficient given the output schema handles return value documentation.

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 input schema has 0% description coverage, but the description adds clear meaning for all three parameters: ticker symbol, start_date and end_date with format hints (YYYY-MM-DD). This compensates well for the lack of schema 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 clearly states the verb 'Get' and the resource 'historical dividend and distribution data', making the tool's purpose obvious. It distinguishes from sibling 'get_dividend_yield' by focusing on historical data rather than yield.

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?

No guidance on when to use this tool versus alternatives like 'get_dividend_yield' or other financial tools. The description lacks explicit context about prerequisites or scenarios.

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

get_dividend_yieldB

Get historical dividend yield data for a stock or ETF.

Args: ticker: Stock/ETF ticker symbol (e.g. AAPL, SPY). start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description bears full responsibility for behavioral disclosure. It states the tool gets data but does not clarify if the yield is daily/monthly, how missing data is handled, or any other behavioral traits beyond the basic operation.

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 with two lines of text plus an argument list. It is front-loaded with the main action and then details parameters. No unnecessary words.

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 that an output schema exists (not shown), the description need not explain return values. However, for a tool with three parameters and no annotations, the description could benefit from mentioning data frequency or default date behavior. It covers the essentials but has room for improvement.

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 0%, so the description compensates by explaining each parameter: ticker is a stock/ETF symbol with examples, and date parameters are specified to be in YYYY-MM-DD format. This adds valuable semantic meaning beyond the bare 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 the tool retrieves historical dividend yield data for stocks or ETFs, using the verb 'get' and specifying the resource type. It distinguishes itself from sibling tools like 'get_dividends' which likely returns actual dividend payments, not yield.

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 provides parameter formats but does not offer any guidance on when to use this tool versus alternatives such as 'get_dividends' or 'get_fundamentals'. No context on prerequisites, limitations, or typical use cases is given.

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

get_financial_statementsB

Get quarterly and annual financial statements (income, balance sheet, cash flow).

Args: ticker: Stock ticker symbol (e.g. AAPL). start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It only states what the tool returns without mentioning rate limits, authentication needs, data freshness, or any side effects. The lack of such context is a significant gap.

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 extremely concise: a two-sentence intro followed by a bullet-style args list. No wasted words, front-loaded with the primary purpose. The structure is clear and easy to scan.

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 that an output schema exists, the description does not need to detail return values. It covers the tool's function and parameter formats adequately for a 3-parameter tool. However, it lacks context on data scope (e.g., how far back data is available) and any constraints.

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 0%, so the description adds needed meaning. It explains ticker as a stock symbol and start_date/end_date as YYYY-MM-DD format, which aids understanding beyond the schema's type-only definitions. However, it does not clarify the default behavior when optional dates are omitted.

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 returns quarterly and annual financial statements (income, balance sheet, cash flow), specifying the verb 'Get' and the resource 'financial statements'. This distinguishes it from siblings like get_stock_prices or get_dividends.

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?

No guidance on when to use this tool versus alternatives like get_daily_fundamentals or get_fundamentals_definitions. It does not mention prerequisites, exclusions, or specific contexts for optimal use.

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

get_forex_pricesA

Get historical forex prices for a currency pair.

Args: ticker: Currency pair (e.g. eurusd, gbpusd, usdjpy). start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format. resample_freq: Resample frequency — 1min, 5min, 15min, 30min, 1hour, 1day.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes
end_dateNo
start_dateNo
resample_freqNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

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

No annotations provided; description only says 'Get historical forex prices' without explicitly stating it's a read-only operation or disclosing any behavioral traits like rate limits or authentication needs.

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?

Concise single paragraph with a list of parameters; front-loaded purpose, no redundant sentences.

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

Completeness4/5

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

Covers all parameters with examples and format; output schema exists so return values are not needed; minor omission of error conditions or data availability but overall adequate.

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?

With 0% schema description coverage, the description compensates by explaining each parameter: ticker examples, date format, and resample_freq enumeration, adding crucial 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 it gets historical forex prices for a currency pair, distinguishing it from siblings like get_forex_quote (realtime) and get_crypto_prices.

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?

No explicit guidance on when to use this tool versus alternatives; the purpose implies historical forex but lacks when-not conditions or alternative tool mention.

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

get_forex_quoteB

Get the current top-of-book forex quote for a currency pair.

Args: ticker: Currency pair (e.g. eurusd, gbpusd, usdjpy).

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

The description indicates 'current top-of-book' implying a real-time snapshot, which is a key behavioral trait. No annotations are provided, so the description carries the burden, but it lacks details on side effects, authentication, or rate limits. The return structure is covered by the output schema.

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 very short and front-loaded with the core purpose. It is efficient, but could potentially include slightly more detail (e.g., supported formats) without becoming verbose.

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 simplicity (single parameter, clear output schema), the description provides sufficient context. It states what the tool returns (current top-of-book quote) and the parameter meaning. The output schema covers the return structure, so no additional return detail is needed.

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 adds value beyond the raw schema by providing an example format (eurusd) for the ticker parameter. However, no explicit description of the parameter format or constraints is given, and schema coverage is 0%.

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 gets the current top-of-book forex quote for a currency pair. It specifies the resource (forex quote) and action (get). However, it does not explicitly distinguish from siblings like get_forex_prices, which may provide historical data.

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?

No guidance is provided on when to use this tool versus alternatives, nor are any prerequisites or when-not-to-use scenarios mentioned. The description only explains what the tool does, not its appropriate context.

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

get_fundamentals_definitionsA

Get definitions for all available fundamental metrics.

Returns the list of metrics available in daily and statement endpoints, including their names, descriptions, and data types.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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?

No annotations are provided, so the description must carry full behavioral disclosure. It accurately describes the tool as returning a list of metric definitions, noting the source endpoints. It does not cover auth or side effects, but these are likely minimal for a read-only tool with no parameters.

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 succinct sentences, front-loaded with the main action, and no wasted words. Highly efficient.

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?

The tool is simple with no parameters and has an output schema. The description adequately explains what it returns and its purpose, making it complete for its low complexity.

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?

Input schema has zero parameters, and schema description coverage is 100% (trivially). The description adds no parameter info, which is appropriate since there are none. Baseline for 0 parameters is 4.

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 gets definitions for all available fundamental metrics, specifying the return content (names, descriptions, data types) and linking to daily and statement endpoints. This distinguishes it from siblings that fetch data, like get_daily_fundamentals.

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?

Description does not explicitly state when to use this tool versus siblings like get_financial_statements or get_daily_fundamentals. The context is implied (use to know available metrics before fetching data), but no direct guidance or exclusions are provided.

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

get_intraday_pricesA

Get historical intraday prices from IEX at various intervals.

Args: ticker: Stock ticker symbol (e.g. AAPL). start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format. resample_freq: Resample frequency — 1min, 5min, 15min, 30min, 1hour, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes
end_dateNo
start_dateNo
resample_freqNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided, and description only states 'historical intraday prices' without disclosing behavioral traits like data range limits, API quotas, or error responses.

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

Conciseness4/5

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

Purpose is front-loaded in a single sentence, and parameters are listed clearly; minor redundancy with 'Args' label could be trimmed, but overall 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?

Parameter descriptions are complete, and output schema exists, but missing information on edge cases (e.g., missing dates, non-trading days) and behavioral constraints given lack of annotations.

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?

All four parameters are explained with examples (e.g., 'AAPL' for ticker, 'YYYY-MM-DD' for dates, valid frequencies for resample_freq), fully adding meaning beyond the schema's type-only definition.

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?

Clear verb 'get', specific resource 'historical intraday prices', and source 'IEX' distinguish it from sibling tools like get_stock_prices (daily) and get_realtime_price.

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?

No guidance on when to use this tool versus alternatives such as get_stock_prices for daily data or get_realtime_price for current data; context is missing.

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

get_newsA

Search financial news articles from 50M+ sources.

Args: tickers: Comma-separated ticker symbols to filter by (e.g. AAPL,MSFT). tags: Comma-separated tags to filter by. source: News source to filter by. start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format. limit: Maximum number of articles to return (default 10). offset: Number of articles to skip for pagination. sort_by: Sort order — crawlDate or publishedDate.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
limitNo
offsetNo
sourceNo
sort_byNo
tickersNo
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations provided, so description bears full burden. Only parameter descriptions are given; no behavioral traits (e.g., read-only, rate limits, output format, or side effects) are disclosed.

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?

Concise docstring-style with parameter list. No redundant sentences, all information relevant. Slightly verbose due to formatting, but acceptable.

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?

Covers all 8 parameters with explanations. Output schema exists, so return value description not required. Lacks details on pagination behavior and sort_by accepted values, but sufficient for basic usage.

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?

Description adds meaning to each parameter (e.g., 'Comma-separated ticker symbols to filter by (e.g. AAPL,MSFT)'). Schema lacks descriptions, so this compensates well. Lacks clarification on defaults and null behavior.

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 states 'Search financial news articles from 50M+ sources' with clear verb (search), resource (news articles), and scope (50M+ sources). Distinct from sibling tools focused on financial data like prices and fundamentals.

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?

No explicit when-to-use or when-not-to-use guidance. Context is implied by domain (news vs financial data), but no alternative tools mentioned or exclusions given.

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

get_realtime_priceA

Get the current real-time IEX top-of-book price for a stock.

Args: ticker: Stock ticker symbol (e.g. AAPL). after_hours: Include after-hours pricing data.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes
after_hoursNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided, so description carries burden. It discloses read operation and real-time IEX data, but doesn't disclose rate limits, latency, or authentication needs which are typical for price tools. Adequate for a simple read, but minimal.

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?

Description is concise and front-loaded: one sentence for purpose, then args. No wasted words.

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?

Covers purpose and parameters adequately. Output schema exists (not shown) so return values need not be explained. Could briefly clarify 'top-of-book' or real-time vs historical use, but overall sufficient.

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?

Schema coverage is 0%, so description must add meaning. It defines ticker as 'Stock ticker symbol (e.g. AAPL.)' and after_hours as 'Include after-hours pricing data,' adding critical context beyond types.

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 gets 'the current real-time IEX top-of-book price for a stock,' specifying verb, resource, and scope. It distinguishes from sibling tools like get_stock_prices (historical) and get_intraday_prices (intraday).

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?

Usage is implied as real-time price retrieval, but no explicit guidance on when to use vs siblings (e.g., get_stock_prices for historical data, get_intraday_prices for intraday). No exclusions or alternatives mentioned.

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

get_splitsA

Get historical stock split data.

Args: ticker: Stock ticker symbol (e.g. AAPL, TSLA). start_date: Filter splits with ex-date on or after this date (YYYY-MM-DD). end_date: Filter splits with ex-date on or before this date (YYYY-MM-DD).

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations provided, so the description carries the burden. It mentions 'historical stock split data' and date filtering, but does not disclose additional behavioral traits like data freshness or side effects. The existence of an output schema partially compensates.

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 concise (5 lines), front-loaded with purpose, and clearly separates parameter explanations. Every sentence adds value with no wasted words.

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?

The description covers purpose and parameters adequately. With an output schema present, return format is handled. However, it could mention behavior when no data is found (e.g., returns empty list). Minor gap.

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?

The description adds significant meaning beyond the bare schema: it explains ticker as a stock symbol, start/end dates as filter by ex-date with specific format YYYY-MM-DD. With 0% schema coverage, this is essential and well done.

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 'Get historical stock split data', with a specific verb ('get') and resource ('stock split data'). It is distinct from sibling tools like get_dividends or get_fundamentals_definitions.

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 explains the parameters (ticker required, optional start/end dates) and date format. It implies usage for retrieving split data but does not explicitly state when to use or avoid alternatives.

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

get_stock_metadataB

Get metadata for a stock ticker including name, exchange, description, and date range.

Args: ticker: Stock ticker symbol (e.g. AAPL, MSFT, GOOGL).

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations present, the description bears full responsibility for behavioral disclosure. It only states 'Get metadata' without confirming safety (read-only), describing error behavior for invalid tickers, or mentioning rate limits. This leaves the agent with insufficient behavioral 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, using two sentences and an args block. It is front-loaded with the purpose and specific fields. No redundant information is present.

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?

The tool has an output schema, so the description is not required to list all return fields. However, it only mentions a few fields (name, exchange, description, date range). For a metadata tool, the full output may include additional fields like currency, sector, etc. The description covers basics but could be more complete.

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?

Schema coverage is 0%, so the description must fully define the parameter. It does so clearly: 'ticker: Stock ticker symbol (e.g. AAPL, MSFT, GOOGL).' This provides both the parameter's meaning and examples, enabling correct usage.

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 it retrieves metadata for a stock ticker and lists specific fields (name, exchange, description, date range). However, it does not differentiate from sibling tools like get_company_meta or get_fundamentals_definitions, which likely serve similar purposes.

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?

No guidance is provided on when to use this tool versus alternatives. The description lacks context on prerequisites, such as needing a valid ticker, or scenarios where other tools (e.g., get_fundamentals_definitions) might be more appropriate.

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

get_stock_pricesA

Get historical end-of-day stock prices with adjusted and unadjusted OHLCV data.

Args: ticker: Stock ticker symbol (e.g. AAPL). start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format. resample_freq: Resample frequency — daily, weekly, monthly, or annually.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes
end_dateNo
start_dateNo
resample_freqNo

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?

No annotations are provided, so the description carries the full burden. It states the tool returns adjusted and unadjusted OHLCV data but does not disclose behavioral traits such as data source, rate limits, maximum date range, or whether data is cached.

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 concise: one sentence summarizing the tool, followed by a clear parameter list. Every line is informative, and there is no fluff.

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

Completeness3/5

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

An output schema exists, so return values need not be explained. However, the description does not specify default behavior for optional parameters (e.g., what happens if start_date and end_date are null), or any limitations like exchange coverage. Given the number of siblings, more context would help.

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 input schema has no parameter descriptions (0% coverage), but the tool description compensates by listing each parameter and providing meaning: ticker (stock ticker), start_date (YYYY-MM-DD), end_date (YYYY-MM-DD), resample_freq (daily/weekly/monthly/annually). This adds value beyond the schema's type definitions.

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 'Get historical end-of-day stock prices with adjusted and unadjusted OHLCV data.' This is a specific verb+resource combination that distinguishes the tool from siblings like get_realtime_price (real-time) and get_intraday_prices (intraday).

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 historical daily data but does not explicitly state when to use this tool versus alternatives or provide any exclusions. No guidance on prerequisites or context.

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

TDQS

A3.9/5.0
Disambiguation5/5

Every tool targets a specific data type or asset class with clear boundaries. The overlaps (e.g., dividends vs. dividend yield, stock metadata vs. company meta) are well-differentiated by the descriptions.

Naming Consistency5/5

All tools follow a consistent get_resource_detail pattern using snake_case (e.g., get_stock_prices, get_forex_quote). The naming is predictable and easy to navigate.

Tool Count5/5

With 17 tools covering stocks, forex, crypto, news, fundamentals, dividends, and splits, the count is appropriate for the breadth of financial data. Each tool serves a distinct purpose without being excessive.

Completeness4/5

The set covers core market data, fundamentals, and news well. Minor gaps exist (e.g., no dedicated earnings calendar or analyst estimates), but the overall surface is comprehensive for common financial analysis tasks.

Maintenance

ActivityMaintained
ResponsivenessSyncing

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
    An MCP server that integrates with the AlphaVantage financial data API, providing access to stock market data, technical indicators, and fundamental financial information.
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    A Node.js MCP server that wraps the Finnhub API to provide stock market data, technical analysis, news sentiment, and cryptocurrency market information.
    15
    168
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive MCP server that provides access to Alpha Vantage's financial data APIs, including stocks, forex, crypto, commodities, and economic indicators, enabling users to retrieve real-time quotes, historical data, technical indicators, and market intelligence through natural language.
  • F
    license
    B
    quality
    D
    maintenance
    An MCP server that provides tools to access Tiingo API data including stock prices, news, forex, fundamentals, and corporate actions.
    11
    140

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/major7apps/tiingo-mcp'

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