Skip to main content
Glama
narumiruna

Yahoo Finance MCP Server

by narumiruna

Yahoo Finance MCP Server

PyPI version Python CI License: MIT

A Model Context Protocol (MCP) server that provides AI assistants with access to Yahoo Finance data via yfinance. Query stock information, financial news, sector rankings, and generate professional financial charts — all from your AI chat.

Features

  • Stock Data — Company info, financials, valuation metrics, dividends, and trading data

  • Analyst Data — Consensus targets, estimate/revision trends, recommendation history, and firm-level actions

  • Financial Statements — Income statement and balance sheet with historical data (EBIT, Invested Capital, etc.)

  • Financial News — Recent news articles and press releases for any ticker

  • Search — Find stocks, ETFs, and news across Yahoo Finance

  • Sector Rankings — Top ETFs, mutual funds, companies, growth leaders, and top performers by sector

  • Price History — Historical OHLCV data as markdown tables or professional charts

  • Chart Generation — Candlestick, VWAP, and volume profile charts returned as WebP images

  • Options Data — Option chains with calls, puts, strike prices, IV, and expiration dates

  • Ownership Data — Major holders, institutional investors, mutual fund holders, and insider transactions

  • Fund Look-Through — ETF and mutual-fund holdings, asset classes, sectors, ratings, and operating details

  • Screeners — Predefined, equity, mutual-fund, and ETF query trees

Related MCP server: DuckDuckGo MCP Server

Tools

yfinance_get_ticker_info

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

Parameter

Type

Required

Description

symbol

string

Yes

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

Returns: JSON object with company details, price data, valuation metrics, trading info, dividends, financials, and performance indicators.

yfinance_get_analyst_price_targets

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

Parameter

Type

Required

Description

symbol

string

Yes

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

Returns: JSON object with current, low, high, mean, and median price fields. Analyst coverage and available fields vary by symbol.

yfinance_get_analyst_estimates

Fetch analyst consensus estimates, revision momentum, recommendations, growth estimates, and earnings history.

Parameter

Type

Required

Description

symbol

string

Yes

Stock ticker symbol

sections

array

No

Any of recommendations, earnings_estimate, revenue_estimate, eps_trend, eps_revisions, earnings_history, or growth_estimates. Omit for all sections

max_rows

number

No

Maximum rows per section. Default: 12. Use 0 for all rows

Returns: Named arrays for available sections plus _metadata containing per-section row counts, truncation status, unavailable sections, and failed sections. A failure in one section does not discard successfully fetched sections.

yfinance_get_upgrades_downgrades

Fetch analyst upgrades, downgrades, initiations, reiterations, and price-target changes, newest first.

Parameter

Type

Required

Description

symbol

string

Yes

Stock ticker symbol

max_rows

number

No

Maximum actions to return. Default: 25. Use 0 to return all rows

Returns: JSON object containing upgrades_downgrades records and _metadata with row counts and truncation status. Records can include:

  • GradeDate: Date and time of the analyst action

  • Firm: Analyst firm name

  • ToGrade and FromGrade: New and previous ratings

  • Action: Rating action

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

yfinance_get_ticker_news

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

Parameter

Type

Required

Description

symbol

string

Yes

Stock ticker symbol

Returns: JSON array of news items with title, summary, publication date, provider, URL, and thumbnail.

Search Yahoo Finance for stocks, ETFs, and news articles.

Parameter

Type

Required

Description

query

string

Yes

Search query — company name, ticker symbol, or keywords

search_type

string

Yes

"all" (quotes + news), "quotes" (stocks/ETFs only), or "news" (articles only)

Returns: Matching quotes and/or news results depending on search_type.

yfinance_get_top

Get top-ranked financial entities within a market sector.

Parameter

Type

Required

Description

sector

string

Yes

Market sector (see supported sectors below)

top_type

string

Yes

"top_etfs", "top_mutual_funds", "top_companies", "top_growth_companies", or "top_performing_companies"

top_n

number

No

Number of results to return (default: 10, max: 100)

Returns: JSON array of top entities with relevant metrics.

Supported Sectors

Basic Materials, Communication Services, Consumer Cyclical, Consumer Defensive, Energy, Financial Services, Healthcare, Industrials, Real Estate, Technology, Utilities

yfinance_screen

Run Yahoo Finance screeners using either predefined screener keys or custom query trees.

Parameter

Type

Required

Description

query

string/object

Yes

For query_type="predefined": screener key such as "day_gainers". For query_type="equity", "fund", or "etf": custom query tree with {operator, operands} nodes

query_type

string

No

