Skip to main content
Glama
narumiruna

Yahoo Finance MCP Server

by narumiruna

Yahoo Finance MCP 服务器

PyPI version Python CI License: MIT

一个 模型上下文协议 (MCP) 服务器,为 AI 助手提供通过 yfinance 访问 Yahoo Finance 数据的能力。您可以直接在 AI 对话中查询股票信息、财经新闻、行业排名并生成专业的金融图表。

功能

  • 股票数据 — 公司信息、财务状况、估值指标、股息和交易数据

  • 财务报表 — 包含历史数据(息税前利润 EBIT、投入资本等)的损益表和资产负债表

  • 财经新闻 — 任何股票代码的最新新闻文章和新闻稿

  • 搜索 — 在 Yahoo Finance 中查找股票、ETF 和新闻

  • 行业排名 — 各行业的顶级 ETF、共同基金、公司、增长领军企业和表现最佳者

  • 价格历史 — 以 Markdown 表格或专业图表形式呈现的历史 OHLCV 数据

  • 图表生成 — 以 WebP 图像格式返回 K 线图、VWAP 和成交量分布图

Related MCP server: DuckDuckGo MCP Server

工具

yfinance_get_ticker_info

获取全面的股票数据,包括公司信息、财务状况、交易指标和治理数据。

参数

类型

必需

描述

symbol

string

是

股票代码 (例如 AAPL, GOOGL, MSFT)

返回: 包含公司详情、价格数据、估值指标、交易信息、股息、财务状况和绩效指标的 JSON 对象。

yfinance_get_ticker_news

获取特定股票的最新新闻文章和新闻稿。

参数

类型

必需

描述

symbol

string

是

股票代码

返回: 包含标题、摘要、发布日期、提供商、URL 和缩略图的新闻项 JSON 数组。

在 Yahoo Finance 中搜索股票、ETF 和新闻文章。

参数

类型

必需

描述

query

string

是

搜索查询 — 公司名称、股票代码或关键词

search_type

string

是

"all" (报价+新闻), "quotes" (仅股票/ETF), 或 "news" (仅文章)

返回: 根据 search_type 返回匹配的报价和/或新闻结果。

yfinance_get_top

获取市场行业内排名靠前的金融实体。

参数

类型

必需

描述

sector

string

是

市场行业 (见下文 支持的行业)

top_type

string

是

"top_etfs", "top_mutual_funds", "top_companies", "top_growth_companies", 或 "top_performing_companies"

top_n

number

否

返回的结果数量 (默认: 10, 最大: 100)

返回: 包含相关指标的顶级实体 JSON 数组。

支持的行业

Basic Materials (基础材料), Communication Services (通信服务), Consumer Cyclical (消费周期), Consumer Defensive (消费防御), Energy (能源), Financial Services (金融服务), Healthcare (医疗保健), Industrials (工业), Real Estate (房地产), Technology (科技), Utilities (公用事业)

yfinance_get_price_history

获取历史价格数据并可选择生成技术分析图表。

参数

类型

必需

描述

symbol

string

是

股票代码

period

string

否

时间范围 — 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max (默认: 1mo)

interval

string

否

数据粒度 — 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo (默认: 1d)

chart_type

string

否

要生成的图表 (省略则返回表格数据)

图表类型:

值

描述

"price_volume"

带成交量柱状图的 K 线图

"vwap"

带成交量加权平均价格 (VWAP) 叠加的价格图表

"volume_profile"

带价格水平成交量分布的 K 线图

返回:

  • 无 chart_type 时:包含日期、开盘价、最高价、最低价、收盘价、成交量、股息和股票拆分列的 Markdown 表格。

  • 有 chart_type 时:用于高效 Token 使用的 Base64 编码 WebP 图像。

yfinance_get_financials

获取包含历史数据的财务报表(损益表、资产负债表和现金流量表)。

参数

类型

必需

描述

symbol

string

是

股票代码

frequency

string

否

"annual" (年度), "quarterly" (季度), 或 "ttm" (过去十二个月)。默认: "annual"

返回: 包含每个报告期损益表、资产负债表和现金流量数据的 JSON 对象。

  • 损益表字段: EBIT, Net Income (净利润), Tax Provision (税项准备), Pretax Income (税前利润), Interest Expense (利息支出), Total Revenue (总收入), Operating Income (营业利润), EBITDA, Normalized Income (归一化利润)

  • 资产负债表字段: Stockholders Equity (股东权益), Total Debt (总债务), Cash And Cash Equivalents (现金及现金等价物), Invested Capital (投入资本), Net Debt (净债务), Total Assets (总资产), Total Liabilities Net Minority Interest (总负债扣除少数股东权益), Net Tangible Assets (净有形资产), Tangible Book Value (有形账面价值)

  • 现金流量表字段: Operating Cash Flow (经营现金流), Free Cash Flow (自由现金流), Capital Expenditure (资本支出), Net Income From Continuing Operations (持续经营净利润), Depreciation And Amortization (折旧与摊销), Change In Working Capital (营运资金变动), Cash Dividends Paid (已付现金股息)

