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

Every tool only reads, and each one says so to the client with the MCP annotations readOnlyHint and openWorldHint. A client that honours them may run the tools without asking for confirmation each time.

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), up to the 10 Yahoo serves.

get_recommendations

Analyst recommendation trend and price targets.

get_options

Option expiration dates and the calls/puts chain for a date, centred on the money.

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), the last 18 months unless a start date is given.

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 are open by default, with an optional bearer token as the only guard. 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.6.0. 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 (1 to 65535).

--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, or derived from origins

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. --allowed-origins works on its own as well, and either list is derived from the other when only one is given.

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.6.0 for an exact release, :0.6 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, and the base images are pinned by digest, so a rebuild of the same commit gets the same bytes.

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 is unauthenticated unless YF_MCP_BEARER_TOKEN is set. To expose it, remove the 127.0.0.1: prefix from the ports: entry in compose.yaml, set the token at the very least, 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, and a failing cache never fails a call: a locked or damaged cache file is logged and the data is fetched as if caching were off.

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
Read-only

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

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, which the description does not contradict. It adds genuinely useful behavioral context beyond the annotations: 'Equity-only, empty for ETFs, funds, and crypto,' plus the specific data shape returned (estimate ranges, ex-dividend dates). This adds value without repeating the annotations.

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

Conciseness5/5

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

Two compact paragraphs with the main purpose front-loaded and a clear behavioral caveat. Every sentence earns its place with zero filler or repetition of the schema.

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

Completeness4/5

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

For a single-parameter tool with a documented output schema and read-only annotations, the description covers what is returned and the equity-only limitation. It is nearly complete; only explicit sibling routing is missing.

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 documents the symbol parameter thoroughly (Yahoo ticker or ISIN, use search for company names). The description adds no parameter-level semantics beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource: 'Get upcoming corporate-calendar events for a Yahoo symbol,' then enumerates the exact contents (earnings dates with estimate ranges, dividend/ex-dividend dates). This is clear and distinct from a vague purpose, though it does not explicitly name overlapping siblings like get_earnings or get_dividends.

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

Usage Guidelines3/5

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

Usage context is implied by describing the returned content and the equity-only scope, but there is no explicit when-to-use versus alternatives guidance. Given overlapping siblings such as get_earnings, get_dividends, and get_estimates, the description leaves the agent to infer which tool fits.

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

get_company_infoA
Read-only

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

A4/5.0
Behavior3/5

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

Annotations already mark this as read-only and open-world, so the description does not need to disclose safety or mutation effects. It adds useful context by listing returned fields, but it does not address edge cases such as invalid symbols, data freshness, or symbol-resolution failures.

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 concise sentences, front-loads the action and resource, and then lists expected returns without redundant filler. Every sentence contributes useful selection information.

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

Completeness4/5

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

For a single-parameter read-only tool with a detailed input schema and output schema, the description covers the essential return categories and the symbol format. It could be slightly more explicit about what it does not provide (e.g., historical prices), but current detail is sufficient for correct tool selection.

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 is fully documented in the schema with valid example formats and the 'search first' instruction. The description adds no additional parameter meaning beyond calling it a 'Yahoo symbol,' so the 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 uses a specific verb and resource: 'Get a company profile and key statistics for a Yahoo symbol.' It clearly names the return content (sector, valuation metrics, business summary), which distinguishes it from quote-only or financial-statement tools like get_quotes and 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 makes the tool's scope clear: company profile and key statistics, not price history, dividends, or financial statements. The input schema adds practical guidance to use 'search' first for company names, but there is no explicit comparison with sibling tools.

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

get_dividendsA
Read-only

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

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and world-openness are covered. The description adds that the tool returns dividend and stock-split history, but it does not disclose details like return format, adjustment behavior, or absence of data handling. This is adequate but not rich.

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

Conciseness5/5

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

The description is a single sentence with no wasted words, front-loading the action and resource clearly. It is concise and immediately scannable.

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?

