Skip to main content
Glama
benethos-hub

Yahoo Finance MCP Server

by benethos-hub

Unofficial Yahoo Finance MCP Server

CI PyPI Container Python Coverage License

An MCP server that exposes Yahoo Finance data to MCP clients (such as Claude Desktop). It runs over stdio (default, for local clients) or an HTTP transport (for standalone / containerized hosting). Market data is sourced through the yfinance library, which uses Yahoo's unofficial endpoints.

Disclaimer

  • This project is not affiliated with, endorsed by, or sponsored by Yahoo. "Yahoo" and "Yahoo Finance" are trademarks of their respective owners.

  • It relies on unofficial Yahoo Finance endpoints via yfinance. Those endpoints can change or break at any time, and Yahoo may rate limit or block requests. Review Yahoo's Terms of Service before use.

  • Data may be delayed, incomplete, or inaccurate. Nothing here is financial advice. Do not rely on it for trading or investment decisions.

  • Provided "as is", without warranty. Intended for personal and educational use. You use it at your own risk. See LICENSE.

  • For commercial use, review Yahoo's Terms of Service and consider a properly licensed market-data provider instead of the unofficial endpoints.

Tools

Tool

Description

search

Find instruments by name, ticker, or ISIN, returning Yahoo symbols.

get_quote

Current price and key intraday figures for a symbol.

get_quotes

Compact current quotes for several symbols at once (per-symbol not-found list).

get_history

Historical OHLCV data (period/interval or explicit date range).

get_company_info

Company profile and key statistics (sector, market cap, P/E, …).

get_financials

Income statement, balance sheet, or cash flow (annual/quarterly/ttm).

get_dividends

Dividend and stock-split history.

get_news

Recent news headlines (title, summary, publisher, URL).

get_recommendations

Analyst recommendation trend and price targets.

get_options

Option expiration dates and the calls/puts chain for a date.

get_earnings

Upcoming and historical earnings (EPS estimate/actual, surprise).

get_estimates

Forward analyst estimates (earnings, revenue, EPS trend/revisions, growth).

get_upgrades_downgrades

Recent analyst rating changes (upgrades/downgrades).

get_holders

Ownership breakdown (insider/institutional %, top institutional and mutual-fund holders).

get_insider_activity

Insider transactions, 6-month purchases/sales summary, and current roster.

get_sec_filings

Recent SEC filings (type, date, title, EDGAR/exhibit links).

get_calendar

Upcoming earnings and dividend / ex-dividend dates with estimate ranges.

get_shares

Shares-outstanding history (date → shares).

get_fund_data

Fund/ETF profile: overview, asset-class & sector weightings, top holdings.

get_sector

Browse a market sector by key: overview, top companies/ETFs/funds, industries.

get_industry

Browse an industry by key: overview, parent sector, top/top-performing/top-growth companies.

get_market

Trading status and headline index summary for a market (US, EUROPE, ASIA, …).

Most get_* tools take a Yahoo Finance symbol — either a ticker (AAPL, SAP.DE) or a plain ISIN. Use search to turn a company name into one. Three tools are exceptions: get_sector and get_industry take a sector or industry key (e.g. technology, semiconductors), and get_market takes a market key (e.g. US).

basic-materials (14) agricultural-inputs, aluminum, building-materials, chemicals, coking-coal, copper, gold, lumber-wood-production, other-industrial-metals-mining, other-precious-metals-mining, paper-paper-products, silver, specialty-chemicals, steel

communication-services (7) advertising-agencies, broadcasting, electronic-gaming-multimedia, entertainment, internet-content-information, publishing, telecom-services

consumer-cyclical (23) apparel-manufacturing, apparel-retail, auto-manufacturers, auto-parts, auto-truck-dealerships, department-stores, footwear-accessories, furnishings-fixtures-appliances, gambling, home-improvement-retail, internet-retail, leisure, lodging, luxury-goods, packaging-containers, personal-services, recreational-vehicles, residential-construction, resorts-casinos, restaurants, specialty-retail, textile-manufacturing, travel-services

consumer-defensive (12) beverages—brewers, beverages—non-alcoholic, beverages—wineries-distilleries, confectioners, discount-stores, education-training-services, farm-products, food-distribution, grocery-stores, household-personal-products, packaged-foods, tobacco

energy (8) oil-gas-drilling, oil-gas-e&p, oil-gas-equipment-services, oil-gas-integrated, oil-gas-midstream, oil-gas-refining-marketing, thermal-coal, uranium

financial-services (15) asset-management, banks—diversified, banks—regional, capital-markets, credit-services, financial-conglomerates, financial-data-stock-exchanges, insurance-brokers, insurance—diversified, insurance—life, insurance—property-casualty, insurance—reinsurance, insurance—specialty, mortgage-finance, shell-companies

healthcare (11) biotechnology, diagnostics-research, drug-manufacturers—general, drug-manufacturers—specialty-generic, health-information-services, healthcare-plans, medical-care-facilities, medical-devices, medical-distribution, medical-instruments-supplies, pharmaceutical-retailers

industrials (25) aerospace-defense, airlines, airports-air-services, building-products-equipment, business-equipment-supplies, conglomerates, consulting-services, electrical-equipment-parts, engineering-construction, farm-heavy-construction-machinery, industrial-distribution, infrastructure-operations, integrated-freight-logistics, marine-shipping, metal-fabrication, pollution-treatment-controls, railroads, rental-leasing-services, security-protection-services, specialty-business-services, specialty-industrial-machinery, staffing-employment-services, tools-accessories, trucking, waste-management

real-estate (12) real-estate-services, real-estate—development, real-estate—diversified, reit—diversified, reit—healthcare-facilities, reit—hotel-motel, reit—industrial, reit—mortgage, reit—office, reit—residential, reit—retail, reit—specialty

technology (12) communication-equipment, computer-hardware, consumer-electronics, electronic-components, electronics-computer-distribution, information-technology-services, scientific-technical-instruments, semiconductor-equipment-materials, semiconductors, software—application, software—infrastructure, solar

utilities (6) utilities—diversified, utilities—independent-power-producers, utilities—regulated-electric, utilities—regulated-gas, utilities—regulated-water, utilities—renewable

Related MCP server: YFinance MCP Server

Compatible clients

MCP is an open protocol, so this server is not tied to one application. Every MCP client can use it. What differs is only which transport the client speaks, and that decides how you start the server.

Locally, over stdio. The client launches the server as a subprocess and talks to it over stdin and stdout. This is the default transport and needs no network. Claude Desktop, Claude Code, Cursor, VS Code (Copilot agent mode), Zed, Windsurf, the JetBrains AI assistants, Cline, Roo Code, Continue and Goose all work this way. The configuration file differs per client, but the command is always the one shown under Quick start:

{ "command": "uvx", "args": ["benethos-yahoo-finance-mcp"] }

Over the network, streamable-HTTP. The server runs once and clients connect to http://<host>:8000/mcp. Start it with --transport streamable-http, or use the Docker image, which serves this transport by default. Browser-based and multi-user front ends need it — Open WebUI supports MCP natively over streamable-HTTP and over no other transport, because a shared web front end cannot hold one stdio process per user. LibreChat and Windsurf accept it alongside stdio.

Over the network, SSE. The older HTTP transport, still expected by some clients. Start it with --transport sse and point the client at http://<host>:8000/sse. The MCP Client Tool node in n8n connects this way.

Both HTTP transports ship without authentication of their own. Read the note under Running as a standalone server before exposing either one.

Not listed? Client support moves quickly. Check which transport yours speaks, then use the matching command above — the transports are stable even when the list of names is not.

Requirements

  • uv (recommended) — manages Python, the virtual environment, and dependencies in one tool.

  • Or, without uv: Python 3.11+ with pip / venv.

  • git is only needed for the optional install-from-source method.

Installation

Quick start: uv + Claude Desktop

The simplest way to run the server — no clone, no manual virtual environment, no git. uvx fetches and runs it on demand from PyPI (published as benethos-yahoo-finance-mcp).

  1. Install uv, if you have not already — the uv installation page covers every platform. It brings uvx, and that is the only thing needed here.

  2. Add the server to claude_desktop_config.json (Claude Desktop → Settings → Developer → Edit Config):

    {
      "mcpServers": {
        "benethos-yahoo-finance-mcp": {
          "command": "uvx",
          "args": ["benethos-yahoo-finance-mcp"]
        }
      }
    }

    Pin a version for stability with benethos-yahoo-finance-mcp==0.5.1. To enable the optional result cache, add an env block, e.g. "env": { "YF_MCP_CACHE": "1" } (see Caching).

  3. Restart Claude Desktop (quit from the tray, not just close the window). The tools then appear in the client.

Installing from source instead? You can run the unreleased main branch with uvx --from "git+https://github.com/benethos-hub/yahoo-finance-mcp.git" benethos-yahoo-finance-mcp. That path needs git on the PATH of the process the client spawns — some GUI clients don't pass a full PATH, so prefer the PyPI install above.