"predefined" (default), "equity", "fund", or "etf"

offset

number

No

Result offset

size

number

No

Rows for custom queries; Yahoo maximum is 250

count

number

No

Rows for predefined queries; Yahoo maximum is 250

sort_field

string

No

Sort field, for example "percentchange"

sort_asc

boolean

No

Sort ascending if true, descending if false

user_id

string

No

Optional Yahoo user identifier

user_id_type

string

No

Optional Yahoo user ID type, commonly "guid"

Returns: JSON screener response from Yahoo Finance, typically including quote rows and metadata.

Custom equity screener example:

{
  "query_type": "equity",
  "query": {
    "operator": "and",
    "operands": [
      { "operator": "gt", "operands": ["percentchange", 3] },
      { "operator": "eq", "operands": ["region", "us"] },
      { "operator": "gte", "operands": ["intradayprice", 5] },
      { "operator": "gt", "operands": ["dayvolume", 500000] }
    ]
  },
  "sort_field": "percentchange",
  "sort_asc": false,
  "size": 50
}

Custom ETF screener example:

{
  "query_type": "etf",
  "query": {
    "operator": "and",
    "operands": [
      { "operator": "eq", "operands": ["categoryname", "Large Blend"] },
      { "operator": "lte", "operands": ["annualreportnetexpenseratio", 0.2] }
    ]
  },
  "sort_field": "fundnetassets",
  "sort_asc": false,
  "size": 25
}

yfinance_screen_gappers

Run a purpose-built custom screener for opening-session bullish gappers.

Parameter

Type

Required

Description

min_percent_change

number

No

Minimum percent gap/change from prior close (default: 3.0)

min_price

number

No

Minimum intraday price (default: 5.0)

min_volume

number

No

Minimum day volume (default: 500000)

min_market_cap

number

No

Minimum intraday market cap in USD (default: 2000000000)

region

string

No

Yahoo region code (default: "us")

size

number

No

Number of results (default: 50, max: 250)

offset

number

No

Result offset for pagination (default: 0)

sort_asc

boolean

No

Sort by percentchange ascending (true) or descending (false, default)

Returns: JSON screener response from Yahoo Finance.

yfinance_get_price_history

Fetch historical price data and optionally generate technical analysis charts.

Parameter

Type

Required

Description

symbol

string

Yes

Stock ticker symbol

period

string

No

Time range — 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max (default: 1mo)

interval

string

No

Data granularity — 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo (default: 1d)

chart_type

string

No

Chart to generate (omit for tabular data)

prepost

boolean

No

Include pre-market and post-market data when available (default: false; useful with intraday requests like period="1d", interval="1m")

Chart types:

Value

Description

"price_volume"

Candlestick chart with volume bars

"vwap"

Price chart with Volume Weighted Average Price overlay

"volume_profile"

Candlestick chart with volume distribution by price level

Returns:

  • Without chart_type: Markdown table with Date, Open, High, Low, Close, Volume, Dividends, and Stock Splits columns.

  • With chart_type: Base64-encoded WebP image for efficient token usage.

yfinance_get_financials

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

Parameter

Type

Required

Description

symbol

string

Yes

Stock ticker symbol

frequency

string

No

"annual" (yearly), "quarterly" (quarterly), or "ttm" (trailing twelve months). Default: "annual"

Returns: JSON object with income statement, balance sheet, and cash flow data for each reporting period.

  • Income Statement fields: EBIT, Net Income, Tax Provision, Pretax Income, Interest Expense, Total Revenue, Operating Income, EBITDA, Normalized Income

  • Balance Sheet fields: 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

  • Cash Flow fields: Operating Cash Flow, Free Cash Flow, Capital Expenditure, Net Income From Continuing Operations, Depreciation And Amortization, Change In Working Capital, Cash Dividends Paid

yfinance_get_holders

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

Parameter

Type

Required

Description

symbol

string

Yes

Stock ticker symbol (e.g. AAPL, MSFT)

max_rows

number

No

Maximum rows returned per holder section. Default: 10. Use 0 to return all rows

Returns: JSON object with:

  • major_holders — Aggregated breakdown where each row has an index label (e.g. insidersPercentHeld, institutionsPercentHeld, institutionsFloatPercentHeld, institutionsCount) and a Value

  • institutional_holders — Institutional investors; records typically include fields such as Date Reported, Holder, Shares, Value, pctChange, pctHeld

  • mutualfund_holders — Mutual fund holders; records typically include fields similar to institutional holders

  • insider_transactions — Recent insider trades; records typically include fields such as Shares, Value, Insider, Position, Transaction, Start Date, Ownership

  • insider_purchases — Six-month summary where each row describes a category (Purchases, Sales, Net Shares, etc.); records typically include fields such as Insider Purchases Last 6m, Shares, Trans

  • insider_roster — Known insiders; records typically include fields such as Name, Position, Shares Owned Directly, Most Recent Transaction, Latest Transaction Date

  • _metadata — Row limit metadata with max_rows and per-section total_rows, returned_rows, and truncated