For a one-parameter, read-only tool with a complete input schema, annotations, and an output schema, the description covers everything an agent needs to select and invoke the tool correctly. No critical operational details are missing.

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%, with the symbol parameter already explaining Yahoo tickers, ISINs, examples, and the 'search' fallback. The description itself adds no parameter-level meaning, so the baseline 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 states a specific verb ('Get') and a clear resource ('dividend and stock-split history for a Yahoo symbol'), which distinguishes this tool from siblings like get_quotes, get_history, and get_financials. An agent can immediately understand what this tool returns.

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 when to use the tool — whenever dividend or stock-split history is needed — but it does not explicitly mention alternatives or exclusion criteria. The symbol parameter's note to use 'search' first is helpful but not tool-selection guidance.

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

get_earningsA
Read-only

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.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint. The description adds meaningful behavioral context beyond those hints: it specifies that the tool is equity-only and returns empty results for ETFs, funds, and crypto, and it details the kinds of data returned. This is useful and non-contradictory.

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 with no filler. The primary purpose is front-loaded, and the additional details about return content and equity-only scope earn their place without 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 output schema is present, the description does not need to explain return structure in depth. It covers scope, return contents, and the key limitation (equity-only), while the schema handles parameter documentation. An agent has enough information to decide whether and how to call 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?

The input schema already covers both parameters with 100% coverage, including the symbol description and limit constraints. The description does not add new semantic meaning for the parameters beyond the schema, so the baseline 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 states a specific verb and resource: 'Get upcoming and historical earnings for a Yahoo symbol.' It clearly describes what the tool returns (earnings calendar with EPS estimates, reported EPS, surprise %, and earnings history). It does not explicitly differentiate from siblings like get_estimates or get_calendar, so it misses the top score.

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 gives an important usage constraint: 'Equity-only, empty for ETFs, funds, and crypto.' This implies when the tool is appropriate but does not explicitly say when to prefer it over sibling tools or when to choose an alternative. Usage context is implied rather than explicitly routed.

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

get_estimatesA
Read-only

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.1/5.0
Behavior4/5

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

Annotations already cover readOnlyHint and openWorldHint, and the description adds valuable behavioral context: it is equity-only, returns empty results for non-equities, and returns 'small tables keyed by period.' This goes beyond the annotations by describing expected output shape and edge-case behavior without contradicting them.

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 with no filler. The primary purpose is front-loaded, followed by a concise list of returned data and a key limitation. Every clause 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?

For a single-parameter tool with an output schema, read-only and open-world annotations, and a clear equity-only constraint, the description covers what an agent needs to call it correctly. The return-value summary is sufficient given the output schema exists.

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 itself already explains that symbol can be a ticker or ISIN and advises using 'search' for company names. The description only repeats 'a Yahoo symbol,' adding no new meaning beyond the schema. 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 starts with a specific verb and resource: 'Get forward analyst estimates for a Yahoo symbol.' It clearly enumerates what is included (earnings and revenue estimates, EPS trend/revisions, growth estimates) and constrains applicability to equities. This differentiates it from siblings like get_earnings or get_financials by emphasizing 'forward' estimates.

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 states the tool returns forward estimates and is 'Equity-only, empty for ETFs, funds, and crypto,' which gives an important exclusion but does not name alternatives or specify when to prefer this over get_earnings or get_financials. Usage is implied by the return content rather than explicitly guided.

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

get_financialsA
Read-only

Get a financial statement for a Yahoo symbol.

Each row is a line item and each column a reporting period, most recent first.

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

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only nature is covered. The description adds behavioral context about the output format ('Each row is a line item and each column a reporting period, most recent first'), which is beyond the annotations and helps the agent interpret the response. No contradiction with annotations.

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

Conciseness5/5

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

The description is two sentences with zero waste. The main purpose is front-loaded in the first sentence, and the second sentence adds a valuable format detail without redundancy. It is appropriately concise and well-structured.

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

Completeness4/5

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