uvx must be on the PATH the client uses. After installing uv, fully restart the app — or use the absolute path to uvx as command. The first launch downloads the package and its dependencies, so it takes a moment. Later launches use the cache.

Other ways to install

From PyPI with pip (no uv, no clone). Install the published package into a virtual environment and run it as a module. The only platform difference is the venv interpreter path: Windows uses .venv\Scripts\python.exe, Linux/macOS use .venv/bin/python.

# Windows (PowerShell)
py -m venv .venv
.\.venv\Scripts\python.exe -m pip install benethos-yahoo-finance-mcp
# Linux / macOS (bash)
python3 -m venv .venv
.venv/bin/python -m pip install benethos-yahoo-finance-mcp

Point Claude Desktop at the absolute path of the venv interpreter and run the module (no generated console script involved):

{
  "mcpServers": {
    "benethos-yahoo-finance-mcp": {
      "command": "/abs/path/to/.venv/bin/python",
      "args": ["-m", "benethos_yahoo_finance_mcp"]
    }
  }
}

(On Windows use C:\\abs\\path\\to\\.venv\\Scripts\\python.exe as command.)

From source with uv (for development or local changes):

git clone https://github.com/benethos-hub/yahoo-finance-mcp.git
cd yahoo-finance-mcp
uv sync --extra dev          # creates .venv + installs deps from uv.lock
uv run benethos-yahoo-finance-mcp     # run over stdio

Point Claude Desktop at the checkout:

{
  "mcpServers": {
    "benethos-yahoo-finance-mcp": {
      "command": "uv",
      "args": ["run", "--project", "/abs/path/to/yahoo-finance-mcp", "benethos-yahoo-finance-mcp"]
    }
  }
}

From source with venv + pip (no uv). The only platform difference is the venv interpreter path: Windows uses .venv\Scripts\python.exe, Linux/macOS use .venv/bin/python.

# Windows (PowerShell)
py -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e .
# Linux / macOS (bash)
python3 -m venv .venv
.venv/bin/python -m pip install -e .

Claude Desktop config uses the absolute path to the venv interpreter:

{
  "mcpServers": {
    "benethos-yahoo-finance-mcp": {
      "command": "/abs/path/to/.venv/bin/python",
      "args": ["-m", "benethos_yahoo_finance_mcp"]
    }
  }
}

(On Windows use C:\\abs\\path\\to\\.venv\\Scripts\\python.exe as command.)

Running as a standalone server

For use outside Claude Desktop — a network-reachable HTTP service — run an HTTP transport (streamable-http or sse). Docker is the simplest way.

Every option has both a CLI flag and an environment variable (handy for containers), with one deliberate exception noted below. Precedence is CLI > environment > default (--help lists the flags):

Flag

Env var

Default

Description

--version

Print the version and exit. Same value the server reports in the MCP handshake.

--transport

YF_MCP_TRANSPORT

stdio

stdio, streamable-http, or sse.

--host

YF_MCP_HOST

127.0.0.1

Bind host for HTTP transports (0.0.0.0 for remote).

--port

YF_MCP_PORT

8000

Port for HTTP transports.

--path

YF_MCP_PATH

/mcp (/sse for sse)

URL path for HTTP transports.

(none)

YF_MCP_BEARER_TOKEN

unset

Require this bearer token on every HTTP request. Environment only, deliberately: an argument is visible in the process list.

--allowed-hosts

YF_MCP_ALLOWED_HOSTS

see below

Comma-separated Host header allow-list for the DNS-rebinding guard.

--allowed-origins

YF_MCP_ALLOWED_ORIGINS

derived from hosts

Comma-separated Origin header allow-list.

--log-level

YF_MCP_LOG_LEVEL

INFO

DEBUG/INFO/WARNING/ERROR/CRITICAL.

--cache / --no-cache

YF_MCP_CACHE

off

Enable/disable the persistent result cache.

--cache-dir

YF_MCP_CACHE_DIR

OS cache dir

Directory for the cache file.

--cache-ttl <NAME>=<SECONDS>

YF_MCP_CACHE_TTL_<NAME>

per-tool defaults

Override one tool's TTL.

Logging always goes to stderr, so under stdio stdout stays reserved for the JSON-RPC protocol.

Bearer token (optional). Set YF_MCP_BEARER_TOKEN and every HTTP request must carry Authorization: Bearer <token>. Anything else gets HTTP 401. It is off by default, because the ordinary case is a server on the loopback address of the machine that uses it, where a token guards against nothing. It is a single shared secret compared in constant time, not an OAuth flow — the question is only whether the caller is expected. stdio ignores it: the client owns that process and nothing else can reach it.

A token does not make a port safe to publish. The data here is public and read-only, so the realistic damage is somebody spending your Yahoo rate limit, not reading something private. Beyond a trusted network, put a reverse proxy with real authentication in front.

Host header / DNS-rebinding guard. The MCP HTTP transport validates the Host header. A localhost bind keeps a protective allow-list (localhost/127.0.0.1). An exposed bind (0.0.0.0) accepts any Host by default, so containers and other hosts can reach it out of the box. To lock it down again, set --allowed-hosts (e.g. benethos-yahoo-finance-mcp:8000) — clients whose Host is not on the list then get HTTP 421.

Docker

The published image is the shortest path to a running server — no Python, no clone, no build. Every release is pushed to the GitHub Container Registry for linux/amd64 and linux/arm64:

docker run --rm -p 8000:8000 ghcr.io/benethos-hub/yahoo-finance-mcp:latest
# Server is now reachable at http://localhost:8000/mcp

Pin a version for anything you depend on — :0.5.1 for an exact release, :0.5 to follow its patch releases. :latest moves with every release, and :edge is built from main on demand and is not a release at all.

The image hosts the server over the streamable-HTTP transport. The stdio transport is for local subprocess use and is not what you containerize. Dependencies are installed reproducibly from uv.lock via uv.

The image is configured entirely through environment variables (see the options table above) — it carries no default command arguments, so overriding a single setting with -e does not disturb the others.

# Build it yourself instead of pulling (e.g. to run an unreleased main)
docker build -t benethos-yahoo-finance-mcp .

# Run with the built-in defaults (streamable-HTTP on 0.0.0.0:8000)
docker run --rm -p 8000:8000 benethos-yahoo-finance-mcp
# Server is now reachable at http://localhost:8000/mcp

# Override settings via -e, opt into the cache and persist it in a named volume
docker run --rm -p 9000:9000 \
    -e YF_MCP_PORT=9000 \
    -e YF_MCP_LOG_LEVEL=DEBUG \
    -e YF_MCP_CACHE=1 \
    -v benethos-yahoo-finance-mcp-cache:/cache \
    benethos-yahoo-finance-mcp

The image runs as a non-root user and includes a healthcheck on the configured HTTP port. The cache is off by default. Enable it with -e YF_MCP_CACHE=1, in which case it is written to /cache (declared as a volume) — mount a named volume there to keep it across container restarts. Pass -e YF_MCP_BEARER_TOKEN=... to require a bearer token on every request. Beyond a trusted network, front it with a reverse proxy that authenticates.

Docker Compose

A compose.yaml is provided (settings under environment:, cache in a named volume). As shipped it builds from this checkout, which is what you want while developing and the only way to run an unreleased main. To operate the released server instead, swap two commented lines at the top of the service so it pulls ghcr.io/benethos-hub/yahoo-finance-mcp — the file is then all you need, with no clone and no Dockerfile. The choice and the pull_policy values are documented in the file itself.

docker compose up -d      # build (if needed) and start in the background
docker compose logs -f    # follow logs
docker compose down       # stop and remove

This requires Docker Compose v2 (the compose CLI plugin). The server is then reachable at http://localhost:8000/mcp.

The port is published on 127.0.0.1 only, so the service is reachable from the host but not from the rest of the network. That is deliberate, since the server has no authentication of its own. To expose it, remove the 127.0.0.1: prefix from the ports: entry in compose.yaml — and put a reverse proxy with authentication in front of it.

Manual (uv or venv)

With uv (any OS):

# Streamable HTTP on http://127.0.0.1:8000/mcp
uv run benethos-yahoo-finance-mcp --transport streamable-http

# Bind all interfaces on a custom port / path
uv run benethos-yahoo-finance-mcp \
    --transport streamable-http --host 0.0.0.0 --port 9000 --path /yf

With the venv interpreter directly (Windows: .venv\Scripts\python.exe):

.venv/bin/python -m benethos_yahoo_finance_mcp --transport streamable-http

Example prompts

Once the server is connected, ask the client in plain language and it will pick the tools. Replace the bracketed placeholders with concrete values.

Price & quote

  • "What's the current price of [Ticker], and how far is it from its 52-week high?"

  • "Is [Ticker] trading above or below its 50- and 200-day moving averages?"

  • "Get the daily closes of [Ticker] for the last 6 months and compute RSI and MACD."

  • "What was the deepest drawdown of [Ticker] in the last 12 months?"

  • "Compare [Ticker A] and [Ticker B] over the last 3 months and show which held up better."

  • "Get current quotes for [Ticker A], [Ticker B] and [Ticker C] and compare them in a table."

