tiingo-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tiingo-mcpwhat's the current price of AAPL?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
tiingo-mcp
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 | shOn 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 --lockedTo install the current development tree from a local checkout:
cargo install --path . --lockedMCPB 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-darwinx86_64-apple-darwinaarch64-unknown-linux-muslx86_64-unknown-linux-muslx86_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-mcpYou can also launch the server directly:
TIINGO_API_KEY=your-api-key-here tiingo-mcptiingo-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 |
| Per-ticker name, exchange, description, and EOD date range |
| Historical raw and adjusted EOD OHLCV, dividends, and splits |
| Typed bulk CSV refresh with raw/adjusted fields and history-refresh tickers |
| Selected vendor-supplied lifecycle/security-master columns |
IEX REST
Tool | Description |
| Current per-ticker IEX snapshot |
| Per-ticker IEX intraday history and optional columns |
| All-market IEX snapshot; use deliberately because the response can be large |
Consolidated equity REST beta (4am–8pm ET)
Tool | Description |
| Consolidated ticker or all-market snapshot |
| Consolidated intraday history with resampling, after-hours, fill, and column filters |
BOATS REST beta/add-on (8pm–3:59am ET)
Tool | Description |
| BOATS ticker or all-market snapshot |
| BOATS intraday history with resampling, after-hours, and column filters |
Funds
Tool | Description |
| Mutual-fund or ETF fee metadata |
| Current and historical mutual-fund or ETF fee metrics |
Search early beta
Tool | Description |
| Bounded asset search by ticker or name |
Crypto Yield
Tool | Description |
| Lending-platform list with optional platform filters |
| Lending-pool metadata with pool/platform filters |
| Latest lending-pool metric ticks |
| Historical OHLC metrics for one lending pool |
Forex beta
Tool | Description |
| Current top-of-book rate for one pair |
| Batch top-of-book rates for 1–100 pairs |
| Historical forex prices |
Crypto
Tool | Description |
| Current prices for one or more crypto tickers |
| Historical crypto prices |
| Ticker metadata and supported exchanges |
News
Tool | Description |
| Search financial articles by ticker, tag, source, or date |
Fundamentals
Tool | Description |
| Tiingo fundamental metric definitions |
| Income statements, balance sheets, and cash-flow statements |
| Daily market and valuation metrics with optional columns |
| Company sector, industry, and location metadata with optional columns |
Corporate actions
Tool | Description |
| Cross-ticker distributions for an optional exact ex-date, including announced events |
| Per-ticker dividend and distribution history |
| Per-ticker dividend-yield history |
| Per-ticker split history |
| Cross-ticker splits for an optional exact ex-date, including announced/cancelled events |
Finite upstream market-data lifecycle
Tool | Description |
| Start one bounded IEX or consolidated-equity upstream subscription |
| Poll retained events by local arrival sequence with finite limits/wait; terminal sessions include a sanitized |
| Add or remove explicit symbols on an active subscription; a partial failure reports the current |
| 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/metais 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 |
| Server capabilities and source-dated entitlement guidance |
| Curated reference for common fundamental metrics |
| Date formats, resample frequencies, sort options, and parameters |
| Guide template for stocks, market data, forex, crypto, Crypto Yield, funds, Search, news, fundamentals, and corporate actions |
Prompts
Prompt | Arguments | Description |
|
| Comprehensive single-stock analysis |
|
| Side-by-side stock comparison |
|
| Crypto market snapshot with seven-day trends |
|
| Earnings report, price-reaction, and news workflow |
|
| 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 allThe 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
Links
Available Tools
17 toolsget_company_metaA
Get company metadata including sector, industry, and location.
Args: tickers: Comma-separated ticker symbols (e.g. AAPL,MSFT,GOOGL).
| Name | Required | Description | Default |
|---|---|---|---|
| tickers | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tickers | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tickers | Yes | ||
| end_date | No | ||
| start_date | No | ||
| resample_freq | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tickers | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| end_date | No | ||
| start_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| end_date | No | ||
| start_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| end_date | No | ||
| start_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| end_date | No | ||
| start_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| end_date | No | ||
| start_date | No | ||
| resample_freq | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| end_date | No | ||
| start_date | No | ||
| resample_freq | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| limit | No | ||
| offset | No | ||
| source | No | ||
| sort_by | No | ||
| tickers | No | ||
| end_date | No | ||
| start_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| after_hours | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| end_date | No | ||
| start_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| end_date | No | ||
| start_date | No | ||
| resample_freq | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
Tiingo MCP — wraps the Tiingo financial API (tiingo.com)
MCP server exposing the Backtest360 engine API as tools for AI agents.
MCP server for stocksense-ai documentation, generated by doc2mcp.
MCP server for OpenMM — exposes market data, account, trading, and strategy tools to AI agents
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that integrates with the AlphaVantage financial data API, providing access to stock market data, technical indicators, and fundamental financial information.MIT
- AlicenseBqualityCmaintenanceA Node.js MCP server that wraps the Finnhub API to provide stock market data, technical analysis, news sentiment, and cryptocurrency market information.151681MIT
- FlicenseNot gradedqualityDmaintenanceA 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.
- FlicenseBqualityDmaintenanceAn MCP server that provides tools to access Tiingo API data including stock prices, news, forex, fundamentals, and corporate actions.11140
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/major7apps/tiingo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server