Skip to main content
Glama
christianGRogers

yahoo-finance-mcp-server

Yahoo Finance MCP Server

I built this at purpose invest because fuck bloomberg but realized having claude call the yahoo python library was more efficient so this is kinda pointless

An MCP server that exposes the full Yahoo Finance data surface to AI agents, backed by the yfinance library. No API key required.

Note on the "Yahoo Finance API": Yahoo retired its official public finance API years ago. This server uses yfinance, which wraps Yahoo's internal query1/query2.finance.yahoo.com endpoints (handling cookie/crumb auth for you). It is the most complete free way to access Yahoo's data, but it is unofficial — endpoints can change or rate-limit without notice.

Live deployment

A hosted instance is deployed and running at:

https://janus.bradensbay.com/mcp

It speaks MCP over streamable HTTP. Add it to Claude Code with one command — no local install required:

claude mcp add --transport http --scope project yahoo-finance https://janus.bradensbay.com/mcp

--scope project writes the server to this project's .mcp.json so it's shared with anyone who checks out the repo. Drop the flag for a personal (per-user) entry, or use --scope user to make it available across all your projects.

Verify the connection:

claude mcp list            # lists configured servers + reachability
claude mcp get yahoo-finance

Quick health check of the endpoint itself (expects HTTP 200):

curl -i -X POST https://janus.bradensbay.com/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}'

Prefer running your own instance (locally over stdio, or self-hosted over HTTP)? See Installation and Deployment below.

Related MCP server: openmarkets

What the agent can see

Every major data category Yahoo Finance serves is exposed as a tool:

Tool

Data

get_quote

Fast price snapshot (last/open/high/low, volume, market cap, 52-wk range)

get_ticker_info

Full company/security profile (.info): sector, ratios, margins, targets, summary

get_isin

ISIN identifier

get_historical_prices

OHLCV history by period or date range, any interval (1m → 3mo)

download_multiple

Batch historical prices for many symbols at once

get_corporate_actions

Dividends, splits, capital gains

get_financial_statements

Income statement / balance sheet / cash flow (annual & quarterly)

get_earnings

Earnings calendar & dates, EPS/revenue estimates, EPS trend & growth

get_analyst_data

Recommendations, price targets, upgrades/downgrades

get_holders

Major / institutional / mutual-fund holders + insider activity

get_shares

Historical shares outstanding

get_sustainability

ESG risk scores

get_option_expirations

Available option expiry dates

get_option_chain

Calls & puts (strike, IV, OI, volume, bid/ask) for an expiry

get_news

Recent related news articles

get_sec_filings

Recent SEC filings with document links

get_fund_data

ETF/mutual-fund holdings, allocations, sector weights, bond ratings

search

Resolve a name → symbol; matching quotes + news

lookup

Enumerate instruments by type (stock/etf/index/currency/crypto/…)

get_sector

Sector overview, top companies/ETFs, industries

get_industry

Industry overview, top performing/growth companies

get_market_status

Market open/closed status & index summary by region

screen_predefined

Preset screens (day_gainers, most_actives, …)

screen_custom

Custom numeric screen (e.g. market cap > $1B)

Tickers use Yahoo symbols: AAPL, MSFT, BTC-USD, ^GSPC, EURUSD=X.

Installation

Requires Python 3.10+.

python3 -m venv .venv
source .venv/bin/activate
pip install -e .

Running

The server speaks MCP over stdio:

yahoo-finance-mcp
# or
python -m yahoo_finance_mcp

Claude Desktop / Claude Code config

Add to your MCP client config (e.g. claude_desktop_config.json):

{
  "mcpServers": {
    "yahoo-finance": {
      "command": "/absolute/path/to/yahoo-finance-mcp-server/.venv/bin/python",
      "args": ["-m", "yahoo_finance_mcp"]
    }
  }
}

Or, with Claude Code:

claude mcp add yahoo-finance -- /absolute/path/to/.venv/bin/python -m yahoo_finance_mcp

Deployment (HTTP, port 8081)

For remote/agent access the server can run over streamable HTTP instead of stdio. Transport and binding are controlled by env vars:

Var

Default

Purpose

MCP_TRANSPORT

stdio

streamable-http (or sse) to serve over HTTP

MCP_HOST

0.0.0.0

bind address

MCP_PORT

8081

listen port

Run it directly:

MCP_TRANSPORT=streamable-http MCP_PORT=8081 python -m yahoo_finance_mcp
# endpoint: http://<host>:8081/mcp

Automated deploy via SSH

deploy/deploy.sh ships the code to a remote host, installs it, and (re)starts it on port 8081 with a health check. It authenticates over SSH using these GitHub repository secrets:

Secret

Meaning