The tool has an explicit output schema, so return values are already defined. Given the simple three-parameter interface with full schema descriptions and annotations covering the read-only and open-world aspects, the description is complete enough. The format note clarifies the orientation of the response. No missing essential information for an agent to call it 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 (symbol, freq, statement) have descriptive text. The tool description does not add any extra meaning beyond what the schema already provides, so the baseline score of 3 applies. The description's format note relates to output, not 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 states a specific verb ('Get') and resource ('a financial statement for a Yahoo symbol'), which is clear and unambiguous. The resource uniquely identifies this tool among siblings (no other sibling mentions financial statements). The added format note ('Each row is a line item...') is extra but does not cloud the purpose.

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

Usage Guidelines3/5

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

The description implies usage by naming the resource explicitly ('financial statement'), but it does not explicitly state when to use this tool versus alternatives or mention exclusions. There is no guidance such as 'for real-time prices use get_quotes' or 'for earnings data use get_earnings'. The usage is inferred from the resource type, so it's implied rather than stated.

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

get_fund_dataA
Read-only

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.5/5.0
Behavior4/5

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

Annotations already mark this as read-only and open-world, so the safety profile is covered. The description adds valuable behavioral context beyond annotations by disclosing an error condition: the tool raises for stocks and crypto because they lack fund data. That is a meaningful non-obvious 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 compact and front-loaded: the core purpose appears in the first sentence, followed by return details and an important exclusion. Every sentence earns its place with no redundant or filler content.

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?

For a simple two-parameter read-only tool with a full output schema and complete parameter descriptions, the description covers what it returns, when it should be used, and a key failure mode. Nothing an agent needs to invoke it correctly is missing.

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 100% description coverage for both parameters, including examples and the 'use search first' hint for company names. The tool description adds no additional parameter-level meaning, so the 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 and resource: 'Get fund/ETF profile data for a Yahoo symbol.' It then lists concrete return contents (fund overview, weightings, top holdings) and explicitly scopes the tool to funds/ETFs, which clearly separates it from the many stock- and crypto-focused sibling tools.

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 gives an explicit when-to-use ('Fund/ETF-only') and a clear when-not-to-use condition ('raises for stocks and crypto'), preventing an agent from misrouting equity or crypto requests to this tool. This is actionable exclusion guidance even though it does not name a specific replacement sibling.

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

get_historyA
Read-only

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

Query a look-back period or an explicit start/end range. Results are capped at the most recent 250 rows, with truncated set when cut.

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

A4.3/5.0
Behavior4/5

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

Annotations already mark the tool read-only and open-world. The description adds a meaningful behavioral constraint: results are capped at 250 rows and 'truncated' is set when cut. This goes beyond the schema and helps set expectations.

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 short sentences with no filler: purpose, query modes, and row-cap behavior. The most decision-relevant information is front-loaded.

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

Completeness5/5

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

With full schema coverage, an output schema, and read-only annotations, the description covers the remaining operational detail (250-row cap and truncation flag). Nothing needed to call the tool correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters. The description reinforces the period vs start/end relationship but does not add meaning beyond what the parameter descriptions already provide.

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 opens with a specific verb and resource: 'Get historical OHLCV ... data for a symbol.' This clearly differentiates it from sibling quote/news/fund tools, and the period/start-end modes further specify 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?

It gives clear context for use: historical OHLCV retrieval with either a look-back period or an explicit date range. It does not explicitly name alternatives or exclusions, but the purpose is specific enough that an agent can infer when to select it.

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

get_holdersA
Read-only

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.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds behavioral context beyond annotations: it specifies the return content (summary plus top holders) and the empty-result behavior for non-equities. This is useful for setting expectations and avoids surprises.

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 ('ownership breakdown'), and includes the key limitation without any fluff. Every sentence earns its place, and the structure is clear and scannable for an agent.

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?