Company & valuation

  • "Give me P/E, beta, market cap and dividend yield for [Ticker]."

  • "What does [Company name] actually do, and which sector and industry is it in?"

  • "Show the last three annual income statements for [Ticker] and how revenue developed."

  • "How has [Ticker]'s share count changed over the past years, and does that mean buybacks or dilution?"

Analysts & news

  • "What's the analyst consensus for [Ticker], and how far is the average price target from the current price?"

  • "Any upgrades or downgrades for [Ticker] in the last few weeks?"

  • "What are the forward revenue and EPS estimates for [Ticker], and how were they revised recently?"

  • "Summarize the recent news on [Ticker]."

Earnings & calendar

  • "When does [Ticker] report next, and what EPS is expected?"

  • "How did [Ticker] do against estimates in the last few quarters?"

  • "When are [Ticker]'s next earnings and ex-dividend dates?"

Dividends

  • "Show [Ticker]'s dividends over the last ten years and the current yield."

  • "Has [Ticker] cut its dividend in the last 20 years, and did it split the stock?"

Ownership & insiders

  • "Who are the largest institutional holders of [Ticker]?"

  • "What share of [Ticker] is held by insiders versus institutions?"

  • "Has there been notable insider buying or selling in [Ticker] recently?"

Funds & ETFs

  • "What are the top holdings and sector weightings of the ETF [Ticker]?"

  • "What's the asset-class split of [ETF Ticker], and which fund family runs it?"

Filings

  • "Show the most recent SEC filings for [US Ticker] with links."

Options

  • "Which option expiration dates are available for [US Ticker]?"

  • "Show the calls and puts for [US Ticker] expiring [Date]."

Sectors & markets

  • "What are the top companies and industries in the technology sector?"

  • "Show the top-performing companies in the semiconductors industry."

  • "Is the US market open right now, and when does it open next?"

  • "How did the major indices in Europe and Asia close?"

Finding a symbol

  • "Which Yahoo ticker belongs to [Company name] on [Exchange]?"

  • "Resolve the ISIN [ISIN] to a Yahoo ticker."

A daily round-up

  • "For [Ticker A], [Ticker B] and [Ticker C]: pull quote, six months of history, company info and analyst recommendations, then give me a short picture of each."

The server computes nothing itself. It passes through what Yahoo returns, which already includes derived figures such as moving averages, P/E, beta and dividend yield. Anything Yahoo does not carry — RSI, MACD, drawdown, sentiment, total return — the model works out from the raw series.

Symbol resolution

All get_* tools expect a Yahoo Finance symbol. Both a ticker (AAPL, SAP.DE) and a plain ISIN (US0378331005) work, since Yahoo resolves ISINs server-side. The server passes whatever it is given straight through and never rewrites it.

To turn a company name into a symbol, call search first — the same Yahoo search endpoint handles free text, tickers, and ISINs. A ticker is preferable to an ISIN in any case, because the symbol reported back then stays consistent across tools.

Two caveats. That ISINs work is observed behaviour of an unofficial endpoint, not a guarantee: it did not work in earlier versions and it may stop again. And German WKNs resolve nowhere, not through the tools and not through search — Yahoo has no lookup for them, so ask for a ticker, an ISIN or the company name instead.

Caching

An opt-in persistent cache. When enabled, successful tool results are cached in a small SQLite file with a per-tool time-to-live (TTL) to reduce load on Yahoo's endpoints and survive restarts. Fast-moving data has a short TTL, stable data a long one.

Within a single running process yfinance already reuses identical requests, so the cache mainly helps across restarts and as rate-limit protection — that is why it is off by default.

Cache names (used for --cache-ttl <NAME>=<SECONDS> and YF_MCP_CACHE_TTL_<NAME>) and their default TTLs:

Name

Tool

Default TTL

quote

get_quote

30 s

quotes

get_quotes

30 s

history

get_history

10 min

news

get_news

10 min

options

get_options

10 min

search

search

1 h

company_info

get_company_info

6 h

dividends

get_dividends

6 h

recommendations

get_recommendations

6 h

earnings

get_earnings

6 h

estimates

get_estimates

6 h

upgrades_downgrades

get_upgrades_downgrades

6 h

insider_activity

get_insider_activity

6 h

sec_filings

get_sec_filings

6 h

calendar

get_calendar

6 h

financials

get_financials

24 h

holders

get_holders

24 h

shares

get_shares

24 h

fund_data

get_fund_data

24 h

sector

get_sector

24 h

industry

get_industry

24 h

market

get_market

60 s

  • Off by default. Enable with --cache or YF_MCP_CACHE=1.

  • Location: the OS user cache directory, or --cache-dir / YF_MCP_CACHE_DIR.

  • Override a TTL: --cache-ttl quote=15 (repeatable) or the YF_MCP_CACHE_TTL_<NAME> env var (e.g. YF_MCP_CACHE_TTL_QUOTE=15). Set a TTL to 0 to bypass caching for that tool.

Precedence is CLI > environment > default. Errors are never cached.

When to enable it

Enable the cache (--cache / YF_MCP_CACHE=1) if you:

  • run the server as a long-running or containerized HTTP service that restarts periodically (the cache survives restarts → instant repeat results).

  • hit Yahoo rate limits or make many repeated identical requests over time.

  • mostly query slow-changing data (search, company info, financials), where staleness is irrelevant.

Leave it off (the default) if you:

  • run it locally over stdio for interactive sessions — yfinance already reuses identical requests within a single process, so the cache adds little.

  • need the freshest possible data.

  • use it only occasionally.

Development

Install the dev extras, then run the test, lint, and type-check steps (the same ones CI runs).

With uv (any OS):

uv sync --extra dev

uv run pytest -q                 # unit tests (offline)
uv run ruff check .              # lint
uv run ruff format .             # format
uv run mypy                      # type check
uv run pytest --cov=benethos_yahoo_finance_mcp   # coverage

With the venv interpreter directly (replace .venv/bin/python with .venv\Scripts\python.exe on Windows):

.venv/bin/python -m pip install -e ".[dev]"

.venv/bin/python -m pytest -q                 # unit tests (offline)
.venv/bin/python -m ruff check .              # lint
.venv/bin/python -m ruff format .             # format
.venv/bin/python -m mypy                      # type check
.venv/bin/python -m pytest --cov=benethos_yahoo_finance_mcp   # coverage

The unit tests mock yfinance and run fully offline. tests/smoke.py performs an ad-hoc check against live Yahoo Finance and is not part of the unit suite. CI also runs across Python 3.11–3.14 and enforces an 80% coverage floor.

Trademarks

"Yahoo" and "Yahoo Finance" are trademarks of Yahoo Inc. This project is not affiliated with, endorsed by, or sponsored by Yahoo, and it is not an official Yahoo product.

The names are used here only to describe what the software does, namely read market data from Yahoo Finance through the yfinance library. That is the only accurate way to say it. All trademarks remain the property of their respective owners.

The project itself is published as benethos-yahoo-finance-mcp and is maintained independently under the MIT licence.

Available Tools

22 tools
get_calendarA

Get upcoming corporate-calendar events for a Yahoo symbol.

Returns the next earnings date(s) with analyst estimate ranges and the next dividend / ex-dividend dates. Equity-only, empty for ETFs, funds, and crypto.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesA Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description fully bears the transparency burden. It discloses the output contents (earnings estimates, dividend dates), the type of securities applicable (equity-only), and the behavior for unsupported types (returns empty for ETFs, funds, crypto). This is adequate but could be improved by explicitly stating read-only nature or whether pagination applies.

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 three concise sentences, each providing essential information: purpose, returned data, and limitations. No redundant or filler content. The most critical information is front-loaded in the first sentence.

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 (not shown but indicated), the description need not detail return fields. It covers the major data types (earnings, dividends) and constraints. However, it could specify whether multiple future events are returned beyond 'next' and whether the time range is configurable, but overall it is sufficiently complete for a focused tool.

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 single parameter 'symbol' is fully documented in the input schema with a clear description. The description adds no additional meaning beyond the schema, as it simply repeats the function's context. With 100% schema coverage, the baseline is 3, and the description does not exceed that.

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 corporate-calendar events (earnings and dividends) for a Yahoo symbol. It distinguishes itself from siblings by specifying the scope: 'Returns the next earnings date(s) with analyst estimate ranges and the next dividend / ex-dividend dates.' The constraint 'equity-only, empty for ETFs, funds, and crypto' further clarifies the tool's specific domain, making its purpose unique among many similar tools.

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 clear context on what the tool returns (earnings estimates and dividend dates) and its limitation (equity-only). However, it does not explicitly guide when to use this tool over closely related siblings like `get_earnings` or `get_dividends`, nor does it state when not to use it. A brief mention of alternatives would elevate the score.

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

get_company_infoB

Get a company profile and key statistics for a Yahoo symbol.