使用方法

通过 uv (推荐)

  1. 安装 uv

  2. 将以下内容添加到您的 MCP 客户端配置中:

{
  "mcpServers": {
    "yfmcp": {
      "command": "uvx",
      "args": ["yfmcp@latest"]
    }
  }
}

通过 Docker

{
  "mcpServers": {
    "yfmcp": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "narumi/yfinance-mcp"]
    }
  }
}

从源码安装

  1. 克隆仓库并安装依赖:

git clone https://github.com/narumiruna/yfinance-mcp.git
cd yfinance-mcp
uv sync
  1. 将以下内容添加到您的 MCP 客户端配置中:

{
  "mcpServers": {
    "yfmcp": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/path/to/yfinance-mcp",
        "yfmcp"
      ]
    }
  }
}

将 /path/to/yfinance-mcp 替换为您克隆仓库的实际路径。

开发

前置要求

  • Python ≥ 3.12

  • uv 包管理器

设置

uv sync --extra dev

Lint 与格式化

uv run ruff check .
uv run ruff format .

类型检查

uv run ty check src tests

测试

uv run pytest -v -s --cov=src tests

演示聊天机器人

请查看专用仓库中的演示聊天机器人:yfinance-mcp-demo

贡献者

由 contrib.rocks 制作。

许可证

本项目采用 MIT 许可证 开源。

Available Tools

15 tools
yfinance_get_analyst_estimatesB
Read-onlyIdempotent

Fetch consensus estimates, EPS/revenue trends, revisions, recommendations, and earnings history.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock ticker symbol (e.g., 'AAPL', 'GOOGL', 'MSFT')
max_rowsNoMaximum rows per section. Use 0 to return all rows.
sectionsNoOptional analyst sections: recommendations, earnings_estimate, revenue_estimate, eps_trend, eps_revisions, earnings_history, and growth_estimates. Omit to return all sections.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the scope of data (consensus estimates, trends, etc.) but discloses no additional behavioral traits like pagination, rate limits, or the behavior of the 'sections' parameter beyond what the 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.

Conciseness5/5

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

The description is a single sentence that efficiently lists the key data types covered. No filler, no redundancy, and it directly conveys the tool's scope.

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

Completeness4/5

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

The structured schema (3 params with 100% coverage), annotations (read-only, idempotent), and presence of an output schema cover safety and parameters. The description sufficiently conveys the core purpose, but lacks usage alternatives, keeping it just below the top tier.

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

Parameters3/5

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

Schema description coverage is 100%, meeting the baseline of 3. The description lists content areas that map to the 'sections' parameter, but adds no new meaning about the 'symbol' or 'max_rows' parameters beyond what the schema already details.

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

Purpose4/5

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

The description uses the specific verb 'Fetch' and identifies the resource as analyst estimates, listing key content areas (consensus estimates, EPS/revenue trends, revisions, recommendations, earnings history). This clearly differentiates from sibling tools like price targets or news, though it does not explicitly name alternatives.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool over alternatives. Sibling tools exist (e.g., yfinance_get_analyst_price_targets, yfinance_get_upgrades_downgrades) but no usage context, prerequisites, or exclusions are offered.

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

yfinance_get_analyst_price_targetsA
Read-onlyIdempotent

Fetch the current price and analyst consensus price targets for a stock.

Returns a JSON object with the fields supplied by Yahoo Finance:
- current: Current market price
- low: Lowest analyst price target
- high: Highest analyst price target
- mean: Mean analyst price target
- median: Median analyst price target

Analyst coverage and available fields vary by symbol.
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock ticker symbol (e.g., 'AAPL', 'GOOGL', 'MSFT')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds meaningful context by disclosing that analyst coverage and available fields vary by symbol, and by enumerating the exact return fields. This goes beyond the structured annotations and clarifies potential variability.

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

Conciseness5/5

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

The description is concise and well-structured. It front-loads the main purpose in one sentence, then uses a bullet list to clearly present return fields. Every sentence and bullet earns its place with no redundant information.

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

Completeness4/5

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

The tool is simple with a single well-documented parameter and output schema present. The description covers the return fields and adds a variability caveat, which is sufficient for the agent to understand behavior. Minor edge cases (e.g., missing coverage) are not explicitly detailed, but the variability warning implies them, so this is near-complete.

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