With an output schema present (indicated by has_output_schema=true), the description need not detail return fields. It covers the essential scope (equity-only, empty for non-equities) and the general output shape. Combined with annotations and schema, nothing critical is missing for correct invocation and interpretation.

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 both 'symbol' and 'limit' already documented in the input schema. The description doesn't add parameter-specific meaning beyond what the schema provides. It mentions return content but not parameter constraints or usage details, so it doesn't exceed the baseline for fully covered schemas.

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 gets an ownership breakdown for a Yahoo symbol, specifying the exact output (insider/institutional percentages, top holders). It distinguishes itself from siblings by explicitly noting it's equity-only and empty for non-equities, which differentiates it from get_fund_data or get_shares without ambiguity.

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 when to use the tool (for equity ownership) and explicitly excludes ETFs, funds, and crypto. While it doesn't name alternative tools for those cases, the exclusion itself guides the agent away from misuse. It could have explicitly pointed to get_fund_data for funds, but the limitation is clear enough.

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

get_industryA
Read-only

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.0
Behavior3/5

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

Annotations already provide readOnlyHint=true and openWorldHint=true, so the read-only safety profile is covered. The description aligns with that by saying 'Browse' and describes what is returned, but it does not add much behavioral context beyond the annotations—no ordering, pagination, or edge-case behavior is disclosed.

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

Conciseness4/5

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

The description is front-loaded with the core purpose and return contents. It is concise, though the final sentence repeats 'not a ticker symbol' from the opening, making the wording slightly redundant without harming clarity.

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 output schema exists and the input schema covers all parameters, the description supplies the essential extra context: where keys come from, what the output covers, and what kind of input is expected. Nothing important is missing for an agent to call this tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, with both 'key' and 'limit' fully documented including types, defaults, and constraints. The description reinforces the key-discovery instruction and the non-ticker warning, but adds no meaning beyond what the schema already provides.

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

Purpose5/5

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

The description states a specific verb and resource: browse an industry by its Yahoo key. It enumerates concrete return contents (industry overview, parent sector, top companies, top performers/growth), which clearly distinguishes it from sibling tools like get_company_info or get_sector. The repeated 'not a ticker symbol' further pins down the resource type.

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?

It gives explicit guidance on how to obtain valid keys: from the 'industries' list returned by get_sector, with 'semiconductors' as an example. It also warns not to pass a ticker symbol. However, it does not explicitly compare this tool to alternatives or state when to prefer it over a sibling such as get_sector, so it falls just short of a perfect usage guide.

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

get_insider_activityA
Read-only

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.3/5.0
Behavior4/5

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

Annotations already provide readOnlyHint and openWorldHint. The description adds value by detailing the exact return components and the empty response for ETFs/funds/crypto, which is beyond the annotation scope. No contradiction.

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 concise sentences front-load the purpose, then provide details and a caveat. Zero redundant wording.

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?

With an output schema present and both parameters fully described in the schema, the description covers the key behavioral constraints (return components, equity-only). An agent has all necessary information to select and invoke the 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%, with clear descriptions for both symbol and limit. The description does not add parameter-specific information, so the baseline 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 verb 'Get' and the resource 'insider trading activity', and enumerates the specific data returned (transactions, 6-month summary, roster). The equity-only caveat distinguishes it from other financial data tools in the sibling set.

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?

It specifies when not to use (non-equities) but doesn't explicitly name alternatives. The purpose and sibling context make the intended use obvious, but a direct reference to alternatives would have been stronger.

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

get_marketA
Read-only

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.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds valuable behavioral context: the 'status' field is null for non-US keys due to an upstream limitation, not an error. This prevents an agent from misinterpreting null results as failures. It also clarifies that the index summary works for all keys, which is useful behavioral information beyond the annotations.

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

Conciseness5/5

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

The description is compact and front-loaded: the first sentence states the core purpose, the second gives example questions and the key-vs-ticker distinction, and the third covers the US-only status limitation. Every sentence earns its place, and there is no redundant 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?