Returns name, sector/industry, location, employee count, and valuation metrics (market cap, P/E, beta, 52-week range, dividend yield) plus a business summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesA Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It states the tool returns specific data fields, which is helpful, but it does not disclose any side effects, authentication requirements, rate limits, or whether the data is cached or fresh. For a data retrieval tool, this is a notable gap.

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 relatively concise at two sentences, front-loading the key purpose. The bullet points in the second sentence are clear, though they could be slightly more concise. Every sentence adds value, but the first sentence could be merged with the second.

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

Completeness4/5

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

Given that an output schema exists, the description does not need to document return values in detail. The tool is simple (one parameter, no nested objects), and the description covers the core purpose and data types. However, missing behavioral transparency (e.g., data staleness) slightly reduces completeness.

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 schema coverage is 100% (one parameter), and the schema description already states it expects a Yahoo ticker or ISIN, with a note about using 'search' for names. The description does not add additional meaning beyond what the schema 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.

Purpose4/5

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

The description clearly states that the tool retrieves a company profile and key statistics for a Yahoo symbol. It lists specific data fields (name, sector, valuation metrics, business summary), which distinguishes it from siblings like get_quote (pricing focus) or get_financials (financial statements). However, it does not explicitly differentiate it from get_company_info or note that other siblings like get_holders or get_insider_activity might overlap in some data points.

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

Usage Guidelines3/5

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

The description implies usage when a company profile is needed, and the input schema explicitly mentions using 'search' first for company names. However, there is no guidance on when NOT to use this tool (e.g., when only quote data is needed, use get_quote) or which sibling tools are alternatives for overlapping data (e.g., valuation metrics might also be in get_quote).

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

get_dividendsB

Get the dividend and stock-split history for a Yahoo symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesA Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description bears the full burden of behavioral disclosure. It only states that the tool retrieves history, implying a read operation, but lacks details on pagination, time ranges, rate limits, or any side effects. The description is too minimal to adequately inform an agent about behavior.

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, front-loaded sentence of 10 words. It contains no unnecessary words or filler, and every word is essential to conveying the tool's purpose. Highly efficient.

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

Completeness3/5

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

Given the tool's simplicity (one parameter, output schema present), the description is adequate but not fully complete. It covers what the tool does and the input, but omits any behavioral context, usage tips, or constraints. The presence of an output schema mitigates the need for return-format details, but the description still feels thin.

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% coverage for the single parameter ('symbol'), which already includes a clear description and usage hint. The tool description itself does not add any additional information about the parameter, so it neither improves nor detracts from what the schema provides. 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 ('Get'), the resource ('dividend and stock-split history'), and the scope ('for a Yahoo symbol'). This is specific and distinguishes it from sibling tools like get_history (price history) or get_company_info (company profile).

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 vs. alternatives. The parameter description suggests using 'search' first for company names, but this is about input preparation, not tool selection. No explicit when/when-not or sibling comparisons are given.

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

get_earningsA

Get upcoming and historical earnings for a Yahoo symbol.

Returns the earnings calendar (upcoming and past dates with EPS estimate, reported EPS, and surprise %) plus the recent earnings history. Equity-only, empty for ETFs, funds, and crypto.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of earnings rows to return.
symbolYesA Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool returns earnings calendar and history, and behaves differently for non-equity instruments. However, it does not explicitly state whether the tool is read-only (though 'get' implies it) or mention any auth, rate limits, or side effects.

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 at three sentences, with the purpose front-loaded in the first sentence. Every sentence adds value: purpose, return details, and equity constraint. There is no redundancy or 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?

Given the tool has two parameters and an output schema, the description adequately covers the return values (earnings calendar and history) and the scope (equity-only). It could mention pagination or limitations of the limit parameter, but the schema already provides min/max. For its complexity, the description is nearly complete.

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

Parameters3/5

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

Schema coverage is 100%, so the parameters are already well-documented. The description adds no additional meaning beyond what the schema provides (e.g., it does not elaborate on 'limit' behavior or 'symbol' format). Baseline 3 is appropriate as the description does not subtract value but also does not enhance understanding.

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 'Get upcoming and historical earnings for a Yahoo symbol', specifying the verb ('get') and resource ('earnings'). It distinguishes from siblings by noting it is equity-only and empty for ETFs, funds, and crypto, though it does not explicitly differentiate from similar tools like get_financials or get_calendar.

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 usage context ('equity-only, empty for ETFs, funds, and crypto'), which helps the agent decide when to apply the tool. However, it lacks explicit guidance on when not to use it or alternatives to prefer, such as comparing with get_estimates or get_historical for dividends.

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

get_estimatesA

Get forward analyst estimates for a Yahoo symbol.

Returns earnings and revenue estimates, EPS trend and revisions, and growth estimates (small tables keyed by period). Equity-only, empty for ETFs, funds, and crypto.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesA Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description bears full responsibility for behavioral disclosure. It describes the output structure and notes the equity-only constraint, but does not mention aspects like read-only nature, rate limits, or authentication requirements. Basic transparency but lacking deeper behavioral context.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose, and every word contributes meaning. No redundant or filler content. Efficiently structured for quick comprehension.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, output schema present), the description covers the essential aspects: what the tool does, what it returns, and its limitations. It could be slightly more explicit about the forward-looking nature of estimates, but 'forward' sufficiently implies future periods. Overall, it provides adequate context for an agent to use the 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 schema already provides 100% coverage of the single parameter with a detailed description. The tool description does not add new information about the parameter; it repeats the schema text. Therefore, the description adds no value beyond the schema, earning a baseline score 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 states the tool retrieves forward analyst estimates and lists specific data returned (earnings/revenue estimates, EPS trend/revisions, growth estimates). It also specifies it is equity-only and returns empty for ETFs, funds, and crypto, which helps distinguish it from sibling tools like get_earnings or 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 Guidelines4/5

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

The description provides implicit usage context by noting the tool is equity-only and returns empty for non-equity instruments. The symbol parameter description guides users to use 'search' for company names. However, it does not explicitly compare this tool to siblings or state when to prefer alternatives.

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

get_financialsA

Get a financial statement for a Yahoo symbol.

statement is one of income (income statement), balance (balance sheet), or cashflow (cash flow statement). freq is annual, quarterly, or ttm (trailing twelve months, available for the income and cash-flow statements only). Each row is a line item and each column a reporting periods.

ParametersJSON Schema
NameRequiredDescriptionDefault
freqNoReporting frequency: 'annual', 'quarterly', or 'ttm' (trailing twelve months, income and cashflow only).annual
symbolYesA Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first.
statementNoWhich statement: 'income' (income statement), 'balance' (balance sheet), or 'cashflow' (cash flow).income

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool retrieves financial statements and explains the structure of the return data (rows/columns). It does not mention rate limits, authentication requirements, any side effects, or limits on symbol format beyond what the schema already states. This is adequate but not rich in behavioral context.

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

Conciseness5/5

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

The description is four sentences long, front-loaded with the core purpose, and every sentence provides necessary information (parameter options, output structure, constraints). There is no redundant or extraneous text.

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 has moderate complexity (3 params, 1 required, no nested objects) and an output schema exists. The description covers the purpose, all parameter choices, output structure, and the constraint that 'ttm' is limited to income and cashflow. It does not explain the output schema in detail, but that is provided separately. The description is sufficiently complete for an agent to select and invoke the 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?

Schema description coverage is 100% (all three parameters have detailed descriptions). The description adds context by reiterating that 'ttm' is for income and cashflow only and that each row is a line item, but these details are largely present in the schema descriptions. The description does not add meaning significantly beyond the schema, 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 starts with a specific verb-resource combination ('Get a financial statement for a Yahoo symbol') and then clearly enumerates the statement types (income, balance, cashflow) and frequencies (annual, quarterly, ttm). This makes the tool's purpose unambiguous and distinguishes it from sibling tools like get_quote or get_company_info.

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 explains the parameter options and the temporal scope of the output (each row a line item, each column a reporting period), which implies when to use it. However, it does not explicitly state when to choose this tool over siblings (e.g., get_company_info for summary data, get_quote for current price, get_history for historical prices). No exclusions or alternative suggestions are provided.

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

get_fund_dataA

Get fund/ETF profile data for a Yahoo symbol.

Returns the fund overview, asset-class and sector weightings, and the top holdings. Fund/ETF-only, raises for stocks and crypto, which have no fund data.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of top holdings to return.
symbolYesA Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description bears full transparency burden. It discloses return data (overview, weightings, holdings) and a key behavior (raises for stocks/crypto). It does not cover auth needs or rate limits, but for a read-like operation this is adequate.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, followed by return data and constraint. No unnecessary words. Every sentence earns its place.

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 simplicity (2 params, output schema exists), the description covers purpose, return data, and error condition. No gaps remain for effective use. The output schema handles return structure details, so description is complete.

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

Parameters3/5

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