Parameters3/5

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

The input schema fully describes the only parameter 'symbol' with examples and a clear description (100% coverage). The description does not add any additional parameter semantics or format details beyond what the schema already provides, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Fetch') and the resource ('current price and analyst consensus price targets'), which is specific and distinguishes it from sibling tools like get_upgrades_downgrades that focus on analyst recommendations. This is a clear and unambiguous purpose.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives. The description only states what it does, and while the sibling list implies different use cases (e.g., upgrades/downgrades for analyst actions), no direct comparisons or exclusions are provided. Guidance is only implied at best.

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

yfinance_get_financialsA
Read-onlyIdempotent

Fetch financial statements (income statement, balance sheet, and cash flow) with historical data.

Returns JSON with income statement, balance sheet, and cash flow data across reporting periods.

Use the data to analyze trends, calculate ratios, or compare periods.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock ticker symbol (e.g., 'AAPL', 'GOOGL', 'MSFT')
frequencyNoReporting frequency: 'annual' for yearly, 'quarterly' for quarterly, or 'ttm' for trailing twelve monthsannual

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true, so the safety profile is clear. Description adds that it returns historical data and the structure of the output (income, balance sheet, cash flow), which is useful but not extensive behavioral context. No contradictions with annotations.

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

Conciseness5/5

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

Three sentences, each serving a purpose: first defines the action, second describes output, third suggests usage. No unnecessary words or redundancy. Appropriately sized and front-loaded.

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

Completeness4/5

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

Given the presence of an output schema (so return format is documented elsewhere), the description covers the tool's purpose, output structure, and typical use cases. It is adequate for a simple read-only tool, though it could mention data range or limitations.

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

Parameters3/5

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

Input schema has 100% coverage with descriptions for both parameters (symbol and frequency). Description does not add any new semantics beyond the schema; it only mentions 'historical data' which is implied by the tool's nature. Baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states it fetches financial statements (income, balance sheet, cash flow) with historical data. Verb 'Fetch' and resource 'financial statements' are specific, and the tool is well-distinguished from siblings like price history or holders.

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

Usage Guidelines3/5

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

Description says 'Use the data to analyze trends, calculate ratios, or compare periods' which implies usage context but does not explicitly state when to use vs alternatives or when not to use. No exclusions or comparisons to siblings provided.

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

yfinance_get_fund_dataA
Read-onlyIdempotent

Fetch ETF or mutual-fund composition, holdings, exposures, ratings, and operating details.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesETF or mutual fund ticker symbol (e.g., 'SPY', 'BND', 'VFIAX')
max_rowsNoMaximum rows per tabular section. Use 0 to return all rows.
sectionsNoOptional fund sections: description, fund_overview, fund_operations, asset_classes, top_holdings, equity_holdings, bond_holdings, bond_ratings, and sector_weightings. Omit to return all sections.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare read-only, idempotent, open-world behavior. The description's 'Fetch' is consistent. It adds no additional behavioral context such as potential response sizes, rate limits, or pagination, but the max_rows parameter in the schema partially addresses that.

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

Conciseness5/5

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

A single, clear sentence that packs the tool's purpose and scope without extraneous detail.

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

Completeness4/5

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

The description covers the core data types exposed by the tool and an output schema exists to define return structure. It lacks explicit usage guidance but is otherwise sufficient for understanding the tool's domain.

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

Parameters3/5

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

All three parameters (symbol, max_rows, sections) have thorough descriptions in the schema, so the description does not need to elaborate. It adds no extra parameter semantics beyond the schema's high coverage.

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

Purpose5/5

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

The description uses a specific verb 'Fetch' and identifies the exact resource: ETF or mutual-fund composition, holdings, exposures, ratings, and operating details. This clearly differentiates it from sibling tools focused on analyst data, news, price history, etc.

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

Usage Guidelines3/5

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

While the description clearly implies use for fund-related data, it provides no explicit guidance on when to choose this tool over siblings such as yfinance_get_holders or yfinance_get_ticker_info. It neither names alternatives nor states exclusions.

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

yfinance_get_holdersA
Read-onlyIdempotent

Fetch major holders, institutional holders, mutual fund holders, and insider data.

Returns JSON with:
- major_holders: Aggregated breakdown including insider % held, institutional % held,
  institutional % float held, and institution count.
- institutional_holders: List of institutional investors with shares held, date reported,
  value, and % change.
- mutualfund_holders: List of mutual fund holders with same fields.
- insider_transactions: Recent insider transactions including shares, value, transaction
  type, and date.
- insider_purchases: Summary of insider buy/sell activity over the last 6 months.
- insider_roster: List of known insiders by name and position.