For a single-parameter, read-only tool with a rich schema and an output schema, the description is complete. It covers what the tool does, how to use it, the key limitation (US-only status), and what to expect for other keys. An agent has everything needed to invoke it correctly without further investigation.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents the 'key' parameter thoroughly, including the allowed values and the US-only status behavior. The description reinforces this by giving examples ('US', 'EUROPE') and restating the key distinction (market key vs ticker). This adds a small amount of clarity beyond the schema, but the schema does most of the work, so a 4 is appropriate rather than a 5.

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 ('Get'), a clear resource ('trading status and headline index summary for a market'), and explicitly distinguishes itself from ticker-based tools by saying it takes a market key, not a ticker symbol. It also names the sibling 'get_quotes' implicitly by contrast, making it easy for an agent to select this tool for market-level status rather than individual securities.

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 explicitly says when to use this tool: to answer whether a market is open, when it opens/closes next, and how major indices are doing. It also gives an exclusion: it is not for ticker symbols, and it notes that 'status' is only available for 'US'. This is clear guidance that prevents misuse.

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

get_newsA
Read-only

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

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

A4/5.0
Behavior3/5

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

Annotations already establish read-only and open-world behavior, lowering the bar. The description adds that results are limited to 1-10 items and include specific article fields. It does not disclose the news timeframe or possible variation in article availability, but this is not a serious gap given the readOnlyHint and output schema.

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

Conciseness5/5

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

Two concise, information-dense sentences. The main purpose and limit behavior are front-loaded, and the article field list earns its place by setting return expectations without redundancy.

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 a simple read-only tool, a 100% schema-covered parameter set, and an existing output schema, the description is nearly complete. It clearly states the result contents and count constraints; the only minor gap is that 'recent' is not time-bound, but this is acceptable for a headline-news 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 the schema already documents both parameters well. The description's reference to 'up to limit, 1-10' mirrors the schema's min/max/default and adds no new semantic meaning. 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?

States a specific verb ('Get') and resource ('recent news headlines for a Yahoo symbol') and clarifies the output includes title, summary, publisher, publish time, and URL. It is clearly distinct from the financial-data siblings and can be selected without opening the schema.

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

Usage Guidelines4/5

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

The tool description frames the intended use case: retrieving recent news for a Yahoo symbol. The symbol parameter additionally provides guidance to use 'search' first for company names, which routes around a common misuse. No news-specific sibling exists, so explicit exclusions are not required.

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

get_optionsA
Read-only

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, up to 60 strikes each centred on the current price, with truncated set when a wider chain was cut. 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.5/5.0
Behavior5/5

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

Even with readOnlyHint and openWorldHint annotations, the description adds substantial non-obvious behavior: the 60-strike cap on each side, the truncation flag, and the important caveat that non-US symbols have no option chains. These details go well beyond the annotations and prevent misinterpretation.

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 front-loaded with a one-line purpose, then logically structured into two concise usage paragraphs. Every sentence earns its place, and the edge-case caveat is included without bloat.

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 annotations, the description covers all necessary operational context: how to discover expirations, how to request a chain, result limits, truncation behavior, and market coverage limitations. Nothing critical is missing for correct invocation.

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

Parameters3/5

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

The schema already covers both parameters at 100% with clear descriptions (symbol formats and expiration behavior). The tool description mostly restates the expiration flow already in the schema, so it adds limited parameter-level meaning beyond what structured data provides.

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

Purpose5/5

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

The description opens with a specific verb and resource ('Get the option chain for a Yahoo symbol') and clearly distinguishes the tool's unique function from the many sibling data-fetching tools. It also explains the two operational modes, making it immediately recognizable.

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, actionable guidance on when to call without expiration versus with expiration, forming a two-step workflow. It does not explicitly contrast this tool with sibling alternatives, but the usage pattern is explicit enough for correct invocation.

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

get_quoteA
Read-only

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

A3.8/5.0
Behavior3/5

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

Annotations already convey read-only and open-world behavior, and the description does not contradict them. The description only adds the intraday/current scope; it does not disclose latency, rate limits, or behavior for invalid symbols, though that is a minor gap given the annotations.

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

Conciseness5/5

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

One short, front-loaded sentence with no filler. Every word carries meaning, and the description is appropriately sized for a single-parameter read-only tool.

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 one required parameter, a rich schema, output schema, and read-only annotations, this is nearly complete for correct invocation. It omits explicit sibling differentiation and data-freshness caveats, but neither is essential for a basic quote lookup.

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 is fully documented in the schema with type, examples, ISIN support, and a search fallback. The description adds no param-level meaning beyond the schema, so with 100% schema coverage the baseline 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?