Schema coverage is 100% and the schema descriptions for 'symbol' and 'limit' are already detailed with examples and constraints. The description adds overall context but not directly to parameter semantics beyond what the schema provides, so 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 the tool retrieves fund/ETF profile data for a Yahoo symbol, listing specific data types (overview, weightings, holdings). It explicitly notes it is fund/ETF-only and raises for stocks and crypto, which distinguishes it from siblings like get_company_info or get_quote.

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 clear context: use for fund/ETF symbols only, and raises for stocks/crypto. Although it does not name alternative tools, the exclusion is explicit, fulfilling a when-not directive. The agent can infer alternatives from sibling names.

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

get_historyA

Get historical OHLCV (open/high/low/close/volume) data for a symbol.

period accepts Yahoo values such as 1d, 5d, 1mo, 6mo, 1y, 5y, max. interval accepts e.g. 1m, 5m, 1h, 1d, 1wk, 1mo. Provide start (and optional end) as YYYY-MM-DD to query an explicit date range instead of period. Results are capped at the most recent 250 rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd date 'YYYY-MM-DD'. Used only together with 'start'.
startNoStart date 'YYYY-MM-DD'. Overrides 'period' when set.
periodNoLook-back window. One of: 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max. Ignored when 'start' is given.1mo
symbolYesA Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first.
intervalNoBar size. One of: 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo. Intraday intervals only cover recent dates.1d

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Since no annotations are provided, the description carries full burden. It discloses results are capped at 250 rows and that intraday intervals cover only recent dates, which is helpful. However, it omits other behavioral traits like rate limits, error handling, or authentication needs.

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

Conciseness5/5

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

The description is concise: one sentence for purpose, then bullet-like examples and a cap note. No redundant words, and key information is 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?

With 5 parameters, one required, and an output schema, the description covers essential usage: valid values for period/interval, date range alternatives, and row cap. It is sufficient for correct invocation, though more detail on symbol validation could help.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by providing example values for period and interval, explaining the start/end vs. period tradeoff, and clarifying that start overrides period. This enriches the schema's definitions.

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

Purpose5/5

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

The description clearly states the tool returns historical OHLCV data for a symbol, specifying the exact resource and operation. This distinguishes it from sibling tools like get_quote (current price) and get_fund_data (fundamental data).

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

Usage Guidelines2/5

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

The description provides parameter examples but gives no explicit guidance on when to use this tool versus alternatives like get_quote, get_fund_data, or search. An agent must infer usage context from tool names alone.

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

get_holdersA

Get the ownership breakdown for a Yahoo symbol.

Returns the high-level holder summary (insider/institutional percentages) plus the top institutional and mutual-fund holders. Equity-only, empty for ETFs, funds, and crypto.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of institutional/mutual-fund holders to return per list.
symbolYesA Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Since no annotations are provided, the description carries the full burden. It discloses that the tool is equity-only and returns empty for other asset types, which is a critical behavioral constraint. It also clarifies the output structure (high-level summary plus lists of holders). It does not mention rate limits, authentication requirements, or whether the data is cached, but for a read-only data retrieval tool, the provided information is sufficient.

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 at three sentences, with the most important information (what the tool does) front-loaded in the first sentence. Every sentence adds value: the second clarifies the output structure, and the third provides critical usage constraints. No wasted words.

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

Completeness4/5

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

Given the tool has 2 parameters (both well-documented in schema), an output schema (so return structure is documented elsewhere), and no annotations, the description provides enough context for an agent to use the tool correctly. It covers purpose, inputs, and behavioral constraints. Minor gap: it doesn't mention that the symbol is required, but the schema already specifies that.

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 schema already provides 100% coverage with descriptions for both parameters. The description adds minimal extra value beyond clarifying that the 'limit' applies per list (institutional and mutual-fund holders) and that the 'symbol' can be a ticker or ISIN. Since the schema does the heavy lifting, a baseline 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 verb 'Get' and the resource 'ownership breakdown for a Yahoo symbol'. It also specifies the scope: high-level holder summary (insider/institutional percentages) plus top institutional and mutual-fund holders. It distinguishes itself from related tools like 'get_insider_activity' or 'get_shares' by focusing on ownership breakdown rather than raw insider transactions or share counts.

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 clear context for when to use this tool: for equity symbols only, and explicitly states that it returns empty for ETFs, funds, and crypto. It does not, however, explicitly mention when not to use it or suggest alternatives for non-equity instruments, leaving a minor gap.

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

get_industryA

Browse an industry by its Yahoo key (not a ticker symbol).

Returns the industry overview, its parent sector, top companies, and the top-performing and top-growth companies. Discover valid industry keys from the industries list returned by get_sector. This takes an industry key like semiconductors — not a ticker symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesA Yahoo industry key (lowercase, hyphenated), e.g. 'semiconductors' or 'software-infrastructure'. Discover valid keys from the 'industries' list returned by get_sector.
limitNoMaximum number of top companies to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of transparency. It discloses the key inputs, the non-ticker requirement, and the structure of the return value (overview, sector, top companies, top-performing/growth). This is valuable behavioral context. It does not mention rate limits or error conditions, but for a read-only browse tool, the disclosed information is sufficient.

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

Conciseness5/5

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

The description is concise, with three sentences that each add distinct value: what it returns, how to find valid keys, and the critical distinction from tickers. It is front-loaded with the main purpose, and there is no fluff or repetition of schema details.

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 that an output schema is present (so return values are fully defined) and annotations are absent, the description provides all essential context for correct tool selection and invocation: purpose, key source, and input constraints. It is complete for a browse tool of this complexity.

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

Parameters4/5

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

Schema coverage is 100% for both parameters, so the schema already documents key and limit thoroughly. The description adds semantic clarity by reinforcing that 'key' is an industry key (not a ticker) and by giving concrete examples like 'semiconductors'. This extra disambiguation goes beyond the schema's literal parameter descriptions, warranting a score above 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 states a specific verb ('Browse') with a specific resource ('an industry by its Yahoo key'), and clearly distinguishes from ticker-based tools by emphasizing 'not a ticker symbol'. It also names the output contents (industry overview, parent sector, top companies, top performers), making the tool's role unambiguous and differentiated from siblings like get_sector.

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 clearly indicates when to use the tool: when you have a Yahoo industry key, and it tells how to obtain valid keys via get_sector. It also explicitly warns against using a ticker symbol, which helps prevent misuse. It does not explicitly list alternative tools for similar tasks, but the context strongly implies the appropriate use case.

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

get_insider_activityA

Get insider trading activity for a Yahoo symbol.

Returns individual insider transactions, a 6-month purchases/sales summary, and the current insider roster. Equity-only, empty for ETFs, funds, and crypto.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of insider transactions/roster rows to return.
symbolYesA Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Since no annotations are provided, the description carries full burden. It correctly discloses that the tool is equity-only and empty for other types. This is important behavioral info. It does not reveal auth needs or rate limits, but being a read tool that likely mirrors public data, the risk is lower.

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 three sentences, no wasted words. Front-loaded with the primary purpose, followed by details on return structure, and ending with a clear constraint. Every sentence earns its place.

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

Completeness4/5

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

The tool has an output schema, so return values need not be described in the description. With 2 well-documented params and clear domain-specific constraints, the description is complete enough for an agent to use correctly. Could mention that 'limit' applies to both transactions and roster rows, but that's minor.

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%, so baseline is 3. The description does not add any parameter-level detail beyond what the schema already provides. It does not explain the meaning of 'limit' or 'symbol' further, but the schema descriptions are themselves clear and complete.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'insider trading activity for a Yahoo symbol', and distinguishes what it returns (individual transactions, summary, roster). It also explicitly states what it does not apply to (ETFs, funds, crypto), which further clarifies its scope.

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 implies when to use (for equity insider activity) and when not (for ETFs, funds, crypto). It does not explicitly name alternative tools for non-equity cases, but the sibling list is long and this tool's restriction is clear.

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

get_marketA

Get the trading status and headline index summary for a market.

Answers questions like whether the market is open, when it opens or closes next, and how the major indices are doing. Takes a market key such as US or EUROPE — not a ticker symbol. status (open/closed plus the next open and close times) is only available for US and is null for every other key, which is an upstream limitation rather than an error. The index summary, with price, previous close and change, works for all keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoA Yahoo market key (uppercase). One of: US, GB, ASIA, EUROPE, RATES, COMMODITIES, CURRENCIES, CRYPTOCURRENCIES. Only 'US' reports a trading status, the others return the index summary with 'status' set to null.US

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

The description provides key behavioral traits: the 'status' field behavior (open/closed/next times) is limited to the 'US' key due to upstream constraints. It clarifies that null status for other keys is not an error, setting correct expectations. Given no annotations exist, the description carries the full burden and handles it well, though it could detail other potential fields (e.g., change calculation).

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 (three sentences) and front-loads the main purpose before explaining detailed behavior. It avoids wasted words. However, it could be slightly more streamlined by moving the 'status null' explanation into the second sentence.

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 1 parameter, 100% schema coverage, and an output schema (not shown), the description adequately covers the purpose, input, and key behavioral nuance (status null for non-US). It is complete for a simple data retrieval tool, though it could hint at output structure (e.g., fields like price, previous close) since no output schema is visible in the evaluation context.

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%, and the schema already documents the 'key' parameter with allowed values and the status limitation. The description adds context about the purpose (e.g., answering market open/close questions) but does not add significant new meaning beyond the schema itself. 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 the tool retrieves trading status and headline index summary for a market, specifying it answers questions about market open/close times and index performance. It explicitly distinguishes the input as a market key (e.g., 'US', 'EUROPE') not a ticker symbol, which differentiates it from siblings like get_quote or get_history.

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