DEPLOY_SSH_HOST

remote endpoint (host/IP)

DEPLOY_SSH_PORT

SSH port

DEPLOY_SSH_USER

SSH username

DEPLOY_SSH_PASSWORD

SSH password

Python is auto-provisioned. The script needs Python ≥ 3.10. It first scans the remote for any installed interpreter that qualifies (python3.103.13, including /usr/local/bin). If none is found — e.g. on Raspberry Pi OS Bullseye, which ships only Python 3.9.2 — it installs build deps and compiles CPython (default 3.11.9, override with PYTHON_BUILD_VERSION) to /usr/local via make altinstall. This one-time bootstrap takes ~15–40 min on a Pi; subsequent deploys detect the installed interpreter and skip it.

Building requires root: it works if the deploy user has passwordless sudo, otherwise it falls back to sudo -S using DEPLOY_SSH_PASSWORD. You can still set PYTHON_BIN to force a specific interpreter; it's used if it qualifies.

The .github/workflows/deploy.yml workflow runs the script on every push to main (and on manual workflow_dispatch). To run it by hand:

DEPLOY_SSH_HOST=1.2.3.4 DEPLOY_SSH_PORT=22 \
DEPLOY_SSH_USER=pi DEPLOY_SSH_PASSWORD=secret \
PYTHON_BIN=python3.11 \
./deploy/deploy.sh

The script clones/updates the repo, builds a venv, stops any prior instance on the port, starts the server detached (setsid, survives disconnect, logs to server.log), then verifies POST /mcp returns 200.

Notes & limitations

  • Unofficial data source. Yahoo may rate-limit or change responses. Tools return a structured {"error": ...} payload instead of crashing when a call fails, so the agent can react.

  • Intraday history is range-limited by Yahoo (e.g. 1m data only for the last few days).

  • Data is provided for informational purposes; respect Yahoo's Terms of Service. Not investment advice.

Development

pip install -e .
python -c "from yahoo_finance_mcp.server import mcp; print(len(mcp._tool_manager.list_tools()), 'tools')"

Available Tools

24 tools
download_multipleA

Download historical prices for MULTIPLE symbols at once.

Efficient batch alternative to calling get_historical_prices repeatedly. Returns a per-symbol dict of date-indexed OHLCV data.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
startNo
periodNo1mo
symbolsYes
intervalNo1d
auto_adjustNo

TDQS

A3.5/5.0
Behavior3/5

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

Describes return type ('per-symbol dict of date-indexed OHLCV data') and implies batch behavior, but no annotations were provided. With no annotations, the description should disclose more behavioral traits (e.g., rate limits, side effects), which it does not.

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: first states purpose, second gives usage guidance, third describes output. No wasted words, front-loaded with key information.

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

Completeness2/5

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

With 6 parameters, no output schema, and no annotations, the description lacks essential details about parameter formats, defaults, and edge cases. It is insufficient for a complex batched data retrieval tool.

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

Parameters1/5

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

Schema description coverage is 0%, meaning no parameter descriptions exist. The description only mentions 'symbols' implicitly and does not explain `start`, `end`, `period`, `interval`, or `auto_adjust`. The description adds virtually no meaning beyond the parameter names.

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?

Clearly states 'Download historical prices for MULTIPLE symbols at once,' which distinguishes it from the sibling `get_historical_prices` that handles single symbols. The verb 'download' and resource 'historical prices' are specific.

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?

Explicitly states it is an 'Efficient batch alternative to calling `get_historical_prices` repeatedly,' guiding the agent when to use this tool over the sibling. Lacks explicit when-not-to-use conditions, but the context is clear.

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

get_analyst_dataB

Get analyst recommendations, price targets and upgrade/downgrade history.

Returns recommendations and recommendations_summary (buy/hold/sell counts over recent months), analyst_price_targets (current/high/low/mean target), and upgrades_downgrades (firm-by-firm rating changes).

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided; description only lists return fields without behavioral details (e.g., authentication, error handling, rate limits). Does not disclose read-only nature or any side effects.

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

Conciseness4/5

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

Description is concise and front-loaded with the main purpose. Lists return fields efficiently, though bulleted structure would improve scannability.

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

Completeness3/5

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

With only one parameter and no output schema, the description partially compensates by listing return fields but lacks details on data structure, pagination, or error conditions.

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

Parameters2/5

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

Schema coverage is 0%; description does not elaborate on the 'symbol' parameter beyond repeating its name. No format, examples, or constraints provided.

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

Purpose5/5

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

Description clearly states the tool gets analyst recommendations, price targets, and upgrade/downgrade history, and lists specific return fields. Distinguishes from sibling tools like get_earnings or get_quote.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives (e.g., for stock price data use get_historical_prices). No exclusions or prerequisites mentioned.

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