Use this to analyze ownership concentration, insider activity, and institutional interest.
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock ticker symbol (e.g., 'AAPL', 'GOOGL', 'MSFT')
max_rowsNoMaximum rows returned per holder section. Use 0 to return all rows.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds value by detailing the JSON structure returned, including sections like major_holders and insider_transactions, which goes beyond the annotations and output schema.

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

Conciseness4/5

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

The description is concise, with a clear first sentence stating the purpose, followed by a bulleted list of return sections. It is well-structured and front-loaded, though the bullet list could be slightly more compact without losing clarity.

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

Completeness4/5

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

Given the presence of an output schema and comprehensive annotations, the description provides sufficient context about the data returned. It lists the sections but does not cover edge cases like empty results or rate limits. However, for a read-only tool with openWorldHint, this is adequate.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description does not add additional meaning to the parameters beyond what is in the schema (symbol and max_rows). The schema already provides descriptions for both parameters.

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

Purpose5/5

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

The description clearly states the tool fetches major holders, institutional holders, mutual fund holders, and insider data. It distinguishes from siblings like yfinance_get_financials which deal with financial statements, making the purpose specific and unambiguous.

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

Usage Guidelines4/5

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

The description explicitly states 'Use this to analyze ownership concentration, insider activity, and institutional interest,' providing clear context for when to use. It does not explicitly mention when not to use or list alternatives, but the sibling tools cover different data types, making the usage fairly clear.

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

yfinance_get_option_chainA
Read-onlyIdempotent

Fetch option chain data (calls and puts) for a stock with available strike prices.

Returns JSON with calls and/or puts data for each expiration date.

JSON fields include:
- contractSymbol: Option contract identifier
- strike: Strike price
- lastPrice: Last traded price
- bid/ask: Bid and ask prices
- volume: Trading volume
- openInterest: Open interest
- impliedVolatility: Implied volatility (IV)
- inTheMoney: Whether option is ITM
- contractSize: Contract size (REGULAR)
- currency: Currency (USD)

Use this to analyze options pricing, IV surfaces, and strike levels.
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock ticker symbol (e.g., 'AAPL', 'GOOGL', 'MSFT')
option_typeNoWhich options to return: 'calls', 'puts', or 'all' (both calls and puts).all
expiration_dateNoOption expiration date in YYYY-MM-DD format. Use the 'yfinance_get_option_dates' tool to find available dates, or omit to fetch all available expiration dates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds value by detailing the JSON fields returned (e.g., contractSymbol, strike, impliedVolatility) and the intended use case for options analysis, without contradicting annotations.

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

Conciseness4/5

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

The description is front-loaded with the purpose and then lists the JSON fields. It is moderately concise; the field list is helpful but could be slightly more condensed. However, it remains clear and well-structured.

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

Completeness4/5

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

The description is sufficiently complete for a data-fetching tool: it explains what data is returned, how to use parameters, and references a sibling tool for dates. The presence of an output schema (though not provided) is compensated by the detailed field listing.

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

Parameters4/5

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

Schema description coverage is 100% for all three parameters. The description adds semantic value by explaining the expiration_date parameter's relationship with yfinance_get_option_dates and by listing the fields in the output, which aids understanding beyond the schema.

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

Purpose5/5

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

The description clearly states the tool fetches option chain data (calls and puts) for a stock, with specific mention of strike prices and expiration dates. It distinguishes itself from sibling tools like yfinance_get_option_dates by explicitly referencing it for finding available dates.

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

Usage Guidelines4/5

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

The description provides implicit usage guidance by referencing yfinance_get_option_dates to obtain expiration dates, but it does not explicitly state when to use this tool over others or when not to use it.

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

yfinance_get_option_datesA
Read-onlyIdempotent

Fetch available option expiration dates for a stock.

Returns JSON array of expiration dates in YYYY-MM-DD format.

Use these dates with the 'yfinance_get_option_chain' tool to fetch
the options chain for a specific date.
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock ticker symbol (e.g., 'AAPL', 'GOOGL', 'MSFT')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

The description discloses the return format (JSON array of YYYY-MM-DD dates) which adds value beyond annotations. Annotations already indicate read-only, non-destructive, idempotent behavior, so the description's format detail is sufficient for transparency.

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

Conciseness5/5

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

The description is only three sentences, front-loaded with purpose, and each sentence adds distinct value: purpose, return format, and cross-reference to sibling tool. No wasted words.

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

Completeness5/5

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

Given the tool's low complexity (single parameter, simple return), the description covers all necessary context: what it does, what it returns, and how to use it with a related tool. Output schema exists so return structure is further clarified.

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

Parameters3/5

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