Usage Guidelines4/5

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

The description explains when to use this tool (for market-level status and index summary) and explicitly warns that 'status' is only available for 'US' and null for others due to upstream limitations. However, it does not explicitly state when to avoid this tool versus others (e.g., for individual stocks or detailed quotes), leaving some context implicit.

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

get_newsA

Get recent news headlines for a Yahoo symbol (up to limit, 1-30).

Each article includes title, summary, publisher, publish time, and URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of headlines to return.
symbolYesA Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations exist, so the description must disclose behavior. It states the tool returns recent headlines with a limit, but fails to mention potential rate limits, caching behavior, or whether it returns both articles and metadata (implied by output schema but not described).

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

Conciseness5/5

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

Two succinct sentences: the first explains the primary action and limit constraint, the second describes the output structure. No wasted words.

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

Completeness4/5

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

Given the presence of an output schema that likely details returned fields, the description does not need to explain return values further. It covers the tool's purpose, parameter constraints, and article contents, making it complete for its complexity.

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

Parameters3/5

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

The description adds minimal value beyond the schema: it clarifies the limit range (1-30) and explains what each article includes. However, schema coverage is 100%, so the description isn't required to compensate, earning a baseline 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 states the tool retrieves recent news headlines for a Yahoo symbol, specifies the resource (headlines), and distinguishes it from financial data tools like get_quote by focusing on news content.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus siblings (e.g., search for company lookup before getting news). Usage context is implied from the tool's news focus, but no alternatives 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.

get_optionsA

Get the option chain for a Yahoo symbol.

Call without expiration to list available expiration dates. Call with an expiration (YYYY-MM-DD from that list) to get the calls and puts for that date. Yahoo carries chains for US-listed instruments only, so a non-US symbol has none and that says nothing about the symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesA Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first.
expirationNoExpiration date 'YYYY-MM-DD' from the list returned when called without it. Omit to list available expiration dates.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description bears full burden for behavioral context. It discloses that Yahoo only carries chains for US-listed instruments and that a non-US symbol yielding nothing is normal behavior. It could further describe mutability (likely read-only) but the current detail is strong given the absence of 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 three sentences, each contributing unique information: mode of operation, date format, and limitation. It is front-loaded with the core purpose. The slightly informal style ('that says nothing about the symbol') is acceptable but could be tightened without losing meaning.

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 an output schema and 100% parameter coverage, the description adequately covers behavioral context. It explains the two-step workflow and the US-instrument limitation, which is crucial for correct use. It could mention that the output is a list of options or dates, but the output schema likely handles that.

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 modest value by explaining the interaction pattern for expiration but does not introduce meaning beyond the schema's documentation. For example, it doesn't clarify whether symbol must be a Yahoo ticker vs ISIN in the description text itself.

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 the option chain for a Yahoo symbol, distinguishing it from siblings like get_quote or get_history. It specifies the two modes of operation (listing expiration dates or fetching calls/puts) and provides context about coverage limitations, making the purpose precise and unique.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use the tool: call without expiration to list available dates, then call with a specific expiration from that list. It also tells the agent when not to use it (non-US symbols will return nothing and that doesn't indicate issues) and implicitly distinguishes from financial data tools like get_fund_data.

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

get_quoteB

Get the current price and key intraday figures for a Yahoo symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesA Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It only states what the tool returns ('current price and key intraday figures') but does not mention data latency, authentication requirements, error handling, or whether output is real-time or delayed. The behavioral profile is minimally described.

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, front-loaded sentence of 10 words. It directly states the action and key result with no unnecessary words, earning every character.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, output schema present), the description is sufficient for basic use. It could be slightly improved by noting that it returns intraday data for a single symbol, differentiating from historical or multi-symbol tools, but overall it is mostly 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 already provides a detailed description of the 'symbol' parameter, including examples and a note about using 'search' for company names. The tool description does not add further meaning to the parameter, so it meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the action ('get') and the resource ('current price and key intraday figures for a Yahoo symbol'), which is specific and informative. However, it does not differentiate from sibling 'get_quotes' (plural) which might serve a similar purpose, leaving some ambiguity.

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

Usage Guidelines2/5

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

No explicit guidance is provided on when to use this tool versus other tools like 'get_quotes', 'get_history', or 'get_fund_data'. The description only implies usage for a single symbol's current price, but does not specify limitations or alternatives.

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

get_quotesA

Get compact current quotes for several Yahoo symbols in one call.

Use this to compare or fetch prices for multiple tickers at once. Each symbol is looked up individually and returns currency, last price, previous close, open, day high/low, and market cap. Symbols that return no data are listed under not_found rather than failing the whole call.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolsYesYahoo tickers or ISINs, e.g. ['AAPL', 'MSFT', 'SAP.DE']. Not company names. Up to 50, extras are dropped.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that each symbol is looked up individually, that the call is safe (non-destructive read), and that symbols not found are listed under 'not_found' rather than failing the whole call. It does not mention rate limits, data freshness, or authentication requirements, but the core behavioral traits are covered.

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, zero wasted words. The first sentence captures the core action and scope, the second gives usage guidance, and the third adds behavioral details about error handling. Every sentence earns its place.

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 simplicity (single parameter, return fields listed, output schema exists), the description is complete. It explains what the tool does, when to use it, what it returns, and how errors are handled. No additional information is needed for the agent to select and invoke 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?

Schema coverage is 100% and the schema already provides a thorough description of the 'symbols' parameter (Yahoo tickers, ISINs, examples, max 50). The description adds context about the tool's purpose but does not add new semantic details about the parameter beyond what the schema provides. 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 explicitly states 'Get compact current quotes for several Yahoo symbols in one call' – a specific verb (get), resource (quotes), and scope (several symbols). It distinguishes from the singular sibling 'get_quote' by emphasizing multiple tickers. The listed return fields (currency, price, etc.) further clarify purpose.

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 says 'Use this to compare or fetch prices for multiple tickers at once', which gives clear context. However, it does not explicitly mention when to use the alternative 'get_quote' for a single symbol, nor does it state any exclusions. The sibling list implies the alternative but the description itself lacks direct guidance.

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

get_recommendationsA

Get analyst recommendation trends and price targets for a Yahoo symbol.

Returns the buy/hold/sell trend over recent months plus current/high/low/ mean/median analyst price targets when available.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesA Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing behavior. It transparently explains the return content (buy/hold/sell trend, price targets) and includes the caveat 'when available', which is useful. However, it does not explicitly state that the operation is read-only, whether authentication is needed, or any rate limits. The lack of such basic behavioral disclosure prevents a higher score.

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 'Get', and every sentence adds value. It efficiently conveys both the resource and the return values without excessive detail, making it easy to scan and understand.

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 a single well-documented parameter and an output schema, the description is reasonably complete. It clarifies the scope of data returned ('over recent months', multiple price target metrics) and the 'when available' caveat. However, it does not provide any guidance on selecting this tool over siblings like get_estimates, which would be a minor addition for full completeness.

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 already covers the symbol parameter fully, including examples and guidance to use 'search' for company names (100% coverage). The description adds no additional parameter-specific meaning beyond what the schema provides, so the baseline score of 3 applies.

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 'analyst recommendation trends and price targets' for a Yahoo symbol, using the specific verb 'Get'. This distinguishes it from sibling tools like get_quote (quotes) and get_estimates (estimates), as it focuses on recommendation trends and target prices.

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 clear context by specifying the tool is for analyst recommendations and price targets, but it does not explicitly mention when not to use it or name alternatives. The instruction 'for a Yahoo symbol' implies the required input format, but lacks explicit comparison to similar tools like get_estimates.

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

get_sec_filingsA

Get recent SEC filings for a Yahoo symbol.

Each entry has the filing date, type (e.g. 10-K, 10-Q, 8-K), title, the Yahoo EDGAR URL, and exhibit links. Only issuers registered with the U.S. SEC file there, so a non-US symbol has none, and neither do ETFs, funds or crypto. An empty result says nothing about the symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of filings to return.
symbolYesA Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the content of each entry (filing date, type, title, EDGAR URL, exhibit links) and covers edge cases (non-US symbols, ETFs). However, it does not explicitly state that this is a read-only operation or mention any rate limits or pagination behavior, which keeps it from a perfect score.

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 very concise, consisting of only three sentences. The first sentence immediately states the core function, followed by clear, useful details about the response format and edge cases. Every sentence adds value with no redundancy.

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 (2 parameters, 1 required, simple scalar types) and the existence of an output schema (which presumably documents the return structure), the description is complete. It explains what data is returned, what symbols qualify, and how to interpret empty results. No additional information is necessary for effective use.

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% for both parameters (symbol and limit). The description adds functional meaning to the symbol parameter by noting it can be a Yahoo ticker or ISIN, and suggests using 'search' for company names. It also mentions limit implicitly via the number of filings. The parameter description in the schema already defines them, so the description provides marginal added value, but the additional context on symbol usage is helpful.

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 that the tool retrieves 'recent SEC filings for a Yahoo symbol', specifying the exact resource (SEC filings) and the key verb ('get'). It also distinguishes itself from siblings by highlighting that it's specific to SEC filings, whereas siblings like get_quote, get_earnings, or get_news 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 Guidelines5/5

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