get_corporate_actionsB

Get dividends, stock splits and capital gains history for a symbol.

Returns three date-keyed series: dividends (per-share amounts), splits (split ratios) and capital_gains (mainly for funds).

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses the return structure (three date-keyed series) but lacks information on rate limits, error handling, symbol validation, or data freshness. This provides moderate transparency but leaves gaps.

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

Conciseness5/5

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

The description is extremely concise: two sentences. The first sentence front-loads the core purpose, and the second provides necessary structural detail about the return series. No superfluous content.

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

Completeness3/5

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

Given the tool's simplicity (one parameter, no output schema), the description adequately covers the return types. However, it lacks context on parameter formatting, error states, or usage constraints, leaving some completeness gaps.

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

Parameters2/5

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

The schema has 0% description coverage for the single parameter 'symbol'. The description mentions 'for a symbol' but does not define the format (e.g., ticker, ISIN) or provide examples, leaving ambiguity. The description adds minimal value over the raw schema.

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

Purpose5/5

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

The description clearly states it retrieves dividends, stock splits, and capital gains history for a symbol. This verb+resource combination is specific and distinguishes from sibling tools which focus on other data types like earnings, quotes, or financial statements.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like get_historical_prices or get_quote. There are no usage prerequisites, exclusions, or context hints beyond the basic description.

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

get_earningsB

Get earnings calendar, upcoming/historical earnings dates and estimates.

Returns the calendar (next earnings & dividend dates), earnings_dates (reported vs estimated EPS per period with surprise %), and the various forward estimate tables (EPS estimate, revenue estimate, EPS trend & growth).

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It describes the return structure (calendar, earnings_dates, estimate tables) but does not mention behavioral traits like read-only nature, rate limits, or required permissions. It adds value beyond the schema but lacks deeper behavioral details.

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 two sentences long, listing the main outputs concisely. It is front-loaded and efficient, though it could be slightly more structured (e.g., bullet points for the three return components).

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

Completeness3/5

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

Given the tool's simplicity (one parameter, no output schema), the description adequately covers the return structure. However, it omits prerequisites (e.g., valid symbol), error conditions, and data range limitations (e.g., how far back history goes). More context would improve completeness.

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

Parameters2/5

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

The only parameter 'symbol' has no description in the schema (0% coverage). The tool description does not explain that 'symbol' is a ticker symbol, relying on the tool name. This fails to add meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the tool retrieves earnings calendar, dates, and estimates. It specifies the returned objects (calendar, earnings_dates, forward estimates) with details like reported vs estimated EPS and surprise percentage. This purpose is distinct from sibling tools such as get_analyst_data or get_financial_statements.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., get_analyst_data, get_financial_statements). The description only lists return values without contextual usage advice.

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

get_financial_statementsA

Get financial statements (income statement, balance sheet, cash flow).

statement selects one statement or "all" (default). freq toggles annual vs quarterly. Values are keyed by line item, with periods as columns. Data goes back several years/quarters depending on Yahoo coverage.

ParametersJSON Schema
NameRequiredDescriptionDefault
freqNoannual
symbolYes
statementNoall

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description attempts to disclose behavioral traits by explaining the output format ('Values are keyed by line item, with periods as columns') and data depth ('Data goes back several years/quarters'). However, it does not explicitly state that the operation is read-only, nor does it mention error handling or rate limits, leaving gaps in transparency.

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

Conciseness5/5

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

The description is extremely concise, using two short sentences and a parenthetical list of parameter explanations. No extraneous words, and the core purpose is stated first. Every sentence adds value.

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

Completeness3/5

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

Given no output schema and no annotations, the description covers the key aspects: purpose, parameter semantics, output structure, and data recency. However, it lacks details on error behavior, output data types, and potential limitations, making it only moderately complete for a tool of moderate complexity.

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

Parameters4/5

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

The input schema has no parameter descriptions (0% coverage). The description adds meaning by explaining `statement` (selects one statement or 'all') and `freq` (toggles annual vs quarterly), which are not obvious from the schema alone. `symbol` is self-explanatory. This significantly aids parameter understanding.

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

Purpose5/5

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

The description clearly states the tool retrieves financial statements including income statement, balance sheet, and cash flow. It specifies the verb 'Get' and the resource 'financial statements', and distinguishes itself from sibling tools like 'get_historical_prices' by focusing on a distinct financial data type.

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives such as 'get_earnings' or 'get_fund_data'. There is no explicit 'when-to-use' or 'when-not-to-use' advice, nor any mention of prerequisites or alternatives.

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

get_fund_dataA

Get ETF / mutual fund specifics: description, holdings, sector & asset allocation, top holdings, bond ratings and fund operations.