Schema coverage is 100% with the symbol parameter already well-described. The description adds no extra parameter meaning beyond what the schema provides, meeting the baseline expectation.

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

Purpose5/5

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

The description clearly states it fetches available option expiration dates for a stock, using specific verb 'fetch' and resource 'option expiration dates'. It distinguishes from sibling tools by mentioning usage with yfinance_get_option_chain.

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

Usage Guidelines4/5

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

The description explicitly tells when to use this tool (to get expiration dates) and how to use it with yfinance_get_option_chain. However, it does not explicitly state when not to use it or mention any prerequisites.

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

yfinance_get_price_historyA
Read-onlyIdempotent

Fetch historical price data and optionally generate technical analysis charts.

When chart_type is None, returns Markdown table with columns:
- Date: Trading date (index)
- Open: Opening price
- High: Highest price
- Low: Lowest price
- Close: Closing price
- Volume: Trading volume
- Dividends: Dividend payments (if any)
- Stock Splits: Split events (if any)

When chart_type is specified, returns a chart image:
- 'price_volume': Candlestick chart with volume bars
- 'vwap': Price with Volume Weighted Average Price overlay
- 'volume_profile': Volume distribution by price level

Set prepost=True to include pre-market and post-market data when available.

Note: Not all period/interval combinations are valid. Minute intervals (1m, 5m, etc.)
only work with short periods (1d, 5d).
ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoTime range: '1d'/'5d' (days), '1mo'/'3mo'/'6mo' (months), '1y'/'2y'/'5y'/'10y' (years), 'ytd' (year-to-date), 'max' (all available data)1mo
symbolYesStock ticker symbol (e.g., 'AAPL', 'GOOGL', 'MSFT')
prepostNoInclude pre-market and post-market data when available
intervalNoData granularity: '1m'/'5m'/'15m'/'30m' (minutes), '1h' (hour), '1d'/'5d' (days), '1wk' (week), '1mo'/'3mo' (months). Short intervals require short periods (e.g., '1m' interval only works with '1d'/'5d' period)1d
chart_typeNoOptional visualization: 'price_volume' (candlestick chart with volume bars), 'vwap' (Volume Weighted Average Price overlay), 'volume_profile' (volume distribution by price level). Omit for tabular data

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations (readOnlyHint=true, destructiveHint=false) are supported. The description adds detail about output formats: Markdown table with specific columns or chart images depending on chart_type. It also notes validity constraints for intervals, going 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.

Conciseness5/5

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

The description is well-structured: first sentence as command, then bullet points for table columns, chart options, prepost note, and validity warning. Every sentence adds value; no fluff.

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

Completeness4/5

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

The description covers the main output cases (table vs. chart) and common constraints. It lacks details on error handling for invalid combinations, but given the presence of annotations and output schema, it is reasonably complete.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by summarizing chart_type options and warning about interval/period compatibility, which is not fully covered in schema descriptions. However, most parameter meaning is already in the schema.

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

Purpose5/5

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

The description clearly states 'Fetch historical price data and optionally generate technical analysis charts.' It specifies the resource (historical price data) and the optional chart generation. This distinguishes it from sibling tools that focus on financials, holders, news, etc.

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

Usage Guidelines4/5

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

The description provides explicit guidance on chart_type options and warns about valid period/interval combinations. It also explains prepost behavior. However, it does not explicitly mention when to use this tool versus alternatives among siblings.

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

yfinance_get_ticker_infoA
Read-onlyIdempotent

Retrieve comprehensive stock data including company information, financials, trading metrics and governance.

Returns JSON object with fields including:
- Company: symbol, longName, sector, industry, longBusinessSummary, website, city, country
- Price: currentPrice, previousClose, open, dayHigh, dayLow, fiftyTwoWeekHigh, fiftyTwoWeekLow
- Valuation: marketCap, enterpriseValue, trailingPE, forwardPE, priceToBook, pegRatio
- Trading: volume, averageVolume, averageVolume10days, bid, ask, bidSize, askSize
- Dividends: dividendRate, dividendYield, exDividendDate, payoutRatio
- Financials: totalRevenue, revenueGrowth, earningsGrowth, profitMargins, operatingMargins
- Performance: beta, fiftyDayAverage, twoHundredDayAverage, trailingEps, forwardEps

Note: Available fields vary by security type. Timestamps are converted to readable dates.
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock ticker symbol (e.g., 'AAPL', 'GOOGL', 'MSFT')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, idempotentHint, etc. The description adds behavioral nuances: fields vary by security type, timestamps converted. This goes beyond annotations without contradiction.

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

Conciseness4/5

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

The description is well-organized with bulleted categories, but slightly verbose with overlapping categories (e.g., Price/Valuation/Trading). Front-loaded purpose is clear.

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