States exactly what the tool returns—current price and key intraday figures—for a Yahoo symbol. The phrase 'current' and 'intraday' differentiates it from historical and fundamental data tools, and 'a Yahoo symbol' signals the singular quote use case.

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?

Usage context is mostly implied: it is for a current snapshot of a symbol, not historical or fundamental data. The schema adds a 'use search first for company names' hint, but the tool description itself does not name alternatives like get_quotes for multiple symbols or state when not to use this tool.

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

get_quotesA
Read-only

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?

Annotations already mark the tool as read-only and open-world. The description adds useful behavior beyond that: each symbol is looked up individually, failed symbols appear under not_found rather than failing the whole call, and the quoted fields are named. No contradiction with annotations.

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

Conciseness5/5

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

Three concise sentences, each earning its place: the action, the use case, and the failure behavior. The core verb and resource are front-loaded, and there is no redundant restatement 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?

For a single-parameter, read-only tool with an output schema available, the description fully covers what the tool does, when to use it, and what happens with missing data. The not_found behavior is especially valuable for agents deciding whether partial results are acceptable.

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 parameter description already documents that symbols are Yahoo tickers/ISINs, not company names, and that up to 50 are accepted with extras dropped. The description only restates the multi-symbol idea, adding no new parameter-level meaning, so the baseline 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?

States a specific verb and resource: 'Get compact current quotes for several Yahoo symbols in one call.' It emphasizes multiple tickers and comparison, which distinguishes it from the singular get_quote sibling. The listed return fields further clarify the resource 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?

'Use this to compare or fetch prices for multiple tickers at once' is a clear, direct instruction for when to choose this tool. It provides context but does not explicitly name alternatives or state when not to use it, such as when a single quote would suffice.

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

get_recommendationsA
Read-only

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.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds behavioral nuance by noting 'when available' for price targets and 'over recent months' for the trend, signaling potential data variability without contradicting the annotations.

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

Conciseness5/5

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

Two sentences with zero waste: the first states the purpose and the second details the output. The most important info is front-loaded, and no filler exists.

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?

The tool is simple (one parameter) and an output schema exists. The description explains what data will be returned, including the caveat about availability, which is sufficient for correct invocation without needing to inspect the schema.

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 symbol parameter is thoroughly documented in the schema with examples and a routing hint. The description does not need to add more, so a baseline of 3 is appropriate—the schema carries the full semantic load.

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

Purpose5/5

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

The description uses a specific verb ('Get') and resource ('analyst recommendation trends and price targets'), and explicitly states the returned data: buy/hold/sell trend and price target statistics. This clearly distinguishes it from siblings like get_estimates or get_upgrades_downgrades by naming the exact output.

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 context by specifying the input format (Yahoo ticker or ISIN) and routes users to 'search' for company names. However, it does not name alternative tools or explicitly state when not to use this tool, leaving some ambiguity among the many recommendation-related siblings.

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

get_sec_filingsA
Read-only

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.3/5.0
Behavior4/5

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

Annotations already declare read-only and open-world behavior. The description adds useful behavioral context: exact entry fields, the scope limitation to SEC-registered issuers, and the interpretation of empty results. This goes beyond what annotations alone convey, without any contradiction.

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 compact sentences front-load the action and then add only high-value details about result contents, symbol eligibility, and empty-result interpretation. 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?

For a read-only retrieval tool with an output schema, the description covers what is returned and how to interpret edge cases (empty results for non-SEC issuers). Combined with the annotations and schema, nothing necessary for correct invocation is missing.

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 both parameters have clear descriptions (symbol formats and limit bounds/default). The tool description adds no new parameter semantics, so the 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?

States a specific verb ('Get') and resource ('recent SEC filings') for a Yahoo symbol. The mention of filing types and caveats distinguishes it from financial/news siblings, so an agent can select it appropriately.

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?