Only meaningful for funds/ETFs (e.g. SPY, VTI, QQQ). For ordinary stocks this returns little or an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool may return little or error for stocks, but does not detail other behavioral traits like expected response structure, performance, or any side effects. For a read-only getter tool, this is adequate but minimal.

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 short paragraphs: first lists what data is retrieved, second gives usage guidance. No redundant information. Every sentence adds value. Front-loaded with the core purpose.

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

Completeness4/5

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

Given the tool has only one parameter, no annotations, and no output schema, the description is fairly complete. It explains the tool's domain (funds/ETFs), what data it returns, and when it fails. It doesn't describe the return format, but that is acceptable without an output schema.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. However, it does not elaborate on the 'symbol' parameter beyond its presence in the schema. It gives context that the tool works for funds/ETFs, but does not add format, examples, or constraints for the symbol parameter. This is insufficient given the lack of schema descriptions.

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 'ETF / mutual fund specifics', and lists the types of data returned (description, holdings, allocation, etc.). It also distinguishes the tool by noting it's only meaningful for funds/ETFs, differentiating it from siblings that might work for stocks.

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

Usage Guidelines4/5

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

The description explicitly states when to use this tool ('Only meaningful for funds/ETFs') and what happens with ordinary stocks ('returns little or an error'). It provides examples (SPY, VTI, QQQ) but does not explicitly name alternatives for stocks, though that is implied.

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

get_historical_pricesA

Get historical OHLCV price data for a symbol.

Provide either period (e.g. "1y") OR an explicit start/end date range ("YYYY-MM-DD"); if start/end are given they take precedence over period. interval controls granularity — intraday intervals (1m..1h) are only available for recent ranges (Yahoo limits ~7-60 days). Returns a dict keyed by ISO timestamp with Open/High/Low/Close/Volume (and Dividends/Splits when actions is true). history_metadata includes timezone & instrument info.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
startNo
periodNo1mo
symbolYes
actionsNo
prepostNo
intervalNo1d
auto_adjustNo

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. Explains return format (dict keyed by ISO timestamp), included fields (OHLCV, dividends/splits), and metadata. Also covers parameter interactions and constraints (intraday range limits). Does not mention error handling or authentication, but covers core behavior well.

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?

Concise and well-structured: purpose first, then parameter usage guidelines in bullet-like style, and return format details. Every sentence adds value with no redundancy.

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

Completeness4/5

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

Given 8 parameters and no output schema, the description covers main usage patterns, constraints, and return structure. Lacks explicit enumeration of return fields but provides enough context for correct invocation. Minor omissions (like error handling) do not significantly impact completeness.

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 has 0% description coverage, so description must add meaning. It explains the key parameters: period vs start/end, interval granularity limitations, and actions flag. Does not detail prepost or auto_adjust, but main usage parameters are clarified.

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 'Get historical OHLCV price data for a symbol,' using a specific verb and resource. It distinguishes this tool from siblings like get_quote (current price) and others that provide different data types.

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

Usage Guidelines4/5

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

Provides clear instructions: use either period or start/end (with precedence), and explains interval limitations for intraday data. Does not explicitly mention when not to use or compare with siblings, but context is sufficient.

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

get_holdersA

Get ownership breakdown: major, institutional, mutual fund and insiders.

Returns major_holders (% insider/institutional), institutional_holders and mutualfund_holders (top holders with shares & value), plus insider data: insider_purchases, insider_transactions, insider_roster_holders.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description bears full responsibility for behavioral disclosure. It details the return structure (major_holders, institutional_holders, etc.) and the data fields included, which is informative. However, it does not mention data freshness, sources, or any potential side effects, but for a read-only retrieval tool, the provided detail is adequate.

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

Conciseness5/5

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

The description is two sentences, front-loading the purpose in the first sentence and listing return fields in the second. No unnecessary words, making it highly concise and effective.

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 no output schema, the description covers the main output categories. It could mention limitations (e.g., market coverage) but is reasonably complete given the tool's simplicity.

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

Parameters2/5

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

The only parameter is 'symbol', and the schema has 0% description coverage. The description does not explain that 'symbol' refers to a stock ticker (e.g., AAPL), leaving ambiguity. Given the low coverage, the description should compensate but fails to do so.

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 'Get ownership breakdown: major, institutional, mutual fund and insiders.' which clearly states the tool's purpose and distinguishes it from sibling tools like get_shares or get_ticker_info by specifying the exact type of ownership data returned.

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

Usage Guidelines3/5

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

The description implies usage for obtaining ownership data, but does not explicitly state when to use it versus alternatives such as get_shares or get_sustainability. No exclusions or prerequisites are mentioned, leaving the context partially unclear.

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