Completeness5/5

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

Given the tool's complexity, annotations richness, and output schema implied via field listing, the description is complete. It provides sufficient detail on return fields and behavior for agent decision-making.

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

Parameters3/5

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

The sole parameter 'symbol' is well-described in the input schema with examples, achieving 100% coverage. The description adds no extra parameter meaning beyond what schema provides.

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

Purpose5/5

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

The description clearly states it retrieves comprehensive stock data including specific categories like company info, financials, trading metrics, and governance. It distinguishes from sibling tools by emphasizing comprehensiveness vs. specialized tools like yfinance_get_financials.

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

Usage Guidelines3/5

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

The description implies use when full stock details are needed, but lacks explicit guidance on when to choose this over siblings like yfinance_get_financials or yfinance_get_price_history. No 'when not' or alternative recommendations.

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

yfinance_get_ticker_newsA
Read-onlyIdempotent

Fetch recent news articles and press releases for a specific stock.

Returns JSON array where each news item has:
- id: Unique article identifier
- content: Object containing:
    - title: Article headline
    - summary: Brief article summary
    - pubDate: Publication date (ISO 8601 format)
    - provider: Object with displayName (e.g., "Yahoo Finance") and url
    - canonicalUrl: Object with article url, site, region, lang
    - thumbnail: Object with image URLs and resolutions
    - contentType: Type of content (e.g., "STORY", "VIDEO")

Use this to track company announcements, market sentiment, and breaking news.
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock ticker symbol (e.g., 'AAPL', 'GOOGL', 'MSFT')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and idempotentHint=true. The description adds value by detailing the output JSON structure (fields like id, content, title, etc.), which provides behavioral context beyond the annotations. It does not contradict any annotation.

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

Conciseness5/5

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

The description is concise (three sentences) and front-loaded with the core action. Every sentence serves a purpose: action, output structure, usage guidance. No unnecessary information.

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

Completeness4/5

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

Given the tool has one parameter, a rich output schema, and annotations, the description covers the output in detail and provides usage context. It is slightly incomplete as it does not mention any result limits or pagination, but overall sufficient.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents the symbol parameter with examples. The description does not add any meaning beyond the schema; it focuses on the output. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it fetches news for a specific stock using a specific verb ('Fetch') and resource ('recent news articles and press releases'). It distinguishes this tool from siblings like yfinance_get_financials and yfinance_get_ticker_info, which serve different data types.

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

Usage Guidelines3/5

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

The description provides a clear use case ('track company announcements, market sentiment, and breaking news') but does not explicitly contrast with alternatives or state when not to use this tool. No sibling differentiation or exclusion criteria are provided.

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

yfinance_get_topA
Read-onlyIdempotent

Get top-ranked financial entities within a sector.

This unified tool provides access to various rankings:
- ETFs and mutual funds focused on the sector
- Largest companies by market capitalization
- Fastest-growing companies by revenue/earnings
- Best-performing stocks by price appreciation

Returns JSON data with relevant metrics for each entity type.
ParametersJSON Schema
NameRequiredDescriptionDefault
top_nNoNumber of top entities to retrieve per category/industry
sectorYesMarket sector (e.g., 'Technology', 'Healthcare', 'Financial Services')
top_typeYesType of entities to retrieve: 'top_etfs' (sector ETFs), 'top_mutual_funds' (sector mutual funds), 'top_companies' (largest by market cap), 'top_growth_companies' (fastest revenue/earnings growth), 'top_performing_companies' (best stock price performance)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare the tool as read-only, non-destructive, idempotent, and open world. The description adds that it returns JSON data with metrics, but does not elaborate on behaviors like rate limits or data freshness. The description does not contradict annotations.

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

Conciseness5/5

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

The description is concise, front-loaded with the main purpose, and lists entity types without unnecessary detail. Every sentence adds value.

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

Completeness4/5

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

The description is fairly complete given the presence of an output schema and detailed input schema. It covers the purpose and entity types, though it could briefly mention that results are sorted by relevance (implied by 'top'). Minor gap.

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

Parameters3/5

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

Schema coverage is 100% with detailed parameter descriptions in the input schema. The tool description adds a narrative list of top_type options but does not provide new constraints or clarifications beyond what the schema already offers.

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

Purpose5/5

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

The description clearly states the tool retrieves top-ranked financial entities within a sector. It lists specific ranking types (ETFs, mutual funds, largest companies, etc.), distinguishing it from sibling tools that focus on single entities or historical data.

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

Usage Guidelines3/5

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

The description implies usage for sector-level rankings but does not explicitly state when to use this tool over alternatives like yfinance_get_ticker_info or yfinance_search. No when-not-to-use guidance is provided.

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