The description provides strong usage guidance: it explains that only U.S. SEC-registered issuers file there, so non-US symbols, ETFs, funds, or crypto will return empty results. It also clarifies that an empty result is not an error, preventing misinterpretation. This helps the agent know when this tool is appropriate and what to expect.

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

get_sectorA

Browse a market sector by its Yahoo key (not a ticker symbol).

Returns the sector overview (company count, market cap/weight, description), its top companies, ETFs, and mutual funds, and the constituent industries. Each industry's key can be passed to get_industry to drill down. This takes a sector key like technology or healthcare — not a ticker.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesA Yahoo sector key (lowercase, hyphenated). One of: basic-materials, communication-services, consumer-cyclical, consumer-defensive, energy, financial-services, healthcare, industrials, real-estate, technology, utilities.
limitNoMaximum number of top companies to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It clearly discloses the return contents (overview, top companies, ETFs, mutual funds, industries) and the drill-down mechanism, implying a read-only operation. It doesn't mention error handling or rate limits, but for a browse tool, this is adequate.

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 yet information-dense. It front-loads the core purpose, then lists return contents, and ends with usage guidance and an example. No wasted sentences.

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

Completeness4/5

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

Given the tool's moderate complexity and the presence of an output schema, the description adequately covers purpose, key inputs, outputs, and the relationship to get_industry. It could mention that 'limit' applies to top companies, but this is already in the schema. Overall, sufficient for an agent to select and invoke 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?

Schema coverage is 100% with detailed descriptions for both parameters. The description adds minimal extra semantic value, mainly reinforcing the key format with examples and reiterating that it is not a ticker. This meets the baseline for high schema 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 clearly states the tool's function: 'Browse a market sector by its Yahoo key.' It distinguishes from related tools by emphasizing 'not a ticker symbol' and explicitly referencing the sibling tool 'get_industry' for drilling down into industries.

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 gives clear context for when to use this tool: to browse a sector overview, and how to drill down to industries via get_industry. It also clarifies what it is not for ('not a ticker'). It does not explicitly state exclusions among all siblings, but the guidance is strong enough.

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

get_sharesA

Get the shares-outstanding history for a Yahoo symbol.

Each point is a date and the reported shares outstanding. Only the most recent limit points are returned. Optionally bound the range with start / end (YYYY-MM-DD).

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd date 'YYYY-MM-DD' to bound the series (optional).
limitNoMaximum number of (most recent) data points to return.
startNoStart date 'YYYY-MM-DD' to bound the series (optional).
symbolYesA Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses key behavioral traits: shares-outstanding history is returned as date points with amounts, only the most recent `limit` points are returned, and optional bounds apply. Since no annotations are provided, the description carries the full burden and handles it well, though it does not mention what happens on an invalid symbol.

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

Conciseness5/5

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

The description is extremely concise at two short paragraphs. The first sentence defines the core purpose, and the second explains parameter usage. Every sentence serves a purpose, with 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?

Given the output schema exists, the description does not need to detail the return format. It explains the input parameters well and the nature of the data retrieved. However, a brief note on error conditions (e.g., no data for the symbol) would make it fully complete for a tool interacting with an external financial data source.

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 some value by restating parameter usage (`limit`, `start`, `end`) and reinforcing the date format `YYYY-MM-DD`, but does not add new meaning beyond what the schema already provides for any of the 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's action ('get the shares-outstanding history'), the resource ('Yahoo symbol'), and the specific data returned ('each point is a date and reported shares outstanding'). It is distinct from siblings like `get_dividends`, `get_history`, and `get_quotes`, which return 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 Guidelines4/5

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

The explanation of how to use parameters (`limit`, `start`, `end`) provides solid guidance for bounding the query. However, it does not explicitly mention when to use this tool versus alternatives like `get_history` or `get_fund_data`, nor does it state 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.

get_upgrades_downgradesA

Get recent analyst rating changes (upgrades/downgrades) for a Yahoo symbol.