get_industryA

Get industry overview data by industry key (e.g. "semiconductors", "software-infrastructure", "biotechnology", "banks-diversified").

Returns the industry overview, top performing/growth companies and top ETFs.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided. Description mentions it returns overview, top companies, and top ETFs but lacks details on side effects, auth needs, or rate limits. As a read tool, it should explicitly state it is non-destructive.

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 with no waste: first sentence states purpose with examples, second lists return content. Front-loaded and efficient.

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

Completeness3/5

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

For a simple tool with no output schema, description explains basic functionality but omits response structure or error handling. Could elaborate on the format of returned data.

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?

Input schema has one required 'key' with no description. Description compensates with concrete examples (e.g., 'semiconductors'), adding meaning beyond the empty schema. No enums, but examples guide usage.

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

Purpose5/5

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

Description clearly states the tool retrieves industry overview data by key, with examples like 'semiconductors'. It distinguishes from siblings by focusing on industry-level data, not sectors or ticker info.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus siblings like get_sector or get_ticker_info. The description implies usage for industry overview but does not specify exclusions or alternatives.

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

get_isinC

Get the ISIN (International Securities Identification Number) for a symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

TDQS

C2.7/5.0
Behavior1/5

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

No annotations provided, and the description fails to disclose any behavioral traits such as authentication requirements, error handling for invalid symbols, or rate limits.

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

Conciseness3/5

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

The description is a single sentence, which is concise, but it lacks necessary detail to be fully useful.

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

Completeness2/5

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

Given the lack of annotations, output schema, and parameter details, the description is incomplete for an agent to reliably invoke the tool.

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

Parameters2/5

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

The description mentions 'symbol' but provides no additional meaning beyond the schema's field name. Schema coverage is 0%, and the description does not clarify expected format or constraints.

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

Purpose5/5

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

The description clearly states the tool retrieves the ISIN for a given symbol, distinguishing it from sibling tools like lookup or get_quote.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as lookup or search. The description does not specify prerequisites or exclusion criteria.

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

get_market_statusA

Get market status and summary for a region (e.g. "US", "GB", "ASIA", "EUROPE"). Returns whether the market is open and a summary of major indices.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNoUS

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It states the tool returns market open status and summary of major indices, which is basic behavioral info. However, it does not disclose potential errors, authentication needs, or whether the operation is read-only. Adequate for simple tool but not comprehensive.

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?

Single sentence with parenthetical examples is concise and front-loaded. No fluff; every part contributes to understanding.

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

Completeness3/5

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

Tool has simple input (1 param) and no output schema. Description covers input but return value is vague: 'summary of major indices' lacks structure detail. Given no output schema, more precise description of return format would improve completeness. Currently adequate but minimal.

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

Parameters5/5

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

Schema coverage is 0%, so description must compensate. It explains the 'market' parameter meaning with examples (e.g., US, GB, ASIA, EUROPE), adding significant value beyond the schema's title and default. This clearly defines valid values and usage.

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

Purpose5/5

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

Description clearly states it gets market status and summary for a region, with examples (US, GB, ASIA, EUROPE). This distinguishes it from sibling tools like get_quote (individual tickers) and get_historical_prices (time series). The verb 'get' and resource 'market status' are specific.

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

Usage Guidelines3/5

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

Description implies usage when needing regional market status and summary, but lacks explicit guidance on when not to use it or alternatives among siblings. No mention of prerequisites or context like requiring a region code.

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

get_newsC

Get recent news articles related to a symbol (title, publisher, link, time).

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
symbolYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations provided, so description must disclose behavioral traits. It mentions 'recent' but does not define the recency window. No information on authentication, rate limits, or error behavior.

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?

Single sentence with key fields listed in parentheses. Efficient and front-loaded, but could be slightly more structured with parameter explanations.

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

Completeness2/5

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

No output schema, yet description only lists a few fields. Lacks details on pagination, sorting, error handling, or additional response structure. Incomplete for a data retrieval tool.

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

Parameters1/5

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

Schema description coverage is 0%, yet description adds no meaning beyond the schema. 'symbol' and 'count' are not explained; no detail on how count affects results or expected format.

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

Purpose5/5

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

Description clearly states it gets recent news articles for a symbol and lists the fields returned (title, publisher, link, time). Distinct from sibling tools that retrieve other data types.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. Does not specify prerequisites, limitations, or comparison with sibling tools like get_quote or search.

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

get_option_chainA

Get the option chain (calls and puts) for a symbol and expiration date.

expiration is a "YYYY-MM-DD" date from get_option_expirations; if omitted the nearest expiry is used. Each contract includes strike, bid/ask, last price, volume, open interest, implied volatility and in-the-money flag.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes
expirationNo