Provides clear context on when results will be present or empty (non-US symbols, ETFs, funds, crypto) and warns that an empty result says nothing about the symbol. It does not explicitly name alternative tools for cases where SEC filings do not apply, but the guidance is otherwise sufficient.

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

get_sectorA
Read-only

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.5/5.0
Behavior4/5

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

Annotations already cover readOnlyHint and openWorldHint, so the description does not need to restate them. It adds behavioral context by detailing the composition of the returned data (companies, ETFs, funds, industries) and clarifying the key format, which is useful for an agent planning subsequent calls. No contradictions with annotations.

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

Conciseness5/5

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

The description is three compact sentences with zero filler. The main action and key distinction (not a ticker) are front-loaded, follow-up detail is organized logically, and every sentence adds value. This is a model of concise technical writing.

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 annotations covering safety/volatility, the description provides complete guidance: it lists the return categories, the drill-down path to get_industry, and the key semantics. An agent has everything needed to call this tool correctly without additional inference.

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%, giving a strong baseline. The description adds meaningful nuance by explicitly stating the key is not a ticker and providing examples (technology, healthcare), which helps prevent misuse beyond the schema's enum list. The limit parameter is already well-documented in the schema, so the description does not need to repeat it.

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') and resource ('market sector'), explicitly distinguishes it from ticker-based tools, and enumerates exactly what is returned (overview, top companies, ETFs, funds, industries). It clearly differentiates from the sibling get_industry, making its role unambiguous.

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

Usage Guidelines4/5

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

The description provides clear context on when to use it: for sector-level browsing, and explicitly points to get_industry for drilling down into industries. It also warns 'not a ticker,' which implies not for individual securities. However, it does not systematically contrast with all other sibling tools beyond the industry drill-down, so a 4 is appropriate.

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

get_sharesA
Read-only

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. Without start the series covers the last 18 months, so pass one for anything older.

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'. Without it the series covers the last 18 months only.
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?

Annotations already declare readOnlyHint and openWorldHint, and the description adds meaningful behavioral detail: each point is a date with reported shares outstanding, limit truncates to the most recent points, and the default window is 18 months. This goes beyond what annotations alone convey.

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, front-loaded with the core purpose and followed by precise behavioral details. Every sentence contributes useful information with no filler or repetition.

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?

With an output schema present, the description does not need to explain return fields. It covers the input semantics, default window, limit behavior, and symbol scope, leaving no obvious gap for an agent to call this tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description mostly restates the start and limit semantics already present in the schema, adding only the practical phrasing 'pass one for anything older' without introducing new parameter-level meaning.

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 and resource: 'Get the shares-outstanding history for a Yahoo symbol.' This clearly distinguishes it from sibling tools like get_history or get_financials by naming the exact data being retrieved.

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 operational guidance: the default 18-month window means callers should pass a start date for older data, and only the most recent limit points are returned. It does not explicitly compare against sibling tools, but the usage context is unambiguous.

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

get_upgrades_downgradesA
Read-only

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.1/5.0
Behavior5/5

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

Beyond the readOnlyHint and openWorldHint annotations, the description discloses meaningful behavioral traits: results are ordered 'most recent first', each entry includes 'from/to grade and action', and non-equity instruments return empty results. This gives the agent important expectations that annotations alone do not convey.

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 compact and front-loaded: the first sentence states the core purpose, and the second adds the key details about entry structure, ordering, and scope. Every sentence earns its place without redundancy.

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 a full input schema, an output schema, and readOnly/openWorld annotations, the description completes the picture by covering sort order and equity-only behavior. It does not mention limit semantics or alternatives to sibling tools, but those are not critical gaps given the existing structured 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%, so the input schema already documents symbol and limit well. The description adds little parameter-level detail beyond restating that the subject is a Yahoo symbol, so the 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 a specific verb and resource: 'Get recent analyst rating changes (upgrades/downgrades) for a Yahoo symbol.' It also explains what each entry contains. However, it does not explicitly differentiate itself from similar siblings like get_recommendations, so it falls short of full sibling-level distinction.

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 a clear usage boundary: 'Equity-only, empty for ETFs, funds, and crypto.' This tells the agent when not to expect results, but it does not name alternative tools for those cases, so it is one step below explicit when-to-use/alternative 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. 2 tool updatesv0.6.0
    • Changedget_news1 field changed
      • changedInput schema / properties / limit / maximum
        Previous value: -30New value: +10
    • Changedget_shares1 field changed
      • changedInput schema / properties / start / description
        Previous value: -"Start date 'YYYY-MM-DD' to bound the series (optional)."New value: +"Start date 'YYYY-MM-DD'. Without it the series covers the last 18 months only."
  2. 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."
  3. 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