yfinance_get_upgrades_downgradesB
Read-onlyIdempotent

Fetch analyst upgrades, downgrades, initiations, and price target changes.

Returns analyst actions newest first. Fields supplied by Yahoo Finance can include:
- GradeDate: Date and time of the analyst action
- Firm: Analyst firm name
- ToGrade and FromGrade: New and previous ratings
- Action: Rating action, such as upgrade, downgrade, initiation, or reiteration
- priceTargetAction: Price target action, such as Raises, Lowers, or Maintains
- currentPriceTarget and priorPriceTarget: New and previous price targets

Available fields vary by symbol and analyst action.
ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesStock ticker symbol (e.g., 'AAPL', 'GOOGL', 'MSFT')
max_rowsNoMaximum analyst actions to return, newest first. Use 0 to return all rows.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is known. The description adds that results are returned newest first and that available fields vary by symbol and analyst action, which is useful contextual behavior. However, it does not cover potential missing data or error handling.

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

Conciseness4/5

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

The description is well-organized, with a clear opening sentence followed by a structured field list. It provides useful detail without excessive verbosity, though the field enumeration could be considered slightly long.

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

Completeness4/5

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

For a simple read-only tool with only two parameters and a known output schema, the description adequately explains the returned data, ordering, and field variability. It lacks alternative usage guidance, but that dimension is separate. Overall, it is complete enough for correct invocation.

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

Parameters3/5

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

Input schema covers 100% of parameters with descriptions, including symbol and max_rows semantics. The description does not add parameter-specific details beyond what the schema already provides, so baseline 3 applies.

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

Purpose4/5

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

The description clearly states the tool fetches analyst upgrades, downgrades, initiations, and price target changes, specifying the resource and action. However, it does not differentiate from the sibling tool yfinance_get_analyst_price_targets, which may overlap on price target changes.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like yfinance_get_analyst_price_targets. The description only describes functionality without any when/when-not or alternative references.

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

yfinance_screenA
Read-onlyIdempotent

Run a Yahoo Finance screener query.

Supports predefined Yahoo screener keys and custom equity, mutual-fund, or ETF query trees.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoRows to return for custom queries. Yahoo maximum is 250.
countNoRows to return for predefined queries. Yahoo maximum is 250.
queryYesScreener query. For query_type='predefined': string key like 'day_gainers'. For query_type='equity', 'fund', or 'etf': query tree object with {operator, operands} nodes.
offsetNoResult offset.
user_idNoOptional Yahoo user id.
sort_ascNoSort ascending if true, descending if false.
query_typeNoQuery mode: 'predefined', 'equity', 'fund', or 'etf'.predefined
sort_fieldNoSort field, for example 'percentchange'.
user_id_typeNoOptional Yahoo user id type, commonly 'guid'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety traits. The description adds capability scope (predefined keys and custom query trees) but not behavioral nuances such as response size limits or pagination behavior. Since annotations carry 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.

Conciseness5/5

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

The description is two sentences, front-loaded with the primary action and immediately followed by the key distinction between predefined and custom queries. No filler or redundancy, earning a top score.

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

Completeness4/5

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

Given the tool's moderate complexity (9 parameters) but rich schema (100% param coverage) and presence of an output schema, the description is sufficiently complete. It covers the core purpose and the two query modes, though it omits nuanced guidance like when to use count vs. size, which the schema already covers. This is above average but not exhaustive.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds a high-level note about query being either a predefined key or a query tree, but this only lightly supplements the schema's already detailed parameter descriptions for query and query_type. It does not explain interactions between size/count or sort fields.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb and resource: 'Run a Yahoo Finance screener query.' It further distinguishes itself from siblings like yfinance_screen_gappers and yfinance_get_top by mentioning support for both predefined screener keys and custom query trees, which is this tool's unique scope.

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

Usage Guidelines3/5

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

The description implies usage context by stating it supports predefined and custom queries, but it does not explicitly say when to use this tool over alternatives like yfinance_screen_gappers or yfinance_get_top. No exclusions or alternative tool references are provided, so guidance is only implied.

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

yfinance_screen_gappersA
Read-onlyIdempotent

Run a custom equity screener tuned for opening-session stock gappers.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoRows to return. Yahoo maximum is 250.
offsetNoResult offset for pagination.
regionNoYahoo screener region code, for example 'us'.us
sort_ascNoSort by percentchange ascending if true, descending if false.
min_priceNoMinimum current intraday price.
min_volumeNoMinimum intraday trading volume.
min_market_capNoMinimum intraday market cap in USD.
min_percent_changeNoMinimum percent change from prior close, for example 3.0 for +3%.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already provide key behavioral traits (readOnlyHint=true, idempotentHint=true), and the description adds the specific tuning for gappers, which complements rather than contradicts. The description adds value beyond the annotations without being redundant.

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