Each entry is a firm's rating change with the from/to grade and action, most recent first. Equity-only, empty for ETFs, funds, and crypto.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rating changes to return.
symbolYesA Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Since no annotations are provided, the description fully handles behavioral transparency. It discloses the ordering (most recent first), the content (each entry includes firm, from/to grade, and action), and the limitation to equity instruments. No contradictions with missing 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 and well-structured, front-loading the main purpose in the first sentence and adding important details in the second. Every sentence adds value with no redundancy or filler.

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 an output schema and the relatively simple nature of the tool (2 parameters, no complex nested structures), the description is complete. It explains the return order, content, and scope limitations, which fully covers what an agent needs to decide to invoke this tool.

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 with a baseline of 3, the description does not add additional meaning beyond what the schema already provides for the parameters (symbol and limit). The description adds value through context about the return data but not specifically for param semantics.

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 recent analyst rating changes (upgrades/downgrades) for a Yahoo symbol. It specifies the resource (rating changes) and the verb (get), and distinguishes it from sibling tools like get_recommendations and get_quote by its focus on rating actions.

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 clear context for when to use the tool: for equity symbols, noting it returns empty results for ETFs, funds, and crypto. It does not explicitly state when not to use it or mention alternatives among siblings, but the equity-only limitation is helpful guidance.

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. 19 tool updatesv0.4.0
    • Changedget_calendar1 field changed
      • changedInput schema / properties / symbol / description
        Previous value: -"A native Yahoo Finance ticker symbol, e.g. 'AAPL', 'MSFT', 'SAP.DE', or 'BMW.DE'. This is NOT an ISIN, a WKN, or a company name, and must NOT be built by appending an exchange suffix to an ISIN (e.g. 'US0378331005.DE' is invalid). If you only have a name or ISIN, call the 'search' tool first and pass the 'symbol' value it returns."New value: +"A Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first."
    • Changedget_company_info1 field changed
      • changedInput schema / properties / symbol / description
        Previous value: -"A native Yahoo Finance ticker symbol, e.g. 'AAPL', 'MSFT', 'SAP.DE', or 'BMW.DE'. This is NOT an ISIN, a WKN, or a company name, and must NOT be built by appending an exchange suffix to an ISIN (e.g. 'US0378331005.DE' is invalid). If you only have a name or ISIN, call the 'search' tool first and pass the 'symbol' value it returns."New value: +"A Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first."
    • Changedget_dividends1 field changed
      • changedInput schema / properties / symbol / description
        Previous value: -"A native Yahoo Finance ticker symbol, e.g. 'AAPL', 'MSFT', 'SAP.DE', or 'BMW.DE'. This is NOT an ISIN, a WKN, or a company name, and must NOT be built by appending an exchange suffix to an ISIN (e.g. 'US0378331005.DE' is invalid). If you only have a name or ISIN, call the 'search' tool first and pass the 'symbol' value it returns."New value: +"A Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first."
    • Changedget_earnings1 field changed
      • changedInput schema / properties / symbol / description
        Previous value: -"A native Yahoo Finance ticker symbol, e.g. 'AAPL', 'MSFT', 'SAP.DE', or 'BMW.DE'. This is NOT an ISIN, a WKN, or a company name, and must NOT be built by appending an exchange suffix to an ISIN (e.g. 'US0378331005.DE' is invalid). If you only have a name or ISIN, call the 'search' tool first and pass the 'symbol' value it returns."New value: +"A Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first."
    • Changedget_estimates1 field changed
      • changedInput schema / properties / symbol / description
        Previous value: -"A native Yahoo Finance ticker symbol, e.g. 'AAPL', 'MSFT', 'SAP.DE', or 'BMW.DE'. This is NOT an ISIN, a WKN, or a company name, and must NOT be built by appending an exchange suffix to an ISIN (e.g. 'US0378331005.DE' is invalid). If you only have a name or ISIN, call the 'search' tool first and pass the 'symbol' value it returns."New value: +"A Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first."
    • Changedget_financials2 fields changed
      • changedInput schema / properties / freq / description
        Previous value: -"Reporting frequency: 'annual', 'quarterly', or 'ttm' (trailing twelve months; income and cashflow only)."New value: +"Reporting frequency: 'annual', 'quarterly', or 'ttm' (trailing twelve months, income and cashflow only)."
      • changedInput schema / properties / symbol / description
        Previous value: -"A native Yahoo Finance ticker symbol, e.g. 'AAPL', 'MSFT', 'SAP.DE', or 'BMW.DE'. This is NOT an ISIN, a WKN, or a company name, and must NOT be built by appending an exchange suffix to an ISIN (e.g. 'US0378331005.DE' is invalid). If you only have a name or ISIN, call the 'search' tool first and pass the 'symbol' value it returns."New value: +"A Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first."
    • Changedget_fund_data1 field changed
      • changedInput schema / properties / symbol / description
        Previous value: -"A native Yahoo Finance ticker symbol, e.g. 'AAPL', 'MSFT', 'SAP.DE', or 'BMW.DE'. This is NOT an ISIN, a WKN, or a company name, and must NOT be built by appending an exchange suffix to an ISIN (e.g. 'US0378331005.DE' is invalid). If you only have a name or ISIN, call the 'search' tool first and pass the 'symbol' value it returns."New value: +"A Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first."
    • Changedget_history1 field changed
      • changedInput schema / properties / symbol / description
        Previous value: -"A native Yahoo Finance ticker symbol, e.g. 'AAPL', 'MSFT', 'SAP.DE', or 'BMW.DE'. This is NOT an ISIN, a WKN, or a company name, and must NOT be built by appending an exchange suffix to an ISIN (e.g. 'US0378331005.DE' is invalid). If you only have a name or ISIN, call the 'search' tool first and pass the 'symbol' value it returns."New value: +"A Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first."
    • Changedget_holders1 field changed
      • changedInput schema / properties / symbol / description
        Previous value: -"A native Yahoo Finance ticker symbol, e.g. 'AAPL', 'MSFT', 'SAP.DE', or 'BMW.DE'. This is NOT an ISIN, a WKN, or a company name, and must NOT be built by appending an exchange suffix to an ISIN (e.g. 'US0378331005.DE' is invalid). If you only have a name or ISIN, call the 'search' tool first and pass the 'symbol' value it returns."New value: +"A Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first."
    • Changedget_insider_activity1 field changed
      • changedInput schema / properties / symbol / description
        Previous value: -"A native Yahoo Finance ticker symbol, e.g. 'AAPL', 'MSFT', 'SAP.DE', or 'BMW.DE'. This is NOT an ISIN, a WKN, or a company name, and must NOT be built by appending an exchange suffix to an ISIN (e.g. 'US0378331005.DE' is invalid). If you only have a name or ISIN, call the 'search' tool first and pass the 'symbol' value it returns."New value: +"A Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first."
    • Addedget_market
    • Changedget_news1 field changed
      • changedInput schema / properties / symbol / description
        Previous value: -"A native Yahoo Finance ticker symbol, e.g. 'AAPL', 'MSFT', 'SAP.DE', or 'BMW.DE'. This is NOT an ISIN, a WKN, or a company name, and must NOT be built by appending an exchange suffix to an ISIN (e.g. 'US0378331005.DE' is invalid). If you only have a name or ISIN, call the 'search' tool first and pass the 'symbol' value it returns."New value: +"A Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first."
    • Changedget_options1 field changed
      • changedInput schema / properties / symbol / description
        Previous value: -"A native Yahoo Finance ticker symbol, e.g. 'AAPL', 'MSFT', 'SAP.DE', or 'BMW.DE'. This is NOT an ISIN, a WKN, or a company name, and must NOT be built by appending an exchange suffix to an ISIN (e.g. 'US0378331005.DE' is invalid). If you only have a name or ISIN, call the 'search' tool first and pass the 'symbol' value it returns."New value: +"A Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first."
    • Changedget_quote1 field changed
      • changedInput schema / properties / symbol / description
        Previous value: -"A native Yahoo Finance ticker symbol, e.g. 'AAPL', 'MSFT', 'SAP.DE', or 'BMW.DE'. This is NOT an ISIN, a WKN, or a company name, and must NOT be built by appending an exchange suffix to an ISIN (e.g. 'US0378331005.DE' is invalid). If you only have a name or ISIN, call the 'search' tool first and pass the 'symbol' value it returns."New value: +"A Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first."
    • Changedget_quotes1 field changed
      • changedInput schema / properties / symbols / description
        Previous value: -"A list of native Yahoo Finance ticker symbols, e.g. ['AAPL', 'MSFT', 'SAP.DE']. Each must be a native ticker, never an ISIN, WKN, or company name; resolve those via 'search' first. Up to 50 symbols; extras are dropped (the result flags this as truncated)."New value: +"Yahoo tickers or ISINs, e.g. ['AAPL', 'MSFT', 'SAP.DE']. Not company names. Up to 50, extras are dropped."
    • Changedget_recommendations1 field changed
      • changedInput schema / properties / symbol / description
        Previous value: -"A native Yahoo Finance ticker symbol, e.g. 'AAPL', 'MSFT', 'SAP.DE', or 'BMW.DE'. This is NOT an ISIN, a WKN, or a company name, and must NOT be built by appending an exchange suffix to an ISIN (e.g. 'US0378331005.DE' is invalid). If you only have a name or ISIN, call the 'search' tool first and pass the 'symbol' value it returns."New value: +"A Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first."
    • Changedget_sec_filings1 field changed
      • changedInput schema / properties / symbol / description
        Previous value: -"A native Yahoo Finance ticker symbol, e.g. 'AAPL', 'MSFT', 'SAP.DE', or 'BMW.DE'. This is NOT an ISIN, a WKN, or a company name, and must NOT be built by appending an exchange suffix to an ISIN (e.g. 'US0378331005.DE' is invalid). If you only have a name or ISIN, call the 'search' tool first and pass the 'symbol' value it returns."New value: +"A Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first."
    • Changedget_shares1 field changed
      • changedInput schema / properties / symbol / description
        Previous value: -"A native Yahoo Finance ticker symbol, e.g. 'AAPL', 'MSFT', 'SAP.DE', or 'BMW.DE'. This is NOT an ISIN, a WKN, or a company name, and must NOT be built by appending an exchange suffix to an ISIN (e.g. 'US0378331005.DE' is invalid). If you only have a name or ISIN, call the 'search' tool first and pass the 'symbol' value it returns."New value: +"A Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first."
    • Changedget_upgrades_downgrades1 field changed
      • changedInput schema / properties / symbol / description
        Previous value: -"A native Yahoo Finance ticker symbol, e.g. 'AAPL', 'MSFT', 'SAP.DE', or 'BMW.DE'. This is NOT an ISIN, a WKN, or a company name, and must NOT be built by appending an exchange suffix to an ISIN (e.g. 'US0378331005.DE' is invalid). If you only have a name or ISIN, call the 'search' tool first and pass the 'symbol' value it returns."New value: +"A Yahoo ticker or an ISIN, e.g. 'AAPL', 'SAP.DE' or 'US0378331005'. For a company name, use 'search' first."
  2. 21 tool updatesv0.2.2
    • First observedget_calendar
    • First observedget_company_info
    • First observedget_dividends
    • First observedget_earnings
    • First observedget_estimates
    • First observedget_financials
    • First observedget_fund_data
    • First observedget_history
    • First observedget_holders
    • First observedget_industry
    • First observedget_insider_activity
    • First observedget_news
    • First observedget_options
    • First observedget_quote
    • First observedget_quotes
    • First observedget_recommendations
    • First observedget_sec_filings
    • First observedget_sector
    • First observedget_shares
    • First observedget_upgrades_downgrades
    • First observedsearch

TDQS

A4/5.0

Scored across 22 tools

Disambiguation5/5

Each tool targets a distinct piece of Yahoo Finance data: quotes, fund data, history, company info, financials, dividends, news, recommendations, options, earnings, estimates, upgrades/downgrades, holders, insider activity, SEC filings, calendar, shares, sector, industry, and market status. Despite some thematic overlap (e.g., earnings vs. calendar), every tool has a clear, non-overlapping purpose and descriptions make the differences explicit.

Naming Consistency5/5

All 22 tools follow a consistent 'get_<noun>' pattern in snake_case. Even multi-word tool names (e.g., get_fund_data, get_company_info, get_upgrades_downgrades) adhere without deviation. This predictable structure makes the tool set easy to navigate.

Tool Count5/5

With 22 tools, the server covers the broad scope of Yahoo Finance data without being bloated. Each tool serves a specific functional area (quotes, fundamentals, market data, etc.), and the count feels well-calibrated for the domain—neither too sparse nor excessive.

Completeness4/5

The tool set covers the vast majority of common Yahoo Finance use cases: quotes, historical data, financial statements, news, options, earnings, estimates, insider trading, SEC filings, sector/industry browsing, and market status. Minor gaps exist (e.g., no symbol-specific index constituents or currency data), but the surface is comprehensive for typical financial analysis tasks.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    A Model Context Protocol (MCP) server that provides comprehensive access to Yahoo Finance data through 18 specialized tools for pricing, financials, options, holders, and news.
    18
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive MCP server that provides seamless access to Yahoo Finance stock market data, enabling retrieval of real-time quotes, historical data, charts, financial summaries, and market searches.
    35 npm
    ISC
  • A
    license
    A
    quality
    D
    maintenance
    Enables querying stock data, financial information, news, and historical prices from Yahoo Finance through a set of MCP tools.
    5
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server wrapping yfinance to provide stock market data, financials, and analytics via 24 tools.
    -