A3.9/5.0

Scored across 22 tools

Disambiguation3/5

Several tool pairs cover adjacent Yahoo data areas: get_calendar overlaps with get_earnings and get_dividends, and get_recommendations/get_estimates/get_upgrades_downgrades all report analyst activity. get_quote vs get_quotes also differ only by plurality, though the descriptions make the single-vs-batch distinction clear. Most tools are otherwise targeted at distinct data categories.

Naming Consistency4/5

The dominant pattern is get_<data-area> such as get_options, get_holders, and get_history, so the set is mostly predictable. The main deviations are the singular/plural get_quote/get_quotes pair and the non-get_ search action, which are minor rather than chaotic.

Tool Count3/5

22 tools is on the heavy side for the typical 3-15 tool range, and many are subtle getters over related Yahoo Finance data. Still, each tool corresponds to a real data category and none are fully redundant, so it is not excessive enough for a 2.

Completeness4/5

The surface covers the core Yahoo Finance data lifecycle: search/lookup, quotes, history, fundamentals, news, options, analyst data, ownership, SEC filings, and market/sector browsing. Minor gaps remain, such as no explicit balance-sheet/cash-flow statement selector and no intraday charts, but agents can answer typical financial questions without running into dead ends.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

  • Financial data MCP server for Claude, ChatGPT, Cursor and Codex. Real-time stock quotes, financial statements, options flow, SEC filings, insider trades, 13F holdings, macro data and market news from gloom.sh, the open-source Bloomberg Terminal alternative.

  • A Model Context Protocol server exposing real-time and historical Colombo Stock Exchange (CSE) data to AI agents and LLM applications. Provides quotes and OHLCV price history, full financial statements (income, balance sheet, cash flow), pre-computed technicals (moving averages, RS ratings, volume signals), macroeconomic indicators, corporate actions, and rule-based screening across CSE stocks and sector indices, everything needed to build CSE-aware trading assistants, research tools, and market-analysis agents. This is the official MCP server of www.ceyloncharts.com

  • Your agent needs markets — prices and fundamentals for listed companies, the filings behind them, crypto, and what the prediction markets put the odds at. **What you can ask for** • "Pull this company's income statement, cash flow and balance sheet for the last 8 quarters." • "What did insiders buy or sell, and when?" • "Snapshot prices for these 50 tickers, then the OHLC history for the three that moved." • "What are the current odds on this event across Kalshi and Polymarket?" • "Screen for companies matching these financial criteria." **How to use it** Point any MCP client at https://mcp.aisa.one/finance/mcp and sign in with OAuth — there is no key to create or paste. 49 tools: prices and snapshots, income statements, balance sheets and cash flows, metrics and ratios, earnings and analyst estimates, filings and line-item search, insider trades, macro interest rates, news, a screener; CoinGecko spot prices, market tables, OHLC, per-venue tickers and trending; Kalshi and Polymarket markets and trades; plus EDINET filings for Japan. **Why this rather than the source** Equities, crypto and event markets behind one account, so a cross-asset question is one conversation. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Read the number here, then ask the same agent what X is saying about the ticker today — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/marketpulse/mcp · /crypto-market-data/mcp · /prediction-market-data/mcp · /stock-pulse/mcp for one slice each.

  • MCP server exposing the Backtest360 engine API as tools for AI agents.

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
    35 PyPI
    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.
    8 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.
    -