TDQS

A4.4/5.0
Behavior4/5

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

Description details the returned data fields (strike, bid/ask, last, volume, open interest, implied volatility, in-the-money flag) and notes default expiration behavior. Despite lacking annotations, this provides sufficient transparency for a read operation.

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 convey purpose, parameter details, and return data efficiently. No extraneous information, well-front-loaded with purpose.

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 no annotations and no output schema, the description covers essential aspects: what the tool does, parameter behavior, and return fields. Minor gaps like error handling or invalid symbol behavior, but generally complete for a standard data retrieval tool.

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?

With 0% schema description coverage, the description compensates by specifying expiration format and default. Symbol is self-explanatory but not elaborated. Overall, it adds meaningful context beyond the schema.

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

Purpose5/5

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

Description clearly states the tool retrieves option chain data (calls and puts) for a symbol and expiration date. This is a specific action with a well-defined resource, distinguishing it from siblings like get_option_expirations which only provide expiration dates.

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

Usage Guidelines4/5

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

The description explains the expiration parameter format and default behavior, and references get_option_expirations as the source for valid dates. While it does not explicitly list when not to use the tool, the context implies its appropriate use case.

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

get_option_expirationsA

List the available option expiration dates for a symbol.

Pass one of these dates to get_option_chain to get the calls/puts table.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations provided; description does not disclose any behavioral traits such as side effects, rate limits, or response format. Bare minimum.

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, front-loaded sentences with no extraneous words. Clearly 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?

Given the simple single-parameter input and list output, the description effectively conveys the tool's role and relation to another tool. Lacks output format details, but acceptable for a list endpoint.

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

Parameters2/5

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

Schema has 0% description coverage for the 'symbol' parameter; description adds no extra meaning beyond the parameter name.

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

Purpose5/5

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

Description clearly states verb 'List' and resource 'available option expiration dates for a symbol'. It distinguishes from sibling tools by referencing get_option_chain as a downstream use.

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?

Description explains when to use the tool (to list expiration dates) and indicates a common next step (pass date to get_option_chain). Could be more explicit about when not to use.

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

get_quoteA

Get a fast, lightweight current-price snapshot for a symbol.

Returns last price, previous close, open, day high/low, volume, market cap, shares, currency, exchange and 52-week range via yfinance fast_info. Use this for quick price checks; use get_ticker_info for the full profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool is fast and lightweight, and enumerates the returned data fields. For a simple read operation, this is sufficient, though it doesn't mention potential failure modes or authentication.

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

Conciseness5/5

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

Three sentences, each earning its place: purpose, return fields, and usage guidance. Concise and front-loaded with the key action.

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

Completeness4/5

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

The description lists the main return fields, compensating for the lack of an output schema. For a simple snapshot tool with one parameter, it is reasonably complete. Could mention any limitations or caching behavior, but not essential.

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?

Only one parameter 'symbol' exists, and schema coverage is 0%. The description does not elaborate on the expected format (e.g., ticker symbol vs. ISIN). Since the parameter name is self-explanatory, it scores a baseline 3, but additional format guidance would improve 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 clearly states the tool gets a 'fast, lightweight current-price snapshot' and lists specific return fields. It distinguishes itself from the sibling `get_ticker_info`, which is for the full profile.

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?

Explicitly says 'Use this for quick price checks; use `get_ticker_info` for the full profile,' providing clear when-to-use and when-not-to-use guidance with a named alternative.

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

get_sec_filingsC

Get recent SEC filings (10-K, 10-Q, 8-K, etc.) with dates and document links.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description must disclose behavioral traits. It mentions 'recent SEC filings' but does not specify what 'recent' means, how many filings are returned, or any limitations like pagination or rate limits. The description also omits return format details.

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

Conciseness3/5

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

The description is a single sentence, which is concise, but it lacks essential details to be fully useful. It is not overly verbose, but it could be restructured to front-load key information without sacrificing brevity.

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

Completeness2/5

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

Given the tool's simplicity (one param, no output schema, no annotations), the description should explain what 'recent' means, the expected output format, and any constraints. It fails to do so, leaving significant gaps in context.

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

Parameters2/5

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

The input schema has zero description coverage, leaving the 'symbol' parameter undocumented. The description does not explain that 'symbol' is a stock ticker or provide any additional meaning beyond the schema, which is critical for correct usage.

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

Purpose5/5

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

The description explicitly states the verb 'Get', the resource 'SEC filings', and lists examples like 10-K, 10-Q, and 8-K. This clearly distinguishes it from sibling tools such as get_earnings or get_financial_statements.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like get_earnings or get_financial_statements. The description lacks any context for optimal usage or exclusions.

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

