yfinance-ai MCP server
Click on "Deploy 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., "@yfinance-ai MCP servercompare AAPL, MSFT and GOOGL on valuation and margins"
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.
yfinance-ai MCP server
Yahoo Finance for Claude, Cursor, VS Code and any MCP client, in 68 tools. Real-time quotes, history, financial statements, ratios and valuation history, analyst estimates and price targets, earnings, dividends, options, holders and insiders, funds and ETFs, crypto, forex, commodities, market movers, sectors and industries, and earnings, IPO, economic and split calendars.
Powered by yfinance-ai, the Yahoo Finance toolkit with thousands of downloads on ClawHub and OpenWebUI.
Also available as | |
🦞 OpenClaw skill, thousands of downloads |
|
🌐 OpenWebUI tool, thousands of downloads | |
📑 SEC EDGAR filings, same family |
Install: one command
Needs uv. No API key, no account, no Docker.
Claude Code
claude mcp add yfinance-ai -- uvx yfinance-ai@latestVS Code
code --add-mcp '{"name":"yfinance-ai","type":"stdio","command":"uvx","args":["yfinance-ai@latest"]}'Claude Desktop, Cursor, Windsurf and any other MCP client: add to the client's MCP config (claude_desktop_config.json, .cursor/mcp.json, ...)
{
"mcpServers": {
"yfinance-ai": {
"command": "uvx",
"args": [
"yfinance-ai@latest"
]
}
}
}@latest checks PyPI on each start, so you always run the newest release. Without uv: pip install yfinance-ai and use "command": "yfinance-ai" with no args.
Related MCP server: Stock Data MCP Server
Ask it anything
"Compare AAPL, MSFT and GOOGL on valuation and margins"
"What are analysts saying about NVIDIA? Price targets and recent upgrades"
"Is Apple buying back shares? Show shares outstanding over 5 years"
"Who reports earnings this week?" / "Economic calendar for this week" / "Upcoming IPOs"
"Top gainers today" / "Semiconductor industry: largest and fastest-growing companies"
"SPY top holdings and sector weights" / "Options chain for TSLA, nearest expiry"
"Bitcoin price" / "EUR/USD rate" / "Gold and oil today"
Why yfinance-ai
68 tools, more than four times the most-starred yfinance MCP servers (15 and 9 tools), covering everything above in one server.
Answers written for an AI: readable text with context, not raw dataframes.
Numbers checked at every release against independent sources: revenue, net income, assets and TTM figures against SEC XBRL filings, prices and ratios against a second Yahoo endpoint.
Every tool is read-only (MCP annotations), with retries, validation and rate limiting.
The same toolkit runs everywhere: MCP, OpenClaw and OpenWebUI, with thousands of downloads on ClawHub and OpenWebUI.
Built-in self-test: ask "run the yfinance self-test".
Tools (68)
Quotes and history
Tool | Parameters | What it does |
|
| Get current stock price and key metrics for a ticker symbol |
|
| Get detailed quote with bid/ask, day range, and trading info |
|
| Get fast-access ticker information (lightweight, quick response) |
|
| Get historical price data for a stock |
|
| Get historical price for a specific date |
|
| Download historical data for multiple tickers at once (bulk operation) |
Company
Tool | Parameters | What it does |
|
| Get detailed company information and business description |
|
| Company overview with context for every metric |
|
| Get company officers and key management |
|
| Get International Securities Identification Number (ISIN) for a ticker |
Financials
Tool | Parameters | What it does |
|
| Get income statement data |
|
| Get balance sheet data |
|
| Get cash flow statement data |
|
| Get trailing-twelve-month (TTM) income statement and cash flow |
|
| Get key financial ratios and valuation metrics |
|
| Get valuation measures now and for the last quarters (market cap, EV, P/E, PEG, P/S, P/B, EV/EBITDA) |
|
| Get a comprehensive one-page financial summary of a stock |
|
| Get shares outstanding over time (dilution or buybacks) |
Earnings and estimates
Tool | Parameters | What it does |
|
| Get upcoming and past earnings dates with estimates |
|
| Get historical earnings data with annual and quarterly figures |
|
| Get earnings calendar including next earnings date and dividend dates |
|
| Get analyst estimates for earnings, revenue, and EPS |
|
| Get analyst growth estimates |
|
| Get EPS (Earnings Per Share) trend data showing how estimates have changed |
|
| Get EPS revision data showing analyst estimate changes |
Analysts
Tool | Parameters | What it does |
|
| Get analyst recommendations and ratings |
|
| Get detailed analyst price targets for a stock |
|
| Get detailed analyst upgrades and downgrades history |
Holders and insiders
Tool | Parameters | What it does |
|
| Get major institutional holders and their ownership |
|
| Get major holders summary (institutions, insiders, public float) |
|
| Get mutual fund holders |
|
| Get recent insider trading activity |
|
| Get insider purchases only (filtered for buys) |
|
| Get insider roster (list of company insiders) |
Dividends and corporate actions
Tool | Parameters | What it does |
|
| Get dividend payment history and current metrics |
|
| Get stock split history |
|
| Get all corporate actions (dividends + splits combined) |
|
| Get capital gains distributions (primarily for funds/ETFs) |
Options
Tool | Parameters | What it does |
|
| Get options chain data (calls and puts) |
|
| Get all available options expiration dates |
Market-wide
Tool | Parameters | What it does |
| Check if US stock markets are currently open | |
|
| Get a market overview for a region: open/closed status plus main indices, futures, bonds and FX |
| Get current prices for major market indices | |
|
| Get today's market movers from Yahoo Finance screeners |
|
| Get today's most active (trending) US tickers |
| Get performance of major market sectors | |
|
| Get a sector overview: size, weight, largest companies, industries and sector ETFs |
|
| Get an industry overview: largest, best-performing and fastest-growing companies |
Calendars
Tool | Parameters | What it does |
|
| Get the market-wide earnings calendar (which companies report in the next N days) |
|
| Get upcoming IPOs (exchange, expected date, price range, shares) |
|
| Get upcoming economic events (CPI, jobs, GDP, rate decisions) with expected and prior values |
|
| Get upcoming stock splits |
Funds and ETFs
Tool | Parameters | What it does |
|
| Get overview data for an ETF or mutual fund |
|
| Get top holdings for an ETF or mutual fund |
|
| Get sector allocation/weights for an ETF or mutual fund |
Crypto, forex and commodities
Tool | Parameters | What it does |
|
| Get cryptocurrency price and market data |
|
| Get foreign exchange (forex) rate for a currency pair |
|
| Get commodity/futures price data |
Compare
Tool | Parameters | What it does |
|
| Compare key metrics across multiple stocks |
|
| Compare a stock with its peers on key metrics |
|
| Compare historical price performance of multiple stocks |
|
| Complete analysis of a stock, calling every relevant tool |
News and filings
Tool | Parameters | What it does |
|
| Get recent news articles about a stock |
|
| Get recent SEC filings (10-K, 10-Q, 8-K, etc.) |
Utility
Tool | Parameters | What it does |
|
| Search for ticker symbols by company name or keyword |
|
| Validate if a ticker symbol exists and is tradeable |
| Get API status and usage information | |
|
| Run comprehensive self-test of the yfinance-ai tools (64 checks) |
License
MIT. Data comes from Yahoo Finance through yfinance and may be delayed. Not affiliated with Yahoo. For research and education, not investment advice.
Available Tools
68 toolscompare_stocksBRead-onlyIdempotent
Compare key metrics across multiple stocks.
Args: tickers: Comma-separated list of ticker symbols (e.g., 'AAPL,MSFT,GOOGL')
Returns: Comparison table of price, market cap, P/E, dividend yield, and returns
| 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?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds the list of compared metrics, but that overlaps with the existing output schema and adds no behavioral context such as rate limits, auth needs, or failure modes.
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?
Front-loaded with the purpose, then clean Args/Returns sections and no filler. Slightly padded by the Returns block, which duplicates the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering safety and an output schema covering returns, the only substantive gap is routing versus sibling comparison tools. Parameter format is documented, so an agent has enough to call it correctly.
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% and the schema only exposes a bare string, so the description carries the burden. It compensates well by specifying the comma-separated format and giving a concrete example ('AAPL,MSFT,GOOGL'), which is exactly the missing semantics.
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 a specific verb ('compare') and resource ('key metrics across multiple stocks'), and enumerates the compared fields. It does not, however, distinguish itself from close siblings like get_peer_comparison or get_historical_comparison, leaving an agent to guess which comparison tool applies.
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?
There is no explicit when-to-use or when-not-to-use guidance. Given siblings such as get_peer_comparison and get_historical_comparison, the absence of any routing advice is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_multiple_tickersBRead-onlyIdempotent
Download historical data for multiple tickers at once (bulk operation).
Args: tickers: Space or comma-separated ticker symbols (e.g., 'AAPL MSFT GOOGL') period: Time period (default: 1mo) interval: Data interval (default: 1d)
Returns: Summary of downloaded data for all tickers
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | 1mo | |
| tickers | Yes | ||
| interval | No | 1d |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, covering the safety profile. The description adds nothing behavioral beyond that — no note on rate limits, large-batch behavior, partial failures, or what the 'Summary' return actually contains. It essentially restates the arguments.
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?
Front-loaded one-line purpose followed by a compact Args/Returns block. Efficient, though the param lines largely echo the schema and could have carried valid-value information instead.
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 the 'Returns' note is a convenience rather than a necessity. The description is adequate for a simple read tool, but missing accepted values for period/interval means an agent could pass unsupported strings without warning.
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 must compensate. It usefully documents the tickers format ('space or comma-separated') that the schema omits, but period and interval only repeat their defaults without listing accepted values (e.g., valid period/interval strings), leaving a correctness-relevant gap.
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?
States a specific verb and resource ('Download historical data') plus an explicit scope qualifier ('multiple tickers at once (bulk operation)'). This implicitly separates it from the sibling get_historical_data, but it never names that sibling, so the differentiation is inferential rather than stated.
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 phrase 'bulk operation' implies the tool is for multi-symbol requests, but there is no explicit when-to-use/when-not guidance and the single-ticker alternative (get_historical_data) is never referenced. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_analyst_estimatesBRead-onlyIdempotent
Get analyst estimates for earnings, revenue, and EPS.
Args: ticker: Stock ticker symbol
Returns: Comprehensive analyst estimates and forecasts
| 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?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context such as data freshness, estimate period, or source, but it does not contradict the annotations. With annotations carrying the safety burden, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the main purpose. The Args/Returns structure is useful, though 'Comprehensive analyst estimates and forecasts' slightly restates the opening sentence.
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 fully explained. However, for an analyst-estimates tool in a crowded sibling set, the description omits the estimation period/horizon and does not clarify when to choose this over related estimate tools, leaving some selection 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?
Schema description coverage is 0%, so the description must compensate for the single ticker parameter. It does document 'ticker: Stock ticker symbol' in the Args section, but it adds no format details, examples, or exchange-suffix guidance beyond the parameter name.
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 uses a specific verb and resource: 'Get analyst estimates' for earnings, revenue, and EPS. It is clear what the tool returns, though it does not explicitly distinguish itself from sibling tools such as get_analyst_price_targets, get_analyst_recommendations, or get_growth_estimates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or sibling tools, so the agent must infer selection from the tool name and the crowded sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_analyst_price_targetsBRead-onlyIdempotent
Get detailed analyst price targets for a stock.
Args: ticker: Stock ticker symbol
Returns: Comprehensive price target data including current, low, mean, median, high targets and the number of analysts covering the stock
| 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?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive, so the safety profile is fully covered. The description adds no behavioral context beyond that (no rate limits, auth needs, or caveats), and its Returns section largely restates what the output schema already provides.
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?
Front-loaded with the purpose in the first sentence, and the Args/Returns blocks are easy to scan. The Args line merely echoes the parameter name, which is minor waste for a single-parameter tool.
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 simple single-parameter read tool whose annotations cover safety and whose output schema covers return shape, the description is largely sufficient. The only meaningful gap is the lack of routing guidance against the crowded set of analyst-data siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load, and it only restates the parameter as 'Stock ticker symbol' without format or example (e.g., 'AAPL'). It adds slight semantic value over the bare field name but does not compensate for the coverage gap.
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?
States a specific verb and resource ('Get detailed analyst price targets for a stock') and enumerates the exact target values returned (current, low, mean, median, high). However, in a sibling set containing get_analyst_estimates, get_analyst_recommendations, and get_upgrades_downgrades, it never explicitly distinguishes itself from those near-neighbors.
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 when-to-use or when-not-to-use guidance, and no mention of the analyst-data siblings that could be confused with it. The agent must infer usage purely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_analyst_recommendationsBRead-onlyIdempotent
Get analyst recommendations and ratings.
Args: ticker: Stock ticker symbol
Returns: Analyst buy/hold/sell recommendations, consensus, and recent upgrades/downgrades
| 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?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds only mild behavioral context by naming the data categories returned (recommendations, consensus, upgrades/downgrades); it says nothing about freshness, coverage, or rate limits beyond that.
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 Args/Returns layout is front-loaded and easy to scan, and the whole thing is short. The Returns block is somewhat redundant given an output schema exists, but nothing is bloated or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return values, yet that is where most of its words go. For a simple one-parameter tool it is minimally sufficient, but it omits the sibling disambiguation that would actually help an agent call it correctly.
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% for the single parameter, so the description must carry the load. It offers only 'ticker: Stock ticker symbol', which essentially restates the schema title 'Ticker' with no format, case, exchange-suffix, or validation guidance.
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?
States a specific verb and resource ('Get analyst recommendations and ratings') and enumerates the returned content (buy/hold/sell, consensus, upgrades/downgrades). It does not distinguish itself from close siblings like get_upgrades_downgrades, get_analyst_estimates, or get_analyst_price_targets, so an agent cannot route confidently among 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 when-to-use, when-not-to-use, or alternative guidance appears anywhere in the description. This matters here because the stated return content ('recent upgrades/downgrades') directly overlaps a sibling tool named get_upgrades_downgrades, and the description never explains which to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_api_statusBRead-onlyIdempotent
Get API status and usage information.
Returns: Current API usage statistics and configuration
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety and idempotency profile is covered. The description adds only that usage statistics and configuration are returned, which is thin extra context and largely duplicated by the existing 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?
Two short lines, front-loaded with the purpose. The 'Returns:' block is somewhat redundant given a full output schema exists, but it costs little and does no harm.
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 zero-parameter, read-only diagnostic tool with annotations and a published output schema, the description covers enough for correct invocation. The only real gap is the absence of when-to-use routing against diagnostic siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to explain; the baseline of 4 applies. Nothing in the description misleads about inputs, and no input is required.
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?
States a specific verb and resource: 'Get API status and usage information.' It is clearly distinguished from every sibling, none of which report API-level status or usage, though it doesn't explicitly name that distinction.
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 call this versus alternatives such as run_self_test, which is the closest sibling for checking service health. The agent must infer the usage context (diagnostics/quota checking) entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balance_sheetBRead-onlyIdempotent
Get balance sheet data.
Args: ticker: Stock ticker symbol period: 'annual' or 'quarterly'
Returns: Balance sheet with assets, liabilities, and equity
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | annual | |
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered and the description adds nothing behavioral on top. It does not mention data freshness, rate limits, or whether a missing ticker fails or returns empty.
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?
Front-loaded with the purpose, which is good, but the Args and Returns blocks largely restate the input schema and the declared output schema. Acceptable but not tightly written.
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 omitting return detail is fine, and both parameters are explained. What is missing for a two-parameter financial-statement tool in a very crowded sibling set is any indication of when to reach for this tool versus the many other financial data tools.
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 carries the full burden and does document both parameters: ticker as a stock ticker symbol and period as 'annual' or 'quarterly'. The period values are the only place the allowed values appear, since the schema has a default but no enum constraint.
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 a specific verb and resource ('Get balance sheet data'), which clearly separates it from siblings like get_income_statement and get_cash_flow. However, it never names those siblings or otherwise distinguishes itself beyond the resource noun.
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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as get_ttm_financials or get_financial_summary. With ~70 sibling tools, the agent gets no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_capital_gainsARead-onlyIdempotent
Get capital gains distributions (primarily for funds/ETFs).
Args: ticker: Ticker symbol (typically ETF or mutual fund)
Returns: Capital gains distribution history
| 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?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered. The description adds only that the resource is capital-gains distribution history, which is modest beyond-annotation value; no auth, rate-limit, or scope caveats are provided.
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?
Short and front-loaded, with the purpose in the first line and Args/Returns clearly separated. The returns line is slightly redundant given an output schema exists, but overall it wastes little.
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 spelled out, and annotations cover the behavioral profile. For a single-parameter read tool the description is adequate, with the only real gap being the lack of explicit routing versus get_dividends.
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% and the schema's single field carries only a title, so the description must compensate. It does add meaning ('Ticker symbol (typically ETF or mutual fund)'), narrowing the expected input type, but gives no format example or validation constraints.
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?
States a specific verb+resource ('Get capital gains distributions') and scopes it with '(primarily for funds/ETFs)', which implicitly separates it from the nearby get_dividends. It does not, however, explicitly name that sibling as the alternative, so an agent must infer the distinction.
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 parenthetical '(primarily for funds/ETFs)' gives implied context for when this applies, but there is no explicit when-to-use/when-not guidance and no named alternatives (e.g., get_dividends for ordinary dividends). Usage is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cash_flowARead-onlyIdempotent
Get cash flow statement data.
Args: ticker: Stock ticker symbol period: 'annual' or 'quarterly'
Returns: Cash flow statement with operating, investing, and financing activities
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | annual | |
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered structurally. The description adds only the shape of the result (operating/investing/financing sections) and says nothing about data freshness, data source, or error/empty behavior, so it clears the lower annotated bar without being rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then compact Args/Returns blocks with zero filler. Every line 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?
With an output schema present and annotations covering safety, the description only needs to orient the caller, which it does adequately for a read-only financial fetch. It stops short of noting the default period or any data-scope caveats, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter burden, and it does: ticker is defined as a stock ticker symbol and period is given its allowed values 'annual' or 'quarterly'. The only omission is that the default period (annual, per the schema) and casing/normalization rules are not restated.
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?
States a specific verb and resource ('Get cash flow statement data') and names the three cash-flow sections returned. It's clearly distinguishable from get_balance_sheet and get_income_statement by the resource name alone, but the description never acknowledges those siblings or contrasts itself with 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?
There is no when-to-use guidance, no mention of when to prefer get_ttm_financials/get_financial_summary, and no stated prerequisites. The agent is left to infer everything about routing from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_commodity_priceARead-onlyIdempotent
Get commodity/futures price data.
Args: commodity: Commodity name or ticker (e.g., 'gold', 'oil', 'crude oil', 'GC=F', 'CL=F')
Returns: Current price, day change, and key market data
| Name | Required | Description | Default |
|---|---|---|---|
| commodity | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds little behavioral context beyond that; it does not discuss rate limits, data freshness/latency, or market-hours caveats that would matter for price data.
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 definition is short and front-loaded, with the core purpose stated first. The Args/Returns block is standard and low-waste, though the Returns line is partially redundant given an output schema exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not enumerate return fields, and it supplies the one piece the schema lacks: accepted input formats. It is nearly complete for a simple single-parameter read tool, lacking only explicit alternative-tool routing.
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% for the single parameter, so the description must compensate, and it does by giving concrete accepted formats ('gold', 'oil', 'crude oil', 'GC=F', 'CL=F'). This tells the agent both human-readable names and ticker syntax are valid, which the schema omits entirely.
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 a specific verb and resource ('Get commodity/futures price data'), which is clear. It implicitly distinguishes itself from siblings like get_crypto_price and get_stock_price by scoping to commodities/futures, but never names those alternatives explicitly, so differentiation relies on inference.
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 by the resource scope (commodities/futures rather than equities or crypto), so an agent can likely route correctly. However, there is no explicit when-to-use guidance, no mention of alternatives for related assets, and no note on prerequisites or data coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_infoBRead-onlyIdempotent
Get detailed company information and business description.
Args: ticker: Stock ticker symbol
Returns: Company overview including sector, industry, employees, website, and business summary
| 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?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered by structured data. The description adds the field inventory (sector, industry, employees, website, business summary), but that overlaps with the existing output schema and says nothing about latency, rate limits, or error behavior for invalid tickers.
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?
Front-loads the purpose in the first sentence and uses compact Args/Returns blocks with no filler. The Returns block is slightly redundant given the output schema exists, but the whole definition is short and well-organized.
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 single-parameter read tool with a full annotation safety profile and an output schema, the definition is close to sufficient. The decisive gap is namespace disambiguation from get_company_overview, plus no guidance on invalid-ticker behavior, which the sibling list and schema cannot supply.
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 carries the burden and does name the parameter's meaning ('ticker: Stock ticker symbol'). It stops there, giving no format example (e.g., 'AAPL'), exchange suffix handling, or case sensitivity, so compensation for the coverage gap is only minimal.
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?
States a specific verb and resource ('Get detailed company information and business description') and enumerates the content returned, so the agent knows what it fetches. However, it does not differentiate itself from the near-identical sibling 'get_company_overview' (nor from get_company_officers/get_fast_info), leaving real ambiguity in a crowded namespace.
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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives despite a sibling named get_company_overview that reads as a direct competitor. The agent must guess which company-detail tool to call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_officersBRead-onlyIdempotent
Get company officers and key management.
Args: ticker: Stock ticker symbol
Returns: List of company officers with titles and compensation
| 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?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered without the description's help. The description adds the content of the payload (titles and compensation), which is mildly useful context, but says nothing about coverage, freshness, or remote-fetch behavior implied by openWorldHint.
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?
Front-loaded purpose followed by a compact Args/Returns block with no filler. The 'Returns' section is arguably redundant given an output schema exists, but it is not harmful and the whole thing stays short.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not detail return values, so leaving that incomplete is acceptable; it covers it briefly anyway. What is missing is routing guidance in a context with dozens of similar get_* tools, which is the main gap an agent would hit when choosing this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden, and it does label the single parameter as 'Stock ticker symbol'. However that is little more than restating the parameter name; it gives no format, exchange-qualification, or case-sensitivity guidance. Minimum viable for a one-parameter tool.
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?
States a specific verb and resource ('Get company officers and key management') in the first line, which is enough to distinguish it from sibling tools like get_company_info or get_major_holders at a glance. It does not explicitly name which sibling covers adjacent data (insider roster, major holders), so differentiation is inferred rather than stated.
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?
There is no when-to-use guidance, no exclusions, and no mention of alternatives among the ~60 sibling financial tools. The agent must infer from the name alone when officers data is the right pick versus get_insider_roster_holders or get_company_overview.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_overviewBRead-onlyIdempotent
Get a beautiful, insightful company overview with context for every metric. Perfect for quick overviews and basic questions about a company.
Args: ticker: Stock ticker symbol (e.g., 'AAPL', 'MSFT')
Returns: Beautifully formatted company overview with insights and context
| 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?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds little beyond this – 'context for every metric' hints at content richness but discloses nothing about scope, data freshness, or limitations.
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?
Front-loaded and short, but padded with duplicated promotional wording ('beautiful, insightful' in the body and 'Beautifully formatted ... with insights' in Returns). The Args/Returns scaffolding is boilerplate for a one-parameter tool.
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, and there is only one required parameter – both reduce the burden. Still, for a tool sitting among many near-synonymous 'overview/info/fast_info' siblings, the description is not complete enough to guarantee correct selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (the schema only says 'string / Ticker'), so the description must carry the load. It does supply meaning plus concrete examples ('AAPL', 'MSFT'), which is genuinely more than the schema offers. It stops short of format constraints, but adequately compensates for a single parameter.
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?
States a verb+resource ('Get a ... company overview'), so the basic purpose is clear. However, it fails to distinguish itself from close siblings like get_company_info, get_fast_info, or get_financial_summary, leaving the agent to guess which 'overview' tool to pick. The 'beautiful, insightful' framing is marketing language rather than disambiguating scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Perfect for quick overviews and basic questions about a company' gives implied usage context, but names no alternatives and states no exclusions. With a dense sibling set (get_company_info, get_fast_info, get_complete_analysis), explicit routing guidance is exactly what is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_complete_analysisARead-onlyIdempotent
Run a complete analysis of a stock by calling ALL available functions. This is the most comprehensive analysis available - use when user asks for "everything about" or "complete analysis of" a company.
Args: ticker: Stock ticker symbol (e.g., 'AAPL', 'MSFT') peers: Optional comma-separated peer tickers for comparison (e.g., 'MSFT,GOOGL,META') AI should provide contextually relevant peers based on the conversation.
Returns: Comprehensive analysis with results from all applicable functions
| Name | Required | Description | Default |
|---|---|---|---|
| peers | No | ||
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds that this is a fan-out call invoking every function, but does not disclose the practical consequence an agent needs: latency, cost, or partial-failure behavior when some sub-calls fail.
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?
Front-loaded with the tool's nature and trigger condition, then Args and Returns in a scannable layout. The Returns block is slightly redundant given an output schema exists, but nothing is padded.
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 two-parameter aggregator with an output schema, the description covers purpose, trigger, and both parameters adequately, so returns needn't be spelled out. The remaining gap is operational: how the agent should interpret or handle a partial aggregation result is unaddressed.
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 has to carry both parameters, and it does: ticker is documented with concrete format examples ('AAPL', 'MSFT') and peers is documented with format plus a behavioral instruction to choose contextually relevant peers from the conversation. That compensates well for the empty schema descriptions, though it does not say what happens when peers is omitted or empty.
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 a specific verb and resource ('Run a complete analysis of a stock') and defines its distinguishing behavior explicitly: it calls ALL available functions, making it the aggregation tool rather than any single-indicator sibling. An agent can tell it apart from get_financial_summary or get_peer_comparison without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear trigger phrase ('everything about' / 'complete analysis of' a company), which is a concrete when-to-use signal. It stops short of saying when NOT to use it or pointing to narrower alternatives (e.g., get_peer_comparison for comparison-only requests), so usage is clear but not exhaustively routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_corporate_actionsARead-onlyIdempotent
Get all corporate actions (dividends + splits combined).
Args: ticker: Stock ticker symbol
Returns: Combined history of dividends and stock splits
| 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?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is clear. The description adds that the return is a combined history of dividends and splits, but does not disclose ordering, coverage, rate limits, or other behavioral traits beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, with purpose first and then Args/Returns sections. Every sentence is relevant and there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with rich annotations and an output schema, the description covers purpose and return scope sufficiently. The main omission is explicit guidance versus separate dividend and split tools, which keeps it from being 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 description coverage is 0%, so the description must carry the parameter explanation. It says 'ticker: Stock ticker symbol', which clarifies the required parameter but does not specify format, case sensitivity, or examples; for a single common parameter this is minimally adequate.
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 a specific verb and resource: 'Get all corporate actions' plus parenthetical 'dividends + splits combined'. This clearly distinguishes it from sibling tools like get_dividends and get_stock_splits, which cover only one action type.
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 phrase 'combined' implies this tool is for retrieving dividends and splits together, versus separate sibling tools. However, it does not explicitly say when to use this instead of get_dividends or get_stock_splits, nor does it state any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_crypto_priceARead-onlyIdempotent
Get cryptocurrency price and market data.
Args: symbol: Crypto symbol (e.g., 'BTC', 'ETH', 'bitcoin', 'ethereum', 'BTC-USD')
Returns: Current price, 24h change, market cap, volume, and key metrics
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, covering the safety and idempotency profile. The description adds no further behavioral context such as data freshness/latency or rate limits, so it does not go meaningfully beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, followed by cleanly separated Args and Returns sections. The Returns block is mildly redundant given an output schema exists, but nothing is bloated.
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 simple one-parameter query tool with a full output schema and rich annotations, the definition covers what an agent needs. The only minor gap is the absence of any note on quote freshness or rate behavior, which is not critical for calling it correctly.
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% for the single 'symbol' param, so the description carries the burden — and it does so well by giving concrete accepted formats ('BTC', 'ETH', 'bitcoin', 'ethereum', 'BTC-USD'). This clarifies that tickers, names, and pair strings are all valid, which the bare schema does not.
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?
States a specific verb+resource: 'Get cryptocurrency price and market data.' The resource ('cryptocurrency') cleanly distinguishes it from siblings like get_stock_price, get_commodity_price, and get_forex_rate, though it never names those alternatives explicitly.
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 by the resource scope — an agent will infer this is the tool for crypto quotes — but there is no explicit when-to-use guidance and no exclusions against the many adjacent price tools (get_stock_price, get_commodity_price).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dividendsARead-onlyIdempotent
Get dividend payment history and current metrics.
Args: ticker: Stock ticker symbol period: Time period for dividend history (1y, 5y, 10y, max)
Returns: Dividend history and current dividend metrics
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | 5y | |
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations cover safety (readOnlyHint: true), the description adds critical behavioral constraints regarding the input parameter 'period.' It explicitly lists the acceptable enumeration values (1y, 5y, 10y, max), which is essential domain-specific context beyond the basic schema definition.
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 definition is concise and highly structured, using an argument list format to deliver information efficiently. While slightly mechanical due to the Arg format, every sentence adds necessary instruction or scope.
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 is complete for selection and invocation. It specifies the resource, lists the necessary inputs, details the constraints on those inputs, and confirms the types of data that will be returned, which is sufficient even with the presence of an output schema.
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?
Given the 0% schema description coverage, the description performs exceptionally well. It defines the semantic meaning of both 'ticker' and 'period,' and crucially, it lists the accepted values for 'period' (1y, 5y, 10y, max), completely compensating for the lack of schema documentation.
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 is extremely clear, using the specific verb 'Get' and identifying the specific resource: 'dividend payment history and current metrics.' It cleanly separates its function from general stock data, enabling easy differentiation from related sibling tools like get_stock_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?
The description focuses purely on *what* the tool does, not *when* to use it. It provides no guidance on when an agent should choose this tool versus, for example, get_company_info or get_financial_summary, lacking necessary context for decision making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_earnings_calendarBRead-onlyIdempotent
Get earnings calendar including next earnings date and dividend dates.
Args: ticker: Stock ticker symbol
Returns: Upcoming earnings dates, ex-dividend dates, and dividend payment dates
| 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?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds the scope of returned date categories, which is useful context, but says nothing about auth needs, rate limits, or behavior for tickers with no scheduled earnings.
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?
Front-loaded summary followed by an Args/Returns block; no filler sentences. The Returns section is somewhat redundant given an output schema exists, which slightly dilutes efficiency.
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 single-parameter read tool with full annotations and an output schema, the definition covers what an agent needs to invoke it. The missing piece is sibling differentiation against get_earnings_dates/get_upcoming_earnings, which the schema cannot supply.
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?
Only one parameter, and the schema has 0% description coverage, so the description carries the burden. It labels the parameter 'Stock ticker symbol', which is a minimal semantic hint but adds nothing about format, exchange prefixes, or case sensitivity beyond the field name 'Ticker'.
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 names a specific verb and resource ('Get earnings calendar') and enumerates the content (next earnings date, dividend dates, ex-dividend and payment dates). It is clear on its own, but it never distinguishes itself from closely overlapping siblings like get_earnings_dates, get_upcoming_earnings, get_earnings_history, or get_dividends, which an agent will struggle to choose between.
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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives. Given the dense cluster of earnings- and dividend-related siblings, the absence of routing guidance is a real gap rather than a minor omission.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_earnings_datesCRead-onlyIdempotent
Get upcoming and past earnings dates with estimates.
Args: ticker: Stock ticker symbol
Returns: Earnings calendar with dates, estimates, and actual results
| 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?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive, so the safety profile is covered. The description adds only that results include dates, estimates, and actual results, which is modest added context. It does not disclose pagination, coverage window, or any behavior beyond what the annotations and output schema carry.
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 uses an Args/Returns block structure that is tidy, but the Returns section largely restates what the output schema already encodes. There is no wasted prose, but some of the content does not earn its place given structured fields cover it.
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 single-parameter read tool with an output schema and full annotations, the safety and return shape are covered. The missing piece is disambiguation from the several closely related earnings siblings, which leaves a real gap in an otherwise workable definition.
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 must carry the parameter meaning, and it does describe ticker as 'Stock ticker symbol' — clarifying it expects a symbol rather than a company name. With only one simple parameter, this minimal compensation is adequate but not rich; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb and resource (get earnings dates) and names scope (upcoming and past, with estimates and actual results). However, it fails to distinguish itself from near-identical siblings such as get_earnings_calendar, get_earnings_history, and get_upcoming_earnings, which appear to cover the same territory. An agent cannot tell from the description why it should pick this tool over those.
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 when-to-use guidance, no prerequisites, and no named alternatives are given. Given the crowded set of earnings-related siblings, this omission is costly — the agent has no basis for choosing among get_earnings_dates, get_earnings_calendar, and get_earnings_history.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_earnings_historyBRead-onlyIdempotent
Get historical earnings data with annual and quarterly figures.
Args: ticker: Stock ticker symbol
Returns: Historical earnings by year and quarter
| 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?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, covering the safety profile. The description adds only that returns are structured 'by year and quarter', with no data source, freshness, or pagination 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?
Front-loads the purpose in one sentence, then uses compact Args/Returns sections with no filler. Slightly formal but efficient and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the return explanation is largely redundant, so the description needn't detail results. However, for a read tool in a dense cluster of earnings siblings, the absence of disambiguation context is a real 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?
Schema description coverage is 0% and there is one parameter, so the schema documents the name but not its meaning. The description lightly compensates by clarifying ticker is a 'Stock ticker symbol', but adds nothing about format (e.g., exchange suffix) or validation.
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?
States a specific verb and resource ('Get historical earnings data') and adds scope detail ('annual and quarterly figures'). It is clear what the tool does, but it never distinguishes itself from close siblings like get_earnings_dates, get_earnings_calendar, or get_upcoming_earnings.
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 offers no when-to-use guidance or alternatives despite a crowded sibling space of earnings-related tools (get_earnings_dates, get_earnings_calendar, get_eps_trend). The agent is left to guess which earnings tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_economic_calendarARead-onlyIdempotent
Get upcoming economic events (CPI, jobs, GDP, rate decisions) with expected and prior values.
Args: days: Look-ahead window in days (default 7) limit: Max events (default 30)
Returns: Table of economic events by region and time
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds only the returned content ('expected and prior values', 'by region and time'), which largely restates the output schema and says nothing about data sources, refresh cadence or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence followed by compact Args/Returns blocks; every line is short and relevant. The Returns block mildly duplicates the output schema, which is the only waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and both parameters are documented despite zero schema coverage. Complete for a simple two-parameter read tool; only the missing when-to-use routing and data-freshness context hold it below 5.
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 must carry the parameter burden, and it does: 'days' is explained as a look-ahead window (default 7) and 'limit' as a cap on events (default 30). That gives an agent enough to call it correctly, though units of the window (calendar vs trading days) remain unstated.
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?
States a specific verb and resource ('Get upcoming economic events') and enumerates the event classes (CPI, jobs, GDP, rate decisions) plus the returned value types, which cleanly separates it from calendar siblings like get_earnings_calendar, get_ipo_calendar and get_splits_calendar.
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 event list implies macro/economic-calendar use, but there is no explicit statement of when to reach for this over the other calendar tools, nor any exclusion or prerequisite. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_eps_revisionsCRead-onlyIdempotent
Get EPS revision data showing analyst estimate changes.
Args: ticker: Stock ticker symbol
Returns: EPS revisions showing up/down estimate changes by analysts
| 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?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is fully covered elsewhere. The description adds essentially nothing beyond that: no auth requirements, no coverage universe, no rate limits, and its return-value note duplicates 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 core sentence is front-loaded and short, but the 'Args/Returns' scaffolding is largely redundant: the parameter is already in the input schema and the return content is already described by the existing output schema. Roughly a third of the text earns no new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a rich annotation set and an output schema present, the description need not explain returns or safety, and it is adequate for a single-parameter read tool. Its real gap is routing: nothing tells the agent why to pick this over get_eps_trend or get_analyst_estimates in a 70-tool catalog.
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% (the single param carries only the title 'Ticker'), so the description must compensate, and 'ticker: Stock ticker symbol' is the minimum it can do. It does not specify expected format (e.g., 'AAPL' vs. exchange-suffixed symbols), though with only one obvious parameter the risk of misuse is low.
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?
States a specific verb and resource: 'Get EPS revision data showing analyst estimate changes,' which tells an agent exactly what comes back (up/down analyst estimate changes). However, it offers no differentiation from close siblings like get_eps_trend, get_analyst_estimates, or get_upgrades_downgrades, so the agent must guess which is correct.
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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives among the many overlapping analyst-estimate siblings. The agent is left to infer that this is the estimate-revision view rather than the trend or estimates view.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_eps_trendBRead-onlyIdempotent
Get EPS (Earnings Per Share) trend data showing how estimates have changed.
Args: ticker: Stock ticker symbol
Returns: EPS trend data showing estimate changes over different time periods
| 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?
Annotations already declare the safety profile: readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false. The description adds that the tool returns trend data over different time periods, but does not provide additional behavioral details such as rate limits, auth requirements, or data latency.
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 short and front-loaded with the main purpose, followed by conventional Args and Returns sections. The Returns section is somewhat redundant because an output schema exists, but the overall structure is efficient and readable.
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 simple one-parameter read-only tool with rich annotations and an output schema, the description covers the basic purpose and parameter. It is incomplete in one important respect: it does not help the agent distinguish this tool from the overlapping sibling get_eps_revisions.
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% for the single required ticker parameter. The description only says 'ticker: Stock ticker symbol,' which largely restates the parameter name and title without specifying format, market conventions, or examples, so it fails to compensate for the missing schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: get EPS trend data showing how estimates have changed. However, it does not distinguish this tool from the nearby sibling get_eps_revisions, which likely covers similar estimate-change 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?
The description gives no when-to-use guidance, no alternatives, and no conditions or prerequisites. It simply states what data is returned, leaving the agent to infer when this tool is preferable to siblings like get_eps_revisions or get_analyst_estimates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fast_infoARead-onlyIdempotent
Get fast-access ticker information (lightweight, quick response).
Args: ticker: Stock ticker symbol
Returns: Quick summary with most recent price, market cap, and basic metrics
Example: Useful for quick price checks without full info loading.
| 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?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds only that the response is lightweight/quick, which is useful context but no detail on caching, rate limits, or latency trade-offs. Adequate but thin beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose in the first sentence and separates Args/Returns/Example cleanly. The boilerplate headers are slightly verbose for one parameter but every line is relevant and nothing is padded.
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?
Output schema exists, so return values needn't be spelled out, yet the description still summarizes them helpfully. For a simple one-param read tool with full annotation coverage, the definition is essentially complete; only sibling routing is under-specified.
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 must carry the param, and it does: 'ticker: Stock ticker symbol'. For a single obvious identifier this is sufficient meaning, though it adds no format or exchange-suffix guidance.
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?
States a specific verb+resource ('Get fast-access ticker information') and clarifies scope as 'lightweight, quick response' with recent price, market cap, and basic metrics. It implies differentiation from heavier siblings like get_complete_analysis, but never names an alternative, so the boundary between this and get_stock_price/get_stock_quote remains for the agent to infer.
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?
'Useful for quick price checks without full info loading' gives an implied use case, but there is no explicit when-to-use/when-not guidance and no named alternative among the many price-related siblings. The agent must guess when this beats get_stock_quote or get_complete_analysis.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_financial_summaryCRead-onlyIdempotent
Get a comprehensive one-page financial summary of a stock.
Args: ticker: Stock ticker symbol
Returns: Comprehensive summary including price, valuation, financials, and analyst data
| 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?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds no behavioral context beyond that, such as data freshness, rate limits, or caching. The 'Returns' sentence only restates output content, which is already 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 short and structured with 'Args' and 'Returns' sections, and the main purpose is front-loaded. The 'Returns' section is somewhat redundant given the output schema, but the text contains no filler.
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 simple getter with one parameter, rich annotations, and an output schema, the description covers the essentials: what it does and what the parameter means. However, it does not help the agent route among the many sibling summary tools, so it is only minimally complete in context.
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 must compensate. It provides only 'ticker: Stock ticker symbol,' which gives basic meaning but no format guidance (e.g., uppercase, exchange suffix, ticker length). For a single required parameter, this is minimally adequate.
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 a clear verb and resource: 'Get a comprehensive one-page financial summary of a stock.' It is specific about scope, but it does not distinguish this from siblings like get_complete_analysis, get_company_overview, or get_key_ratios, so an agent cannot tell exactly when this summary is preferred over the many other financial summary tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no exclusions, and no alternatives. It only names the required parameter, leaving the agent to infer whether this tool is for a quick overview, a full analysis, or a specific type of financial data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_forex_rateARead-onlyIdempotent
Get foreign exchange (forex) rate for a currency pair.
Args: pair: Currency pair (e.g., 'EURUSD', 'EUR/USD', 'eurusd', 'GBPUSD=X')
Returns: Current exchange rate, bid/ask, day range, and recent changes
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description adds which values come back (rate, bid/ask, day range, recent changes), but says nothing about auth, rate limits, or invalid-pair behavior. With annotations carrying the safety burden, 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Args/Returns layout is front-loaded and easy to scan, and every line carries information. Slightly docstring-ish formatting rather than flowing prose, but no wasted 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?
An output schema exists, so the Returns line is supplementary rather than required, and the annotations cover safety. The one real gap for a marketplace-data lookup — how failures (unknown pair, market closed) surface — is unaddressed, but the core invocation contract is 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% and the schema only types 'pair' as a bare string, so the description's format examples ('EURUSD', 'EUR/USD', 'eurusd', 'GBPUSD=X') are genuinely load-bearing — they tell the agent what input shapes are accepted. It stops short of a full spec (no canonical form or error behavior), but it substantially compensates for the empty 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?
Specific verb ('Get') plus precise resource ('foreign exchange (forex) rate for a currency pair'), which cleanly separates it from the price/quote siblings like get_crypto_price, get_commodity_price, and get_stock_price. An agent knows exactly what asset class this serves without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The unambiguous forex resource implicitly routes the agent here rather than to the equity or crypto tools, so usage is inferable. However, the description names no alternatives and gives no conditions or prerequisites, so anything beyond the obvious case is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fund_holdingsARead-onlyIdempotent
Get top holdings for an ETF or mutual fund.
Args: ticker: Fund ticker symbol (e.g., 'VOO', 'SPY', 'QQQ') limit: Maximum number of holdings to return (default 25)
Returns: List of top holdings with weights and values
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds modest value by noting the return shape is holdings with weights and values, but it says nothing about data freshness, pagination beyond the limit, or coverage limits of the top-N cutoff.
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?
Front-loaded first sentence followed by a compact Args/Returns block; nothing is padded. The limit default restates the schema, which is a minor redundancy, but the whole definition stays small and scannable.
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 two-parameter read-only tool with an output schema already defined, this covers the essentials: what it fetches, both parameters, and the topic of the return. An agent could call it correctly without further guessing; only sibling differentiation and data-freshness caveats are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning, and it does: ticker is a fund ticker symbol with concrete examples (VOO, SPY, QQQ) and limit is the max holdings returned with a stated default of 25. This meaningfully exceeds the bare schema 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?
States a specific verb+resource+scope ('top holdings for an ETF or mutual fund'), so an agent knows exactly what it retrieves. It does not, however, differentiate itself from nearby siblings such as get_major_holders, get_mutualfund_holders, or get_fund_sector_weights, which is the only thing keeping it below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The fund-type framing ('ETF or mutual fund') implies the intended use case, but there is no explicit when-to-use guidance and no mention of when to prefer a sibling like get_mutualfund_holders instead. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fund_overviewARead-onlyIdempotent
Get overview data for an ETF or mutual fund.
Args: ticker: Fund ticker symbol (e.g., 'VOO', 'SPY', 'QQQ', 'ARKK')
Returns: Fund category, family, total assets, expense ratio, and other key metrics
| 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?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered. The description adds only what data comes back, and since an output schema exists that listing is largely redundant; no auth, rate-limit, or coverage caveats are mentioned.
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?
Short, front-loaded, and structured with Args/Returns sections so the key information appears first. The Returns block slightly duplicates the output schema, which is the only real waste.
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 single-parameter read tool with full annotations and an output schema, the description covers purpose, input format, and return shape. The remaining gap is competitive positioning against sibling fund tools, which is a usage-guidance concern rather than missing invocation-critical detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description does the work for the single parameter by naming it and giving concrete examples ('VOO', 'SPY', 'QQQ', 'ARKK'). That confirms the expected symbol format, though it omits any note about invalid or ambiguous tickers.
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?
States a specific verb and resource: "Get overview data for an ETF or mutual fund." This clearly separates it from equity-focused siblings like get_company_overview, though it never explicitly names the fund-specific alternatives (get_fund_holdings, get_fund_sector_weights) that could be confused with it.
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 offers no when-to-use guidance, no prerequisites, and no routing to alternatives. With siblings such as get_fund_holdings and get_fund_sector_weights available, an agent gets no help deciding which fund tool answers its question.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fund_sector_weightsBRead-onlyIdempotent
Get sector allocation/weights for an ETF or mutual fund.
Args: ticker: Fund ticker symbol (e.g., 'VOO', 'SPY', 'QQQ')
Returns: Sector allocation percentages for the fund
| 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?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety and side-effect profile is fully covered. The description adds that the return is sector allocation percentages, which is useful but modest; it does not disclose anything further about granularity, coverage, or edge cases beyond what the annotations and output schema carry.
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 short and front-loaded, stating purpose in the first sentence before the Args/Returns blocks. The docstring-style sections are slightly redundant given the output schema covers return values, but nothing is bloated or padded.
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 single-required-parameter, read-only tool with full annotation coverage and an existing output schema, the definition supplies enough to call it correctly: purpose, the one parameter with examples, and a return summary. The notable gap is guidance on when this tool is preferred over its many fund/sector siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter meaning, and it does: it labels ticker as the fund ticker symbol and supplies concrete examples ('VOO', 'SPY', 'QQQ'), clarifying that equity-index fund tickers are expected. This meaningfully compensates for the empty schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (sector allocation/weights) scoped to funds (ETF or mutual fund), so an agent knows it returns a fund's sector breakdown. It does not, however, explicitly distinguish itself from nearby siblings like get_fund_holdings or get_sector_overview/get_sector_performance, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives, no exclusions, and no prerequisites. The only implicit signal is 'for an ETF or mutual fund', which tells the agent the input domain but not when this tool is the right choice over get_fund_holdings or the sector_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_growth_estimatesBRead-onlyIdempotent
Get analyst growth estimates.
Args: ticker: Stock ticker symbol
Returns: Growth rate estimates for various periods
| 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?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered structurally. The description adds only that results are broken out by period, which is mild context; it says nothing about data source, staleness, or coverage limits that would matter for a third-party analyst-estimate endpoint.
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?
Front-loaded with the core purpose, which is good, but the 'Args:'/'Returns:' boilerplate adds little and the Returns block duplicates information already carried by the existing output schema, so those lines do not fully earn their 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?
With an output schema present, return details need not be explained, and annotations cover the safety profile, so the description is nearly sufficient for a one-parameter read tool. Its gap is the absence of any disambiguation among dozens of sibling analyst/financial tools an agent must choose between.
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?
One parameter with 0% schema description coverage; the schema only gives the property title 'Ticker'. The description's 'Stock ticker symbol' is a marginal clarification, essentially restating the name, and adds no format, exchange, or case-convention guidance.
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?
States a specific verb+resource: 'Get analyst growth estimates' with the returned resource quantified as 'growth rate estimates for various periods'. It is clear what the tool does, but it does not differentiate itself from adjacent siblings such as get_analyst_estimates, get_eps_trend, or get_eps_revisions, which an agent could easily confuse it with.
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 indication of when to use this tool versus the many other analyst-estimate siblings, no exclusions, no prerequisites. The agent gets no routing signal at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_historical_comparisonBRead-onlyIdempotent
Compare historical price performance of multiple stocks.
Args: tickers: Comma or space-separated ticker symbols (e.g., 'AAPL,MSFT,GOOGL') period: Time period for comparison (default: 1y)
Returns: Performance comparison showing % returns for each ticker
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | 1y | |
| tickers | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, idempotent=true, destructive=false, and openWorld=true, so the safety profile is fully covered. The description only lightly reinforces behavior via the 'Returns % returns' line, which is largely redundant given the existing output schema. It adds little beyond the structured metadata.
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?
Front-loaded with the core action, then clean Args/Returns sections. The period default repeats the schema default and the Returns line restates what the output schema already provides, so a little redundancy creeps in, but nothing is bloated.
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 omitting return details is acceptable, and both parameters are explained. The real gap is disambiguation from sibling comparison tools, which the description does not address despite an otherwise crowded namespace.
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 carries the full burden and largely succeeds: it documents the tickers format (comma or space-separated with a concrete example) and the period default. It stops short of listing valid period values or their accepted units, which an agent guessing at input would want.
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?
Names a specific verb and resource ('Compare historical price performance of multiple stocks') that an agent can act on immediately. However, it does nothing to distinguish itself from close siblings like compare_stocks and get_peer_comparison, leaving the agent unable to tell which comparison tool to pick.
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?
There is no when-to-use guidance and no mention of alternatives, despite the crowded sibling set (compare_stocks, get_peer_comparison, get_historical_data). The agent gets no hint about when this tool is preferred over the others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_historical_dataARead-onlyIdempotent
Get historical price data for a stock.
Args: ticker: Stock ticker symbol period: Time period - valid values: 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max interval: Data interval - valid values: 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo
Returns: Historical price data summary with statistics and returns
Example: >>> await get_historical_data("AAPL", period="6mo", interval="1d")
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | 1y | |
| ticker | Yes | ||
| interval | No | 1d |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety bar is covered. The description adds real value beyond them by disclosing the return shape ('summary with statistics and returns') rather than raw bars, which materially affects how an agent consumes the result.
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?
Front-loaded one-line purpose followed by Args/Returns/Example blocks — every section is useful. The example is slightly redundant for a 3-parameter tool but is cheap and correct.
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, return shape, and a working example even though an output schema exists. Minor gap: it doesn't note that short intervals (1m/2m) are only valid with short periods, nor that a ticker may need validation first.
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% with no declared enums, yet the description enumerates valid values for both period (1d…max) and interval (1m…3mo) and explains each parameter. This fully compensates for the empty schema and prevents invalid calls.
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?
States a specific verb+resource: 'Get historical price data for a stock.' An agent can distinguish this from get_stock_price (quote) and get_historical_price_on_date (single date), but the description never explicitly names those adjacent siblings, so a 5 isn't earned.
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 offers no when-to-use guidance, no conditions selecting it over get_historical_price_on_date, get_historical_comparison, or get_stock_quote, and no prerequisites. All content is parameter documentation, not usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_historical_price_on_dateARead-onlyIdempotent
Get historical price for a specific date.
Args: ticker: Stock ticker symbol date: Date in YYYY-MM-DD format (e.g., "2024-01-15")
Returns: Price on that date (or closest trading day)
Example: >>> await get_historical_price_on_date("AAPL", "2024-01-15")
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | ||
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and openWorld, so the safety profile is covered. The description adds genuinely new behavioral context beyond annotations: the fallback to 'closest trading day' when the date is not a trading day, which is exactly the kind of edge-case disclosure that matters here.
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 the first line, followed by clearly labeled Args/Returns/Example blocks. Every section earns its place, though the docstring-style scaffolding is slightly heavier than needed for two parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations carrying the safety profile and an output schema handling return structure, the description supplies the remaining essentials: parameter formats, a usage example, and the non-trading-day fallback. Only the disambiguation from range-based price siblings is left unaddressed.
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 schema itself says nothing about the two parameters. The description fully compensates by defining ticker as a stock symbol and date as YYYY-MM-DD with a concrete example ('2024-01-15'), resolving the only real ambiguity (date format).
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?
States a specific verb and resource ('Get historical price') scoped to a single date, which is clear on its own. It does not differentiate itself from the closest sibling, get_historical_data/get_historical_comparison, which an agent would need to disambiguate between, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied by 'for a specific date', letting an agent infer single-date lookups. There is no explicit when-to-use, no exclusions, and no pointer to the range-based siblings (get_historical_data), leaving the agent to guess at the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_income_statementBRead-onlyIdempotent
Get income statement data.
Args: ticker: Stock ticker symbol period: 'annual', 'quarterly', or 'ttm' (trailing twelve months)
Returns: Income statement with revenue, expenses, and net income
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | annual | |
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds only the return shape and period semantics; it says nothing about auth requirements, rate limits, or error behavior, which is a modest addition over structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose in one sentence, then the two parameters and the return summary in a compact Args/Returns layout. Slightly boilerplate in form but no sentence is wasted.
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 fields needn't be spelled out, and the single required parameter is documented. What is missing is the usage context — when this statement is preferred over ttm_financials or the financial summary — which the description leaves to the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the period parameter has no enum in the schema, so the description carries the full burden — and it does so by enumerating 'annual', 'quarterly', 'ttm' and explaining ttm as trailing twelve months, plus clarifying ticker is a stock ticker symbol. Only a minor gap: the default of 'annual' is not restated.
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?
States a specific verb and resource ('Get income statement data') and the returned content (revenue, expenses, net income), which the agent can distinguish from siblings like get_balance_sheet and get_cash_flow. It never explicitly names those siblings as alternatives, so differentiation is inferential rather than stated.
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?
There is no when-to-use guidance, no prerequisites (e.g., ticker must be valid), and no routing against near-neighbors such as get_ttm_financials or get_financial_summary. Usage must be inferred entirely from the name and the period values.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_industry_overviewARead-onlyIdempotent
Get an industry overview: largest, best-performing and fastest-growing companies.
Args: industry: Industry key, e.g. semiconductors, software-infrastructure, biotechnology, banks-regional, oil-gas-integrated (see get_sector_overview for all keys)
Returns: Industry summary with top companies by size, YTD performance and growth
| Name | Required | Description | Default |
|---|---|---|---|
| industry | No | semiconductors |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description adds what is aggregated (top companies by size, YTD performance, growth), which is useful context, but discloses nothing extra about caching, rate limits, or data freshness.
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?
Front-loaded purpose sentence followed by clearly labelled Args and Returns blocks; the Args section is long but each example key earns its place given the absent enum. Slightly verbose but no wasted 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?
With an output schema present the return format needn't be spelled out, annotations cover behavior, and the single parameter is illustrated with concrete keys. The description is complete enough to invoke correctly, with the default value being the only omission.
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% and the single parameter has no enum, so the description must carry the load — and it does, giving five concrete industry key examples and routing to get_sector_overview for the full key list. The only gap is that it never states the schema's default value of 'semiconductors'.
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?
States a specific verb and resource ('Get an industry overview') and elaborates the content it surfaces: largest, best-performing and fastest-growing companies. It also distinguishes its scope from get_sector_overview by positioning that tool as the key directory, so an agent can tell the two apart without opening a schema.
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 ('get an industry overview' when you want industry-level aggregate data) and the reference to get_sector_overview is a useful cross-link for key lookup, but there is no explicit when-to-use vs when-not guidance against the many other overview siblings (get_company_overview, get_sector_overview, get_market_summary).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_insider_purchasesARead-onlyIdempotent
Get insider purchases only (filtered for buys).
Args: ticker: Stock ticker symbol
Returns: Recent insider purchase transactions
| 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?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld). The description adds the meaningful content filter ('filtered for buys'), but discloses nothing about data source, lookback window, or pagination beyond what the annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded, with the key qualifier in the first clause. The Args/Returns scaffolding is slightly ceremonial for a single parameter and the Returns line largely duplicates the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no prose, and annotations cover the safety profile. For a one-parameter read tool the description is adequate, though a lookback/timeframe hint would have rounded it out.
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% and the schema only declares a bare string titled 'Ticker', so the description must carry the load. 'Stock ticker symbol' adds the semantic meaning but is close to a restatement of the property name; no format, exchange, or case guidance is provided.
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?
States a specific verb and resource ('Get insider purchases') and adds a scoping qualifier ('only, filtered for buys') that separates it from the sibling get_insider_transactions. It stops short of naming that sibling explicitly, so the differentiation is implied rather than stated.
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 phrase 'only (filtered for buys)' implies when to prefer this over the broader get_insider_transactions, but no alternative is named and no explicit when/when-not condition is given. Usage is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_insider_roster_holdersBRead-onlyIdempotent
Get insider roster (list of company insiders).
Args: ticker: Stock ticker symbol
Returns: List of company insiders and their positions
| 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?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds only that the result is insiders with positions, which duplicates the (present) output schema rather than adding new 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?
Very short and front-loaded, with the core purpose stated first. The Args/Returns blocks are somewhat redundant against the existing schema and output schema but consume little space.
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?
A single-parameter read tool with full annotations and an output schema needs little more; the description covers purpose and the lone parameter adequately. Nothing essential to invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must carry param meaning, and it only restates 'ticker: Stock ticker symbol' — no format, exchange qualifier, or validation guidance. It is minimally adequate but not compensating for the coverage gap.
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?
States a clear verb+resource ('Get insider roster') and glosses the resource as a list of company insiders and their positions. It does not differentiate from close siblings such as get_insider_transactions, get_insider_purchases, or get_company_officers, so an agent must infer the distinction.
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?
There is no when-to-use guidance, no exclusions, and no mention of the alternative insider/holder tools. The agent gets no help deciding between this and get_institutional_holders, get_major_holders, or get_company_officers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_insider_transactionsBRead-onlyIdempotent
Get recent insider trading activity.
Args: ticker: Stock ticker symbol
Returns: Recent insider buy/sell transactions
| 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?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds only the temporal qualifier 'recent' and that results are buy/sell transactions, which is modest extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded, with the purpose in the first sentence. The 'Args:' block is largely redundant filler given the parameter name, but it costs little.
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 no explanation. For a one-parameter read tool this is roughly adequate, but 'recent' is undefined (no window/limit) and the overlap with sibling insider tools is unaddressed.
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 carries the burden for the single parameter. It states 'ticker: Stock ticker symbol,' which is essentially a restatement of the parameter name and adds no format, exchange, or case guidance.
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?
States a specific verb and resource: 'Get recent insider trading activity.' Clear on its own, but it does not distinguish itself from the sibling get_insider_purchases or get_insider_roster_holders, which an agent could easily confuse with this one.
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 when-to-use guidance, no conditions, no alternatives named. With several insider-related siblings (get_insider_purchases, get_insider_roster_holders), the absence of routing guidance is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_institutional_holdersBRead-onlyIdempotent
Get major institutional holders and their ownership.
Args: ticker: Stock ticker symbol
Returns: List of institutional holders with shares owned and percentage ownership
| 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?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds only the 'major' scoping qualifier and a summary of returned fields that is already captured by the output schema, so it contributes little behavioral context beyond what annotations and schema provide.
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 Args/Returns layout is compact and front-loads the purpose before the field details, with no wasted sentences. It is slightly boilerplate but appropriately sized for a single-parameter tool.
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 one-parameter read-only tool with full annotations and an output schema, the description covers purpose and return shape adequately; the agent need not know return formatting details. The remaining gap is sibling disambiguation, which the description never addresses.
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 must carry the parameter meaning. It only expands 'ticker' to 'Stock ticker symbol' with no format, exchange-suffix, or case guidance (e.g., 'AAPL'), which barely improves on the schema's bare 'Ticker' property title.
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?
States a specific verb and resource ('Get major institutional holders and their ownership') with enough precision for an agent to know what comes back. However it never distinguishes itself from close siblings such as get_major_holders, get_mutualfund_holders, or get_insider_roster_holders, so the agent must guess which holder-focused tool to pick.
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?
There is no when-to-use guidance, no prerequisites, and no mention of the alternative holder tools in the sibling set. The agent gets what the tool returns but not when to prefer it over get_major_holders or get_mutualfund_holders.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ipo_calendarBRead-onlyIdempotent
Get upcoming IPOs (exchange, expected date, price range, shares).
Args: days: Look-ahead window in days (default 14) limit: Max IPOs (default 25)
Returns: Table of upcoming IPOs
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is fully covered without the description. The description adds the returned column set, but this overlaps with the existing output schema, so the incremental behavioral value is modest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose, then cleanly separates Args and Returns sections. It is appropriately sized for a two-parameter read tool with no wasted prose, though the Returns line is redundant given the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be spelled out, and the annotations cover behavior. The purpose and both parameters are documented, leaving only usage routing to siblings as a gap, which is minor for a simple calendar read.
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 must carry the parameter burden, and it does explain both 'days' (look-ahead window with default 14) and 'limit' (max IPOs with default 25). The meaning is added, though the defaults merely restate what the schema already encodes, keeping it short of a 5.
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?
States a specific verb+resource ('Get upcoming IPOs') and enumerates the returned fields (exchange, expected date, price range, shares), so the tool's scope is immediately clear. It does not explicitly differentiate itself from calendar-like siblings such as get_earnings_calendar, get_economic_calendar, or get_splits_calendar, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no alternative named. It simply states the action, leaving the agent to infer that this is the tool for forward-looking IPO data rather than an IPO history or split-related endpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_isinCRead-onlyIdempotent
Get International Securities Identification Number (ISIN) for a ticker.
Args: ticker: Stock ticker symbol
Returns: ISIN code and related identification information
| 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?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description adds almost nothing beyond that – no mention of external data sources, latency, or failure behavior for an openWorld lookup, and the 'Returns' line merely restates what the output schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded with the core purpose in the first sentence. The Args/Returns block is boilerplate scaffolding that does little work given the schema and output schema already exist.
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 single-parameter lookup with an output schema, the description need not explain return values, and it doesn't. However, it omits any routing guidance among the large set of get_* siblings, which is the main 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?
Schema description coverage is 0%, so the description must carry the burden, but 'ticker: Stock ticker symbol' only restates the parameter name. It gives no format expectations (case, exchange suffix, ambiguity handling) that an ISIN lookup would benefit from.
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?
States a specific verb (get) and resource (ISIN) scoped to a ticker, and the acronym is expanded. It does not differentiate from any sibling, but ISIN is a unique lookup that no sibling covers.
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?
There is no guidance on when to use this tool versus alternatives such as validate_ticker or search_ticker, nor any prerequisite or constraint. The agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_key_ratiosBRead-onlyIdempotent
Get key financial ratios and valuation metrics.
Args: ticker: Stock ticker symbol
Returns: Comprehensive ratios including P/E, P/B, ROE, ROA, profit margins, debt ratios
| 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?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds the return content (P/E, P/B, ROE, etc.), which is useful context, but says nothing about staleness, data source, or rate limits beyond the annotation layer.
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?
Front-loaded with the core purpose and cleanly sectioned into Args/Returns. The Returns block partly duplicates the existing output schema, but the overall size is short and each line is legible.
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?
Return values are covered by the output schema and safety by the annotations, so those need not be restated. However, given the dense sibling set for financial data, the absence of any disambiguation leaves the description merely 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?
Schema coverage is 0%, so the description must carry the parameter meaning; it does document the single argument as 'ticker: Stock ticker symbol.' That is adequate for a one-parameter tool but adds no format or exchange-suffix guidance, so it is minimum-viable.
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?
States a specific verb and resource ('Get key financial ratios and valuation metrics') with a clear scope. It distinguishes itself from statement-oriented siblings like get_income_statement or get_balance_sheet, but it never names an alternative or clarifies its boundary versus get_financial_summary or get_valuation_history.
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?
Purely a description of what it returns; there is no when-to-use guidance. With 70+ financial siblings, the agent gets no help on when to pick this over get_financial_summary, get_ttm_financials, or get_valuation_history.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_major_holdersBRead-onlyIdempotent
Get major holders summary (institutions, insiders, public float).
Args: ticker: Stock ticker symbol
Returns: Summary of insider vs institutional ownership percentages
| 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?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety and freshness semantics are covered. The description adds only that the result is a summary spanning institutions, insiders, and public float, with no note on data currency, provider source, or whether percentages are of total shares outstanding.
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?
Front-loaded purpose sentence followed by compact Args/Returns blocks — easy to scan with no filler. The Args line is near-redundant given the one obvious parameter, but nothing is wasted.
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 described in depth, and the read-only nature is covered by annotations. What is missing is differentiation from the several other holder-related tools in the sibling list, which is the main thing an agent needs to choose correctly here.
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 a single parameter and 0% schema description coverage, the description is the only source of meaning, and it clarifies the parameter as a 'Stock ticker symbol' rather than the bare property title 'Ticker'. That is a modest but real addition for a self-evident parameter.
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?
States a specific verb and resource ('Get major holders summary') and parenthetically enumerates the breakdown (institutions, insiders, public float), so the scope is clear. However it does not distinguish itself from close siblings like get_institutional_holders, get_insider_roster_holders, or get_mutualfund_holders, which an agent could easily confuse with this summary view.
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?
There is no when-to-use guidance, no prerequisites, and no mention of alternative tools for deeper ownership detail despite at least three overlapping holder siblings. The agent must infer the use case from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_indicesBRead-onlyIdempotent
Get current prices for major market indices.
Returns: Current values and changes for S&P 500, Nasdaq, Dow Jones, and other major indices
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, covering the safety profile. The description adds no behavioral context beyond that — no note on freshness/live-ness, caching, or rate limits — and the returns sentence duplicates what the output schema already provides.
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 short, front-loaded lines with the core action first and no filler. The 'Returns' list is somewhat redundant given an output schema exists, keeping it just short of a 5.
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 zero-parameter read tool with full annotation coverage and a declared output schema, the description supplies everything an agent needs to invoke it correctly. The only missing piece is routing guidance relative to the many overlapping market siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. No misleading parameter claims are made.
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?
States a specific verb and resource ('Get current prices for major market indices') and even names example indices, so the agent knows exactly what comes back. It does not, however, differentiate itself from close siblings like get_market_summary, get_market_status, or get_market_movers.
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?
There is no when-to-use guidance and no mention of alternatives, despite the sibling list containing several overlapping market-wide tools (get_market_summary, get_market_status). Usage can only be inferred from the word 'indices'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_moversARead-onlyIdempotent
Get today's market movers from Yahoo Finance screeners.
Args: category: day_gainers, day_losers, most_actives, most_shorted_stocks, small_cap_gainers, undervalued_large_caps, undervalued_growth_stocks, growth_technology_stocks, aggressive_small_caps, top_etfs_us, top_performing_etfs, technology_etfs, bond_etfs, top_mutual_funds count: Number of results (1-50, default 10)
Returns: Table of tickers with price, change %, volume and market cap
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| category | No | day_gainers |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation read-only, idempotent, non-destructive and open-world, so safety is covered. The description adds genuinely new context beyond that: the data source (Yahoo Finance screeners), the 'today's' freshness scope, and the exact return fields (price, change %, volume, market cap). It omits rate limits or market-hours caveats, keeping it from a 5.
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?
Front-loaded with the one-line purpose, then cleanly separated Args/Returns blocks, which is a good structure for an agent. The 14-value category list is a long wall of text but the content is necessary given the schema lacks enums, so it earns its space.
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 zero-required-param, read-only screener this covers the essentials: source, freshness, valid categories, count bounds, and return shape (even though an output schema exists, so that is partly redundant). Missing only operational caveats like whether data is real-time or delayed, and how it relates to sibling market tools.
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% and neither parameter has an enum in the schema, so the description carries the full burden — and it does so well by enumerating all 14 valid category values and specifying the count range (1-50, default 10). It does not explain what any individual category means, so it stops short of a 5.
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 first sentence gives a specific verb and resource ('Get today's market movers') plus the data source ('Yahoo Finance screeners'), which is enough to separate it from adjacent tools like get_market_summary or get_trending_tickers. However, it never explicitly says how it differs from those siblings, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to select this tool over the many overlapping siblings (get_trending_tickers, get_market_indices, get_sector_performance, get_market_summary). Usage is only implied by the name and category list; no conditions, prerequisites, or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_statusARead-onlyIdempotent
Check if US stock markets are currently open.
Returns: Market status (open/closed), current time, and market hours
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so the safety profile is covered. The description's one real addition is the US-market scoping (it will not answer for international exchanges) plus a summary of returned fields. That is useful but thin; nothing is said about holiday handling or timezone of the reported time.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, purpose front-loaded, nothing wasted. The 'Returns:' block is mildly redundant since an output schema already exists, which keeps this just short of a 5.
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 zero-argument status check with a full output schema and annotations covering safety, the description supplies everything an agent needs to decide and invoke. Remaining details (timezone, holiday calendar) are minor and partly covered by the output schema.
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 tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; the description correctly does not invent parameter guidance that does not exist.
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 a precise verb and resource: 'Check if US stock markets are currently open.' No sibling tool (e.g., get_api_status, get_market_summary, get_market_indices) covers open/closed market state, so the purpose is unambiguous without opening any schema.
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 only implied by the purpose itself — an agent infers it should call this when it needs to know whether US markets are trading. There is no explicit when-to-use statement, no prerequisites, and no reference to alternatives such as get_api_status for service health.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_summaryARead-onlyIdempotent
Get a market overview for a region: open/closed status plus main indices, futures, bonds and FX.
Args: region: US, GB, DE, FR, JP, HK, IN, CA, AU, BR, EUROPE, ASIA (default US)
Returns: Market status and a table of the region's headline instruments
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | US |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is largely covered. The description adds useful content scope (status plus a table of headline instruments), but says nothing about freshness, rate limits, or whether the underlying data is delayed/live.
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?
Front-loaded one-line summary followed by compact Args/Returns blocks; every line earns its place. The Returns block is mildly redundant given an output schema exists, but it is brief and does not bloat the definition.
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 single-parameter, zero-required tool with an output schema, the description covers the accepted region values and the shape of the response adequately. The only real gap is the unresolved overlap with get_market_status, which the description never clarifies.
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% and the schema only types region as a bare string with a default. The description compensates by enumerating the full accepted set (US, GB, DE, FR, JP, HK, IN, CA, AU, BR, EUROPE, ASIA) and restating the default, which is the enum the schema lacks. It does not explain semantics of EUROPE/ASIA aggregates vs country codes, keeping it out of the top band.
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?
States a clear verb+resource ('Get a market overview for a region') and enumerates the content covered: open/closed status plus indices, futures, bonds and FX. This partially separates it from siblings like get_market_status and get_market_indices, but it never names them explicitly as alternatives or subsets.
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 only implied by the description of what is returned. There is no explicit when-to-use guidance and no mention of when to prefer the narrower get_market_status or get_market_indices siblings, leaving the agent to infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mutualfund_holdersBRead-onlyIdempotent
Get mutual fund holders.
Args: ticker: Stock ticker symbol
Returns: List of mutual funds holding the stock
| 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?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered. The description adds little beyond the return type; it omits any notes on data freshness, pagination, or external lookups implied by openWorldHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded; the purpose leads and the args/returns sections are minimal. Slightly bloated by the docstring-style 'Args:'/'Returns:' scaffolding, but efficient overall.
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 needn't be explained, and the read-only annotations cover safety. But for a tool with 0% schema coverage and multiple confusable siblings, the description leaves too much inference for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only restates 'ticker: Stock ticker symbol' matching the parameter name. No format, exchange prefix, or validation guidance is added.
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?
States a clear verb ('Get') and resource ('mutual fund holders'), and specifies it returns funds holding a stock. However, it does not distinguish itself from close siblings like get_institutional_holders, get_major_holders, or get_fund_holdings, which an agent could easily confuse.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no when-to-use guidance, no exclusions, and no mention of the numerous alternative holder/ownership tools in the sibling set. An agent must infer that this returns mutual-fund ownership specifically versus institutional or insider holders.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_options_chainARead-onlyIdempotent
Get options chain data (calls and puts).
Args: ticker: Stock ticker symbol expiration: Specific expiration date (YYYY-MM-DD) or empty for nearest
Returns: Options chain with top calls and puts by volume
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| expiration | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare read-only, idempotent, non-destructive, and open-world behavior. The description adds useful behavioral context by saying the result contains top calls and puts by volume, though with an output schema present this return summary is somewhat redundant.
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 short, front-loaded with the core purpose, and organized into Args and Returns sections. Every sentence adds useful information without unnecessary repetition.
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 simple two-parameter read-only tool with rich annotations and an output schema, the description supplies enough context to invoke it correctly. It covers purpose, both parameter semantics, and the nature of the returned data.
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 must carry parameter meaning. It documents both parameters: ticker as a stock symbol and expiration as YYYY-MM-DD or empty for nearest, which fully compensates for the schema gap.
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 a specific verb and resource: getting an options chain with calls and puts. It is clear what the tool does, but it does not explicitly differentiate itself from the related sibling get_options_expirations.
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 by the purpose, and the expiration parameter explains that an empty value means nearest expiration. However, the description does not state when to use this tool versus get_options_expirations or other options-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_options_expirationsBRead-onlyIdempotent
Get all available options expiration dates.
Args: ticker: Stock ticker symbol
Returns: List of all available options expiration dates
| 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?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is fully covered. The description adds little beyond restating that the result is a list of expiration dates; it says nothing about data freshness, market coverage, or whether expired dates are included. With annotations carrying the behavioral burden, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded, with the purpose in the first sentence. The Args/Returns scaffolding is conventional and slightly redundant with the output schema, but nothing is bloated.
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 explaining return values is unnecessary, and annotations cover the safety profile. What remains missing is any routing guidance relative to get_options_chain, in a sibling set with many overlapping options-related tools. Adequate but with a clear gap for an agent choosing between options tools.
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 does supply the only parameter's meaning ('Stock ticker symbol'). However, it adds nothing about accepted formats, case sensitivity, or exchange-qualified symbols, which matters for an open-world ticker lookup. Minimal but functional compensation for the coverage gap.
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?
States a specific verb and resource ('Get all available options expiration dates'), so an agent can immediately tell this is an expiration-date lister rather than a full chain or quote tool. It does not explicitly differentiate itself from the closest sibling, get_options_chain, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as get_options_chain. The agent must infer from the name alone that this is the discovery step before fetching a chain.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_peer_comparisonBRead-onlyIdempotent
Compare a stock with its peers on key metrics.
Args: ticker: Primary stock ticker symbol peers: Optional comma-separated peer tickers (if not provided, uses sector peers)
Returns: Comparison table of key metrics across stocks
| Name | Required | Description | Default |
|---|---|---|---|
| peers | No | ||
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds one useful behavior beyond that: the default fallback to sector peers when the peers argument is omitted. It says nothing about data freshness, limits on peer count, or latency, so it is a modest addition.
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?
Short and front-loaded, with the core purpose stated before the Args/Returns blocks. The Args block is slightly redundant as a format but the content is efficient. Nothing is padded.
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 two-parameter read-only tool with an output schema, the description covers both parameters, the default behavior, and the return shape. The remaining gap is disambiguation from the sibling compare_stocks, which an agent needs but cannot get here.
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 carries the full burden and largely meets it: ticker is defined as the primary stock ticker symbol, and peers is documented as an optional comma-separated list with its default fallback behavior. The only omission is format constraints such as a maximum number of peers.
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?
States a specific verb and resource: 'Compare a stock with its peers on key metrics.' An agent knows the operation and its scope. However, it does not distinguish itself from the sibling 'compare_stocks' or 'get_historical_comparison', leaving genuine ambiguity about which comparison tool to pick.
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 when-to-use or when-not-to-use guidance is given, and no alternative tools are named. The note that peers falls back to 'sector peers' when omitted is a behavior detail, not selection guidance. With near-identically named siblings like compare_stocks, the absence of routing guidance is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sec_filingsCRead-onlyIdempotent
Get recent SEC filings (10-K, 10-Q, 8-K, etc.).
Args: ticker: Stock ticker symbol
Returns: Recent SEC filings with types and dates
| 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?
Annotations already declare this as a read-only, idempotent, open-world operation, so the safety profile is covered. The description adds no behavioral context beyond that: 'recent' implies a recency window or result limit but never defines it, and no auth, rate-limit, or pagination behavior is 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?
The payload is short and the purpose is front-loaded in the first line. The Args/Returns blocks are largely boilerplate that restate the schema and output schema, but they are brief and do not bloat the definition.
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?
Because an output schema exists, the Returns block is redundant and the definition need not explain return values. However, for a single-ticker filings tool the 'recent' scope is left undefined and there is no guidance on coverage limits, leaving a small but real 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?
There is only one parameter and schema description coverage is 0%. The description's 'ticker: Stock ticker symbol' supplies minimal meaning — it labels the parameter but adds no format, exchange, or case-sensitivity detail beyond the property name itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (recent SEC filings) and enumerates examples of filing types (10-K, 10-Q, 8-K), which distinguishes it from other company-data siblings. It does not explicitly differentiate from the many other 'get_*' tools, but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says nothing about when to use this tool versus alternatives (e.g., get_stock_news, get_company_info) or any prerequisites. No exclusions or contextual triggers are given; usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sector_overviewARead-onlyIdempotent
Get a sector overview: size, weight, largest companies, industries and sector ETFs.
Args: sector: basic-materials, communication-services, consumer-cyclical, consumer-defensive, energy, financial-services, healthcare, industrials, real-estate, technology, utilities
Returns: Sector summary with top companies and its industries
| Name | Required | Description | Default |
|---|---|---|---|
| sector | No | technology |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is fully covered without the description's help. The description adds nothing beyond that profile (no auth, rate-limit, or data-freshness notes), and its 'Returns' sentence restates content already carried 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?
Purpose is front-loaded in the first sentence, followed by a compact Args block and a Returns block. Nothing is padded, and the enum list is presented in a scannable single line.
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?
Because an output schema exists, the description need not explain return values further, and the one optional parameter's value space is fully documented. The main gap is the absence of any routing guidance against the many sibling 'overview'-style tools, which for a 68-tool surface is a meaningful omission.
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% and there is no enum on the 'sector' property, so the description's explicit enumeration of the eleven valid sector slugs is a genuine and necessary contribution. It does not, however, mention that the parameter is optional or that its default is 'technology', which the schema only implies.
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 names a specific verb+resource ('get a sector overview') and enumerates the scope it covers: size, weight, largest companies, industries, and sector ETFs. This clearly distinguishes it from performance- or holdings-oriented siblings, though it never names the closest sibling (get_sector_performance) to sharpen the boundary.
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?
There is no statement of when to use this over get_sector_performance, get_industry_overview, or get_fund_sector_weights, nor any prerequisite or context guidance. The only usage-relevant content is the inline list of valid sector values.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sector_performanceBRead-onlyIdempotent
Get performance of major market sectors.
Returns: Performance data for major S&P 500 sectors
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety and mutability profile is fully covered. The description adds only the S&P 500 scoping detail; it says nothing about the timeframe of the performance data, so it is marginally useful beyond structured fields.
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 short sentences, front-loaded with the purpose. The 'Returns:' line partially duplicates the purpose statement, but with an output schema present it is not wasteful enough to penalize heavily.
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 zero-parameter tool with rich annotations and an output schema, the description is close to adequate, and return values need not be explained. The remaining gap is selection context: it never clarifies how it differs from get_sector_overview or what period the performance covers.
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 tool takes zero parameters, so the schema offers nothing to explain and the baseline of 4 applies. There are no parameter concepts the description could meaningfully add.
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?
States a clear verb and resource ('Get performance of major market sectors') and narrows scope to S&P 500 sectors, which is more specific than a bare title. However, it does not distinguish itself from the very similar sibling get_sector_overview, leaving an agent unsure which sector tool to pick.
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 when-to-use guidance is provided, and the near-identical sibling get_sector_overview is never mentioned as an alternative. The agent must infer the use case purely from the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_splits_calendarBRead-onlyIdempotent
Get upcoming stock splits.
Args: days: Look-ahead window in days (default 14) limit: Max splits (default 25)
Returns: Table of upcoming splits with ratios
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds that results are returned as a table of splits with ratios, but gives no pagination or coverage caveats for what is an open-world query, so it adds only modest value.
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?
Front-loaded one-line purpose followed by compact Args and Returns sections. Every line earns its place, though the Args/Returns formatting is slightly redundant given structured fields exist.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the return description is not strictly needed, and parameters are adequately explained. What is missing is the routing context: when an agent should pick this over get_stock_splits, get_corporate_actions, or get_ipo_calendar.
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 must carry parameter meaning. It does define both parameters semantically: 'days' as a look-ahead window and 'limit' as a max-count cap, which is exactly the missing information. Defaults repeat the schema, but the semantic gloss is genuinely additive.
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?
States a specific verb and resource ('Get upcoming stock splits') with a temporal scope ('upcoming') that separates it from the historical sibling get_stock_splits. However, it does not explicitly name or differentiate from get_stock_splits, get_corporate_actions, or get_ipo_calendar, leaving sibling discrimination to inference.
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?
There is no statement of when to use this tool versus the many calendar/split/action siblings, nor any prerequisites or exclusions. The word 'upcoming' implies a forward-looking use case but nothing is made explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_newsARead-onlyIdempotent
Get recent news articles about a stock.
Args: ticker: Stock ticker symbol limit: Maximum number of news articles to return (default 10)
Returns: Recent news headlines, sources, and links
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds little beyond that: it says 'recent' without defining a recency window and does not mention rate limits, source constraints, or auth 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?
The description is compact and front-loaded, using a clear Args/Returns structure. Each sentence and field adds useful information without repetition.
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 simple read-only retrieval tool with rich annotations and an output schema, the description covers purpose, parameters, and return contents adequately. It could be more complete by defining what 'recent' means, but no critical invocation detail is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It documents both parameters, explaining that ticker is a stock ticker symbol and limit is the maximum number of articles with a default of 10, though it does not specify ticker format or limit bounds.
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 a specific verb and resource: get recent news articles about a stock. It is clear what the tool retrieves, but it does not explicitly distinguish itself from adjacent research tools such as SEC filings, analyst estimates, or company info.
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 by the purpose: use this when recent stock news is needed. However, there is no explicit guidance on when to use it versus related tools, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_priceBRead-onlyIdempotent
Get current stock price and key metrics for a ticker symbol.
Args: ticker: Stock ticker symbol (e.g., 'AAPL', 'TSLA', 'SPY')
Returns: Formatted string with current price, market cap, P/E ratio, and other key metrics
Example: >>> await get_stock_price("AAPL") AAPL - Apple Inc. Current Price: $175.43 Market Cap: $2.75T ...
| 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?
Annotations already indicate this is a safe, read-only, idempotent, non-destructive operation. The description adds useful context about the returned metrics and includes an example output, but it does not disclose limitations such as data freshness, market-hours constraints, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main purpose and then uses structured Args, Returns, and Example sections. It is somewhat verbose in docstring style, but the example is useful and no sentence is clearly wasted.
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 simple one-parameter tool with rich annotations and an output schema, the description is nearly complete: it explains the parameter, indicates the return shape, and provides an example. It leaves out alternative-tool guidance, which is a 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?
Schema description coverage is 0%, so the description must carry the parameter meaning. It does this by defining ticker as a stock ticker symbol and giving examples such as 'AAPL', 'TSLA', and 'SPY', which meaningfully compensates for the bare schema property.
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 a clear verb and resource: getting current stock price and key metrics for a ticker symbol. It is specific enough for an agent to understand the operation, but it does not differentiate this tool from close siblings such as get_stock_quote or get_fast_info.
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?
There is no explicit guidance on when to use this tool instead of alternatives like get_stock_quote, get_fast_info, or get_historical_data. The usage is implied by the purpose statement, but no when/when-not conditions or routing 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_stock_quoteBRead-onlyIdempotent
Get detailed quote with bid/ask, day range, and trading info.
Args: ticker: Stock ticker symbol
Returns: Detailed quote information including bid/ask spreads and intraday trading data
| 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?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so safety behavior is covered. The description adds that the result includes bid/ask spreads and intraday trading data, but does not add deeper behavioral context such as freshness, source, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded: the first sentence states the purpose and key returned fields. The Args and Returns sections are slightly redundant because an output schema exists, but they remain 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?
For a simple one-parameter quote lookup with rich annotations and an output schema, the description is mostly complete. The main missing element is explicit routing guidance among the many sibling market-data tools.
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%, but there is only one simple required parameter. The description compensates minimally by stating that ticker is a stock ticker symbol, which is adequate but not rich semantic guidance.
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 uses a specific verb and resource: it gets a detailed stock quote and names the fields bid/ask, day range, and trading info. It is clearly distinct from generic price tools, though it does not explicitly contrast with siblings like get_stock_price or get_fast_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to choose this tool over alternatives such as get_stock_price, get_fast_info, or get_market_summary. It only restates the argument and return contents, leaving tool selection ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_splitsBRead-onlyIdempotent
Get stock split history.
Args: ticker: Stock ticker symbol
Returns: Complete stock split history with dates and ratios
| 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?
Annotations already establish that this is a read-only, idempotent, non-destructive, open-world operation. The description adds that the result is a complete split history with dates and ratios, which is useful return-context but does not add deeper behavioral details such as data source or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded, and structured with Args and Returns sections. Every line contributes directly to understanding the tool without wasted prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter lookup tool with rich annotations and an output schema, the description is nearly complete. Its main gap is the lack of sibling differentiation, especially relative to get_splits_calendar.
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 must compensate. It does identify the sole parameter as 'ticker: Stock ticker symbol,' but it does not add format examples, exchange conventions, or validation details beyond the obvious meaning.
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 a specific verb and resource: 'Get stock split history.' It is clear what the tool does, but it does not distinguish itself from potentially overlapping siblings such as get_splits_calendar or get_corporate_actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit when-to-use guidance, prerequisites, or alternatives. Usage is only implied by the tool name and purpose, with no routing advice for related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trending_tickersBRead-onlyIdempotent
Get today's most active (trending) US tickers.
Args: count: Number of trending tickers to return
Returns: List of trending tickers with basic info
| Name | Required | Description | Default |
|---|---|---|---|
| count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered without the description. The description adds only the freshness window ('today's') and that results carry 'basic info' – useful but thin, with no note on how 'trending' is computed or whether the list 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?
Short and front-loaded, with the core purpose in the first sentence before the Args/Returns scaffolding. The explicit Args/Returns headers are slightly heavy for a one-parameter tool but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the 'Returns' line is optional rather than required, and the description is adequate for a simple read. Still missing is any indication of the default/max for count and what 'basic info' actually contains, which leaves the caller guessing about result size and shape.
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% for the single 'count' parameter, so the description carries the burden – but it only restates 'Number of trending tickers to return', which is nearly tautological and omits the default of 10 and any upper bound. It documents the parameter without adding real semantics.
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 a specific verb+resource ('Get ... US tickers') with scope qualifiers ('today's', 'most active (trending)', 'US'), which is far more than a restatement of the name. It does not explicitly differentiate itself from the nearest sibling, get_market_movers, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no mention of alternatives, despite siblings like get_market_movers and get_market_summary covering overlapping territory. The 'today's most active' phrasing implies a use case but does not route the agent between tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ttm_financialsBRead-onlyIdempotent
Get trailing-twelve-month (TTM) income statement and cash flow.
Args: ticker: Stock ticker symbol
Returns: Key TTM lines: revenue, gross profit, operating income, net income, EBITDA, EPS, cash flows
| 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?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered. The description adds nothing about data freshness, source, or rate limits; its only extra content is a summary of returned fields, which the output schema already provides.
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?
Front-loaded purpose sentence followed by compact Args/Returns blocks; no filler. The Returns block is arguably redundant given the output schema, but it is short and readable.
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 single-parameter read tool with an output schema and full annotation coverage, the definition is callable, but the biggest real gap — how this differs from get_income_statement and get_cash_flow — is left entirely unaddressed in a very crowded sibling namespace.
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?
One parameter at 0% schema description coverage, so the description must compensate. It labels ticker as 'Stock ticker symbol', which is a marginal clarification, but adds no format rules (exchange suffix, case, symbol lookup via search_ticker/validate_ticker).
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 names a specific verb and resource combination — trailing-twelve-month income statement plus cash flow — which is materially more precise than the bare tool name. It does not, however, distinguish itself from close siblings like get_income_statement, get_cash_flow, or get_financial_summary, which an agent must resolve on its own.
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?
There is no when-to-use guidance, no exclusions, and no mention of the sibling tools that return the same underlying statements on a different period basis. The agent must infer from the word 'TTM' alone that this is the period-aggregated alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_upcoming_earningsARead-onlyIdempotent
Get the market-wide earnings calendar (which companies report in the next N days).
Args: days: Look-ahead window in days (default 7) limit: Max companies (default 25)
Returns: Companies with report date, timing and EPS estimate
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish read-only, idempotent, non-destructive, open-world behavior, so the description does not need to repeat safety traits. It adds the market-wide scoping and default look-ahead context, but does not disclose pagination, rate limits, or other operational behavior beyond what annotations already cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded: the core purpose appears in the first sentence, followed by compact parameter notes. Nothing is bloated, and the structure makes it easy for an agent to parse quickly.
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 the description need not fully explain return values, though it briefly does. Both parameters are explained despite zero schema coverage. The main remaining gap is sibling differentiation from get_earnings_calendar and similar calendar tools.
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 must carry parameter meaning. It does so for both parameters: days as the look-ahead window and limit as the maximum number of companies, with defaults noted. It does not add constraints such as valid ranges, but it compensates well for 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 states a specific verb and resource: get the market-wide earnings calendar for companies reporting in the next N days. The scope is clear, but it does not explicitly distinguish this tool from nearby siblings such as get_earnings_calendar or get_earnings_dates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage by describing the market-wide, look-ahead window, which fits an agent seeking upcoming earnings broadly. However, it gives no explicit when-to-use/when-not-to-use guidance or named alternatives, leaving sibling selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_upgrades_downgradesBRead-onlyIdempotent
Get detailed analyst upgrades and downgrades history.
Args: ticker: Stock ticker symbol limit: Maximum number of rating changes to return (default 20)
Returns: Recent analyst rating changes including firm, action, and grade changes
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered without the description. The description adds a brief note on returned content (firm, action, grade changes) but discloses no data-source, coverage-window, or rate-limit behavior beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then Args/Returns sections. It is efficient, though the Returns block partly restates what the existing output schema already conveys.
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 two-parameter read tool with an output schema and full annotation coverage, the description is sufficient to invoke it. The remaining gap is guidance on choosing this endpoint over the other analyst siblings, which the description never addresses.
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 carries the param burden. It does this adequately: ticker is described as a stock ticker symbol and limit as the maximum number of rating changes with a default of 20, adding the semantic meaning the schema lacks.
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?
States a specific verb and resource: retrieving analyst upgrades/downgrades history. It is clearly distinct from non-analyst siblings, but it does not differentiate itself from the closely related get_analyst_estimates, get_analyst_price_targets, and get_analyst_recommendations tools that an agent must choose between.
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?
There is no explicit when-to-use, when-not-to-use, or alternative-selection guidance. The presence of four sibling analyst tools makes this omission meaningful, since an agent cannot tell from the description which analyst endpoint answers which question.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_valuation_historyBRead-onlyIdempotent
Get valuation measures now and for the last quarters (market cap, EV, P/E, PEG, P/S, P/B, EV/EBITDA).
Args: ticker: Stock ticker symbol
Returns: Table of valuation measures by quarter
| 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?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered structurally. The description adds that results are quarterly time series, but discloses nothing about auth needs, data sourcing, or rate limits. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then cleanly structured Args/Returns blocks. Compact with no wasted sentences, though the Args line largely restates the obvious.
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?
A single-parameter, read-only lookup whose safety profile is covered by annotations and whose return shape is documented by an output schema. The description is adequate; only the missing format hint for the ticker argument leaves a small 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?
There is one parameter with 0% schema description coverage, so the description must compensate. It labels the parameter ('ticker: Stock ticker symbol'), which is minimally helpful but adds no format guidance (e.g., 'AAPL' vs 'AAPL.US', exchange suffixes), so it only partially fills the gap.
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?
States a clear verb+resource ('Get valuation measures') and enumerates the specific metrics returned (market cap, EV, P/E, PEG, P/S, P/B, EV/EBITDA), plus the time scope ('now and for the last quarters'). It is easy to distinguish from siblings like get_balance_sheet, but it does not differentiate itself from the potentially overlapping get_key_ratios.
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 says what the tool returns but never states when to use it versus alternatives such as get_key_ratios, get_financial_summary, or get_historical_comparison. No prerequisites, exclusions, or routing guidance are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_self_testARead-onlyIdempotent
Run comprehensive self-test of the yfinance-ai tools (64 checks).
This function is designed to be called by AI assistants to verify that all tools are working correctly. It tests each tool category, reports success/failure status, and shows sample data from each test.
Args: ticker: Ticker symbol to use for testing (default: SPY - reliable ETF with full data)
Returns: Comprehensive test report with pass/fail status and sample data for all tools
Example AI Prompt: "Run self-test on yfinance tools" "Test all financial data functions" "Verify yfinance-ai is working"
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | No | SPY |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds meaningful behavior beyond them: it tests each tool category, reports pass/fail, and shows sample data. It omits runtime/cost characteristics, which matters for a tool running 64 checks, but the diagnostic behavior is otherwise well 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?
Front-loaded with the core purpose, then structured Args/Returns and example prompts. Slightly verbose with three example prompts, but every section is useful and nothing is redundant.
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 the description needn't detail return formatting, and it adequately covers the tool's behavior, parameter, and intended use. Minor gap: it doesn't hint at expected duration or what a failing check implies.
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 must compensate, and it does: the single 'ticker' parameter is explained with its role ('Ticker symbol to use for testing') and a justified default (SPY – reliable ETF with full data). It is not fully exhaustive but adds real value over 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?
States a specific verb+resource ('Run comprehensive self-test of the yfinance-ai tools') with scope (64 checks), and is easily distinguished from the data-fetching siblings since it is the only diagnostic/verification tool in the list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the intended caller ('designed to be called by AI assistants to verify that all tools are working correctly') and provides example prompts like 'Verify yfinance-ai is working'. It gives clear context for when to reach for it, though it doesn't state when NOT to use it (e.g., as a substitute for individual data calls).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tickerBRead-onlyIdempotent
Search for ticker symbols by company name or keyword.
Args: query: Company name or keyword to search
Returns: List of matching tickers
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds no behavioral context beyond that — it doesn't explain match semantics (prefix vs fuzzy), result ordering, or the open-world nature of querying an external source. It only restates that a list is returned, which the output schema already covers.
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?
Front-loaded with the purpose, then a compact Args/Returns block. Efficient and scannable. The Returns section is mildly redundant given an output schema exists, but the whole entry is short and waste-free.
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 single-parameter read-only search with an output schema and full annotations, this is adequate — return values needn't be explained. The gap is the absence of any disambiguation from validate_ticker/get_trending_tickers and no guidance for ambiguous queries, which matters in a 70+ sibling toolset.
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% — the only property is titled 'Query' with no description. The description partially compensates by defining it as 'Company name or keyword to search', which is more informative than the bare schema title. It does not, however, give format examples (e.g., 'Apple' vs 'AAPL') or note case/matching 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?
States a specific verb and resource: search ticker symbols by company name or keyword. An agent immediately understands the operation. However, it does nothing to distinguish itself from siblings like validate_ticker or get_trending_tickers, which also involve ticker resolution.
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 only implied — the phrase 'by company name or keyword' suggests it is for resolving a symbol you don't yet know. There is no explicit when-to-use statement, no mention of validate_ticker as the alternative for confirming a known symbol, and no guidance on ambiguous or multi-match results.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_tickerCRead-onlyIdempotent
Validate if a ticker symbol exists and is tradeable.
Args: ticker: Ticker symbol to validate
Returns: Validation result with ticker details if valid
| 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?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety and network profile is fully covered by structured data. The description's only added behavioral note is that it returns 'ticker details if valid,' which is thin and largely 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 lead sentence is tight and front-loaded, but the Args/Returns blocks duplicate what the input schema and output schema already express, adding boilerplate rather than value.
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 simple one-parameter read-only tool with an output schema, the description covers the basics. What is missing is routing guidance relative to search_ticker and any hint about ticker format, which is the main risk for an agent invoking it.
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% and the single parameter is documented only as 'Ticker symbol to validate,' which merely restates the parameter name. No format, casing, exchange-suffix, or example information is provided to help the agent supply a well-formed symbol.
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?
States a specific verb and resource: 'Validate if a ticker symbol exists and is tradeable.' This is clearly distinct from data-fetching siblings like get_stock_quote or get_company_info. It does not, however, explicitly differentiate itself from search_ticker, the closest sibling.
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?
There is no guidance on when to validate versus when to search (search_ticker) or when to just fetch data and let the call fail. The description says what the tool does but never states the conditions that select it over its alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
68 tool updates
v0.1.0- First observed
compare_stocks - First observed
download_multiple_tickers - First observed
get_analyst_estimates - First observed
get_analyst_price_targets - First observed
get_analyst_recommendations - First observed
get_api_status - First observed
get_balance_sheet - First observed
get_capital_gains - First observed
get_cash_flow - First observed
get_commodity_price - First observed
get_company_info - First observed
get_company_officers - First observed
get_company_overview - First observed
get_complete_analysis - First observed
get_corporate_actions - First observed
get_crypto_price - First observed
get_dividends - First observed
get_earnings_calendar - First observed
get_earnings_dates - First observed
get_earnings_history - First observed
get_economic_calendar - First observed
get_eps_revisions - First observed
get_eps_trend - First observed
get_fast_info - First observed
get_financial_summary - First observed
get_forex_rate - First observed
get_fund_holdings - First observed
get_fund_overview - First observed
get_fund_sector_weights - First observed
get_growth_estimates - First observed
get_historical_comparison - First observed
get_historical_data - First observed
get_historical_price_on_date - First observed
get_income_statement - First observed
get_industry_overview - First observed
get_insider_purchases - First observed
get_insider_roster_holders - First observed
get_insider_transactions - First observed
get_institutional_holders - First observed
get_ipo_calendar - First observed
get_isin - First observed
get_key_ratios - First observed
get_major_holders - First observed
get_market_indices - First observed
get_market_movers - First observed
get_market_status - First observed
get_market_summary - First observed
get_mutualfund_holders - First observed
get_options_chain - First observed
get_options_expirations - First observed
get_peer_comparison - First observed
get_sec_filings - First observed
get_sector_overview - First observed
get_sector_performance - First observed
get_shares_history - First observed
get_splits_calendar - First observed
get_stock_news - First observed
get_stock_price - First observed
get_stock_quote - First observed
get_stock_splits - First observed
get_trending_tickers - First observed
get_ttm_financials - First observed
get_upcoming_earnings - First observed
get_upgrades_downgrades - First observed
get_valuation_history - First observed
run_self_test - First observed
search_ticker - First observed
validate_ticker
TDQS
Scored across 68 tools
Many tools overlap heavily: get_stock_price/get_stock_quote/get_fast_info/get_company_overview/get_financial_summary/get_complete_analysis all serve quick company/price overviews, while compare_stocks/get_peer_comparison/get_historical_comparison and several earnings/analyst/holder tools have close boundaries. Descriptions help, but an agent can easily misselect among similar read-only financial-data endpoints.
The set is overwhelmingly consistent with get_* snake_case names for data retrieval. A few outliers such as compare_stocks, download_multiple_tickers, search_ticker, validate_ticker, and run_self_test are minor deviations but still readable.
With 68 tools, the surface is far beyond a well-scoped set and includes many redundant overview/quote/analyst/holder variants. The count is an extreme mismatch for practical tool selection despite the broad financial domain.
Coverage is extensive across quotes, fundamentals, analysts, earnings, funds, options, macro calendars, forex, crypto, commodities, and SEC filings. Some niche areas are missing or only indirectly covered, but the read-only market-data surface is broadly complete.
Related MCP Connectors
Yahoo Finance for AI agents: quotes, price history, options with Greeks, financials, news, movers.
Stock market data for AI agents: real-time quotes, financials, options, SEC filings and news.
Financial data MCP server for Claude, ChatGPT, Cursor and Codex. Real-time stock quotes, financial statements, options flow, SEC filings, insider trades, 13F holdings, macro data and market news from gloom.sh, the open-source Bloomberg Terminal alternative.
Live crypto + IDX stock market intelligence for AI agents — 19 tools, no API key.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides real-time financial data from Yahoo Finance to Large Language Models through the Model Context Protocol, enabling AI models to access stock prices, historical data, and company information.1MIT
- FlicenseNot gradedqualityDmaintenanceProvides real-time stock market data through Yahoo Finance without requiring an API key. Get quotes, historical data, company information, financial statements, and ticker search capabilities.-
- AlicenseNot gradedqualityDmaintenanceProvides comprehensive financial data from Yahoo Finance, enabling retrieval of stock prices, company information, financial statements, options data, analyst recommendations, and market news through natural language queries.MIT
- AlicenseNot gradedqualityDmaintenanceProvides comprehensive access to Yahoo Finance data, including historical stock prices, financial statements, and analyst recommendations. It is designed for deployment on Cloudflare Workers and supports multiple transport methods to integrate market data into LLM workflows.35 npmMIT