Conciseness5/5

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

The description is a single, clear sentence of only 11 words, with no fluff or repetition. It is optimally concise and front-loaded.

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

Completeness5/5

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

Given the presence of a full output schema, annotations, and 100% schema coverage, the description provides sufficient context. No additional information is needed for an agent to use this tool correctly.

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

Parameters3/5

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

The input schema has 100% description coverage, so the schema already explains each parameter thoroughly. The description adds no additional parameter semantics, meeting the baseline of 3.

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

Purpose5/5

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

The description clearly identifies a specific verb ('Run') and resource ('equity screener') with a unique tuning ('opening-session stock gappers'), distinguishing it from the sibling 'yfinance_screen' which is a general screener. This leaves no ambiguity about the tool's purpose.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool over alternatives, nor does it mention exclusions or prerequisites. While the tool's purpose implies usage for gappers, the lack of explicit guidelines lowers the score.

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

Tool Schema Changelog

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

  1. 3 tool updatesv0.14.0
    • Addedyfinance_get_analyst_estimates
    • Addedyfinance_get_fund_data
    • Changedyfinance_screen3 fields changed
      • changedInput schema / properties / query / description
        Previous value: -"Screener query. For query_type='predefined': string key like 'day_gainers'. For query_type='equity' or 'fund': query tree object with {operator, operands} nodes."New value: +"Screener query. For query_type='predefined': string key like 'day_gainers'. For query_type='equity', 'fund', or 'etf': query tree object with {operator, operands} nodes."
      • changedInput schema / properties / query_type / description
        Previous value: -"Query mode: 'predefined', 'equity', or 'fund'."New value: +"Query mode: 'predefined', 'equity', 'fund', or 'etf'."
      • changedInput schema / properties / query_type / enum
        Previous value: -[
        -  "predefined",
        -  "equity",
        -  "fund"
        -]New value: +[
        +  "predefined",
        +  "equity",
        +  "fund",
        +  "etf"
        +]
  2. 2 tool updatesv0.13.0
    • Addedyfinance_get_analyst_price_targets
    • Addedyfinance_get_upgrades_downgrades
  3. 2 tool updatesv0.12.0
    • Addedyfinance_screen
    • Addedyfinance_screen_gappers
  4. 14 tool updatesv0.11.3
    • Removedget_price_history
    • Removedget_ticker_info
    • Removedget_ticker_news
    • Removedget_top
    • Removedsearch
    • Addedyfinance_get_financials
    • Addedyfinance_get_holders
    • Addedyfinance_get_option_chain
    • Addedyfinance_get_option_dates
    • Addedyfinance_get_price_history
    • Addedyfinance_get_ticker_info
    • Addedyfinance_get_ticker_news
    • Addedyfinance_get_top
    • Addedyfinance_search
  5. 5 tool updatesv1.0.0
    • First observedget_price_history
    • First observedget_ticker_info
    • First observedget_ticker_news
    • First observedget_top
    • First observedsearch

TDQS

A4/5.0

Scored across 15 tools

Disambiguation5/5

Each tool targets a distinct data domain: ticker info, analyst data, news, search, screening, price history, financials, options, and holders. Even the closely related analyst and screener tools are clearly separated by their specific outputs and descriptions.

Naming Consistency4/5

The tools consistently use the yfinance_ prefix and snake_case, with most following a yfinance_get_* pattern. A few exceptions like yfinance_search, yfinance_screen, and yfinance_screen_gappers break the pattern slightly but remain predictable and readable.

Tool Count5/5

At 15 tools, the set is at the upper edge of well-scoped but still appropriate for Yahoo Finance's broad data coverage. Each tool covers a meaningful financial data category without obvious redundancy.

Completeness5/5

The surface comprehensively covers the main Yahoo Finance data categories: quotes, financials, price history, options, holders, news, analyst activity, screening, rankings, and fund data. For a read-only financial data server, there are no significant dead ends or missing core operations.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A basic MCP server built with FastMCP framework that provides example tools including message echoing and server information retrieval. Supports both stdio and HTTP transports with Docker deployment capabilities.
    -
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A basic MCP server built with FastMCP framework that provides example tools for echoing messages and retrieving server information. Supports both stdio and HTTP transports with Docker deployment capabilities.
    -
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A basic MCP server with example tools including message echo functionality and server information retrieval. Built with FastMCP framework and supports both stdio and HTTP transports.
    -
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A basic MCP server built with FastMCP framework that provides example tools including message echoing and server information retrieval. Supports both stdio and HTTP transports for integration with various MCP clients.
    -