get_sectorA

Get sector overview data by sector key (e.g. "technology", "healthcare", "financial-services", "energy", "consumer-cyclical").

Returns the sector's overview, top companies, top ETFs/mutual funds, research reports and industry breakdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided. Description lists returned data (overview, top companies, ETFs, research, industry breakdown), but lacks details on side effects, authentication needs, or read-only nature.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose and examples, followed by response contents. No unnecessary words.

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

Completeness4/5

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

For a single-param tool with no output schema, description adequately covers functionality and return types. Missing details like pagination or limits, but not critical for this tool.

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 provides param 'key' with no description (0% coverage). Description adds meaning by explaining it's a sector key and providing examples, compensating for schema gap.

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

Purpose5/5

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

Description clearly states it gets sector overview data by sector key with specific examples (e.g., 'technology', 'healthcare'). It distinguishes from sibling tools by focusing on sector overview, not present in other get_* tools.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. No mention of when not to use or prerequisites for sector keys.

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

get_sharesC

Get historical shares outstanding over time (optionally a date range).

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
startNo
symbolYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations exist, and the description does not disclose behavioral traits such as read-only nature, error handling for invalid symbols, rate limits, or whether the data is real-time or delayed. The agent must infer it is a safe read operation, but no explicit confirmation.

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?

Single sentence with no wasted words; front-loaded with the core purpose.

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

Completeness2/5

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

Given 3 parameters, no output schema, and no annotations, the description leaves significant gaps: no explanation of return structure, whether data is daily or intraday, timeframe granularity, or handling of missing dates. The description is too minimal for a comprehensive understanding.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds minimal semantics: it mentions an optional date range via start/end but does not specify date format, constraints, or behavior when both are null. The meaning of symbol as a ticker is implied but not clarified.

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

Purpose4/5

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

The description clearly states the tool retrieves historical shares outstanding over time, optionally filtered by date range. However, it does not differentiate from siblings like get_historical_prices, which might also return historical data, though the specific resource (shares outstanding) is distinct.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., get_fund_data for different metrics). No prerequisites, limitations, or context for appropriate use are provided.

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

get_sustainabilityC

Get ESG / sustainability scores (environment, social, governance risk).

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must fully convey behavioral traits. It only states that the tool 'gets' scores, but does not disclose whether it is read-only, rate limits, data freshness, or the structure of the returned data. This is insufficient for safe use.

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 fluff. Every word contributes to the purpose, making it highly efficient for quick parsing.

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

Completeness3/5

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

For a simple tool with one parameter and no output schema, the description provides the core purpose but lacks details on return format, possible values, or error conditions. It is minimally adequate but leaves gaps for an agent needing to process the output.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds no information about the 'symbol' parameter beyond its existence. Although the parameter name is self-explanatory in context, the description fails to clarify format or constraints, requiring the agent to infer.

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

Purpose4/5

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

The description clearly states the tool retrieves ESG/sustainability scores and explicitly lists the components (environment, social, governance risk). It is specific and distinguishable from sibling tools that focus on other financial data.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus its siblings. The description does not indicate any prerequisites or criteria for use, leaving the agent without decision support for tool selection.

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

get_ticker_infoA

Get the full company/security profile dictionary for a symbol.

This is yfinance .info: a large dict with business summary, sector, industry, valuation ratios (PE, PEG, price-to-book), margins, dividend yield, beta, analyst target prices, address, employee count, and dozens of other fields. Best single source for fundamentals + descriptive data.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must cover behavioral traits. It explains the output is a large dictionary with various fields, which is useful, but does not address rate limits, authentication, or side effects. The read-only nature is implied by 'Get'.

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 main purpose and then details the output. The second paragraph lists many fields, which is informative but slightly verbose.

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 no output schema and one parameter, the description thoroughly lists the kinds of fields returned, making the tool's purpose and output clear. However, it lacks usage examples or error handling context.

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

Parameters2/5

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

With 0% schema description coverage, the description must compensate for parameter meaning. It only mentions 'a symbol' generically in the first sentence, providing no format, examples, or constraints for the symbol parameter.

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

Purpose5/5

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

The description clearly states the tool retrieves the full company/security profile for a symbol, listing many specific fields and mentioning it is yfinance .info. It distinguishes from siblings by emphasizing it as the best source for fundamentals and descriptive data.

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

Usage Guidelines4/5

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

The description implies usage for fundamentals and descriptive data, calling it the 'best single source', but does not explicitly state when not to use or provide alternatives.

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

lookupA

Look up instruments matching a query, optionally filtered by asset type.

More precise than search for enumerating instruments of a given type (e.g. all ETFs matching "gold"). Returns matching symbols with metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
queryYes
lookup_typeNoall