Holder sections are limited to 10 rows by default to keep responses concise. Pass max_rows: 0 when you need the complete holder datasets. Field names for holder-related datasets are provided by yfinance and may vary by ticker, data availability, and yfinance version.

yfinance_get_fund_data

Fetch ETF or mutual-fund portfolio composition and operating details.

Parameter

Type

Required

Description

symbol

string

Yes

ETF or mutual-fund ticker symbol (for example SPY, BND, or VFIAX)

sections

array

No

Any of description, fund_overview, fund_operations, asset_classes, top_holdings, equity_holdings, bond_holdings, bond_ratings, or sector_weightings. Omit for all sections

max_rows

number

No

Maximum rows per tabular section. Default: 25. Use 0 for all rows

Returns: Available fund sections plus _metadata with row limits, per-section truncation, unavailable sections, and failed sections. The mix of sections depends on the fund; for example, equity funds and bond funds expose different portfolio breakdowns.

yfinance_get_option_dates

Fetch available option expiration dates for a stock.

Parameter

Type

Required

Description

symbol

string

Yes

Stock ticker symbol (e.g. AAPL, MSFT)

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

yfinance_get_option_chain

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

Parameter

Type

Required

Description

symbol

string

Yes

Stock ticker symbol

expiration_date

string

No

Option expiration date in YYYY-MM-DD format. Omit to fetch all dates.

option_type

string

No

"calls", "puts", or "all" (default: "all")

Returns: JSON object keyed by expiration date, with calls and/or puts data including:

  • contractSymbol: Option contract identifier

  • strike: Strike price

  • lastPrice: Last traded price

  • bid/ask: Bid and ask prices

  • volume: Trading volume

  • openInterest: Open interest

  • impliedVolatility: IV

  • inTheMoney: Whether option is ITM

  • contractSize: Contract size (REGULAR)

  • currency: Currency (USD)

Usage

  1. Install uv

  2. Add the following to your MCP client configuration:

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

Via Docker

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

From Source

  1. Clone the repository and install dependencies:

git clone https://github.com/narumiruna/yfinance-mcp.git
cd yfinance-mcp
uv sync
  1. Add the following to your MCP client configuration:

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

Replace /path/to/yfinance-mcp with the actual path to your cloned repository.

Testing with Codex CLI

This repository includes .codex/config.toml, which registers the local yfmcp MCP server for Codex CLI using uv run yfmcp. After cloning the repository and running uv sync, open Codex CLI from the repository root and try prompts such as:

Show VOO ticker info
Show VOO price history for the last 5 days
Find the ticker symbol for Toyota
Get AAPL option expiration dates

Development

Prerequisites

  • Python ≥ 3.12

  • uv package manager

Setup

uv sync --extra dev

Lint & Format

uv run ruff check .
uv run ruff format .

Type Check

uv run ty check src tests

Test

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

Demo Chatbot

See the demo chatbot in its dedicated repository: yfinance-mcp-demo

Contributors

Made with contrib.rocks.

License

This project is licensed under the MIT License.

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. Dates show when Glama detected each change.

  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

A3.9/5.0

Scored across 13 tools

Disambiguation4/5

Each tool covers a distinct data domain (financials, quotes, analyst actions, news, search, screeners, price history, options, holders). The only potential overlap is between the generic screener and the specialized gapper/top tools, but their descriptions clearly differentiate their purposes.

Naming Consistency4/5

All tools share the yfinance_ prefix and mostly follow a verb_noun structure (e.g., get_financials, get_ticker_info). A few tools like search, screen, and screen_gappers deviate from the 'get_' pattern, creating minor inconsistency, but the overall naming remains predictable and readable.

Tool Count5/5

With 13 tools, the server is well-scoped for a comprehensive financial data API. Each tool serves a meaningful purpose, and the count is within the ideal range, avoiding both bloat and thinness.

Completeness5/5

The toolset covers major Yahoo Finance data categories including fundamentals, quotes, analyst targets, upgrades/downgrades, news, search, screeners, price history, options, and holders. This is a comprehensive surface for the stated domain with no obvious dead ends.

Maintenance

ActivityActive
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

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

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/narumiruna/yfinance-mcp'

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