TDQS

A3.8/5.0
Behavior3/5

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

No annotations present, so description carries full burden. It notes returns 'matching symbols with metadata' but lacks specifics on behavior like data freshness or pagination.

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 sentences with no filler, immediately communicating purpose and key differentiator.

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

Completeness3/5

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

Adequate for a simple lookup tool but missing details on parameter semantics and return structure, which would help an agent use it correctly.

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

Parameters2/5

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

Schema description coverage is 0%, yet description only loosely mentions filtering by asset type, failing to explain 'query' format or 'count' default behavior.

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?

Clearly states the tool does instrument lookup with optional filtering by asset type. Explicitly distinguishes from sibling 'search' by claiming greater precision for enumerating specific types.

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

Usage Guidelines4/5

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

Provides clear context and an example ('all ETFs matching gold') and compares to 'search', but does not explicitly mention when not to use the tool.

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

screen_customA

Run a custom equity screen with a single numeric criterion + region.

Example: field="intradaymarketcap", operator="gt", values=[1e9] finds companies with market cap over $1B. Common fields: intradaymarketcap, intradayprice, dayvolume, trailingpe, pegratio, epsgrowth, dividendyield, percentchange. operator "btwn" expects two values [low, high]. Results are filtered to region (e.g. "us"). Sorted by sort_field if given.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
fieldYes
regionNous
valuesYes
operatorYes
sort_ascNo
sort_fieldNo

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It explains the screening behavior (filtering by criterion and region, sorting) and gives examples, but does not mention potential errors, rate limits, or what happens with no results.

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

Conciseness5/5

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

The description is very concise with two paragraphs: first presents purpose and example, second lists common fields and explains operators. Every sentence adds value.

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

Completeness4/5

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

With 7 parameters, no output schema, and no annotations, the description covers most behavioral aspects (filtering, sorting, region) but does not explain the output format or the 'count' parameter.

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 0%, but the description adds meaning to most parameters: lists common fields, explains operator 'btwn', gives example for values, and mentions region default. Only 'count' is left unexplained.

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 'Run a custom equity screen with a single numeric criterion + region' with a concrete example, clearly distinguishing from sibling tools like screen_predefined which are for predefined screens.

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

Usage Guidelines4/5

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

The description implies when to use (custom screen with one criterion) by contrasting with sibling tool names, but does not explicitly state when not to use or mention alternatives.

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

screen_predefinedA

Run a predefined Yahoo Finance stock/fund screen.

Handy preset screens like "day_gainers", "most_actives", "day_losers", "undervalued_growth_stocks", etc. Returns the matching quotes with key fields. For custom criteria use screen_custom.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
queryNomost_actives

TDQS

A4.2/5.0
Behavior3/5

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

No annotations; description says 'returns matching quotes with key fields' but lacks details on side effects, result format, or limits.

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 example list, front-loaded, no wasted words.

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

Completeness4/5

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

Sufficient for a simple tool with 2 parameters and no output schema, but could mention what 'key fields' are included in results.

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 0%; description provides example query values but does not explain count parameter or add details beyond schema defaults.

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?

Clearly states it runs predefined Yahoo Finance screens, lists examples like 'day_gainers', and distinguishes from screen_custom.

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?

Explicitly advises to use screen_custom for custom criteria, providing clear guidance on when 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.

TDQS

A3.6/5.0
Disambiguation4/5

Most tools target distinct data types (historical prices, quotes, earnings, etc.), but get_quote and get_ticker_info both provide price information, and lookup/search both find instruments, though descriptions clarify their specific uses.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case (e.g., get_historical_prices, search, screen_predefined), making usage predictable.

Tool Count5/5

24 tools cover a broad range of Yahoo Finance data without being excessive; each tool serves a specific purpose and the count is well-suited to the domain.

Completeness4/5

The set covers most major finance data categories (prices, fundamentals, options, holders, filings, news), but lacks some common features like technical analysis or portfolio tracking, which are minor gaps.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    A simple MCP server for Yahoo Finance using yfinance. This server provides a set of tools to fetch stock data, news, and other financial information.
    15
    187
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    A Model Context Protocol (MCP) server for agentic retrieval of financial data from Yahoo Finance, enabling stock information, historical data, analyst data, and more.
    71
    3
    AGPL 3.0
  • A
    license
    A
    quality
    A
    maintenance
    MCP server that exposes Yahoo Finance data through tools for searching instruments, fetching quotes, history, company info, financials, dividends, news, recommendations, and options. Enables AI assistants to answer market-data questions using natural language.
    2
    22
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server wrapping yfinance to provide stock market data, financials, and analytics via 24 tools.

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/christianGRogers/yahoo-finance-mcp-server'

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