yfinance
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@yfinanceget current stock price for AAPL"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Yahoo Finance Server
A production-ready Model Context Protocol (MCP) server providing comprehensive access to Yahoo Finance data through 18 specialized tools. Features intelligent caching, multi-market support, and complete type safety.
π Features
18 Comprehensive Tools - Complete coverage of pricing, financials, options, holders, and news
Intelligent SQLite Caching - Reduces latency by 90% with TTL-based cache management
Multi-Market Support - Works globally with configurable market normalization (US, BR, UK, DE, FR, JP, IN, HK, AU, CA, and more)
Type-Safe - Full Pydantic models with complete type hints throughout
Production-Ready - Robust error handling with custom exception hierarchy
Zero Configuration - Deploy instantly via
uvxwith no setup requiredAsync/Await - Optimized for concurrent operations
Related MCP server: MCP Yahoo Finance
π Quick Start
Installation via uvx (Recommended)
Add to your Claude Desktop configuration (claude_desktop_config.json):
{
"mcpServers": {
"yfinance": {
"command": "uvx",
"args": ["mcp-yfinance"],
"env": {
"YFINANCE_DEFAULT_MARKET": "US"
}
}
}
}Manual Installation
# Install with pip
pip install mcp-yfinance
# Or install from source
git clone https://github.com/yourusername/mcp-yfinance.git
cd mcp-yfinance
pip install -e .π οΈ Configuration
Market Selection
Set your default market via environment variable:
# US stocks (default)
export YFINANCE_DEFAULT_MARKET=US
# Brazilian stocks (auto-adds .SA suffix)
export YFINANCE_DEFAULT_MARKET=BR
# UK stocks (auto-adds .L suffix)
export YFINANCE_DEFAULT_MARKET=UK
# Indian stocks - NSE (auto-adds .NS suffix)
export YFINANCE_DEFAULT_MARKET=IN_NSE
# Indian stocks - BSE (auto-adds .BO suffix)
export YFINANCE_DEFAULT_MARKET=IN_BSESupported Markets:
US- United States (no suffix)BR- Brazil (.SA)UK- United Kingdom (.L)DE- Germany (.DE)FR- France (.PA)JP- Japan (.T)IN_NSE- India NSE (.NS)IN_BSE- India BSE (.BO)HK- Hong Kong (.HK)AU- Australia (.AX)CA- Canada (.TO)
Cache Configuration
Cache is automatically created at ~/.mcp-yfinance/cache.db with the following TTLs:
Data Type | TTL | Use Case |
Current Quotes | 5 min | Real-time price tracking |
Option Chains | 5 min | Options trading |
News | 30 min | Recent news updates |
Stock Info | 1 hour | Company information |
Historical Data | 24 hours | Price history |
Financial Statements | 24 hours | Quarterly/annual reports |
Holders | 24 hours | Ownership data |
Recommendations | 24 hours | Analyst ratings |
π Available Tools
Pricing & Historical Data (6 tools)
1. get_current_stock_price
Get current stock price with day change information.
Input:
{
"symbol": "AAPL"
}Output:
{
"symbol": "AAPL",
"price": 234.56,
"change": 2.34,
"change_percent": 1.01,
"volume": 52487900,
"currency": "USD",
"timestamp": "2025-01-15T16:00:00"
}2. get_stock_price_by_date
Get closing price for a specific date.
Input:
{
"symbol": "MSFT",
"date": "2025-01-10"
}3. get_stock_price_date_range
Get price series for a date range.
Input:
{
"symbol": "GOOGL",
"start_date": "2025-01-01",
"end_date": "2025-01-15"
}4. get_historical_stock_prices
Get full OHLCV (Open, High, Low, Close, Volume) historical data.
Input:
{
"symbol": "TSLA",
"period": "1mo",
"interval": "1d"
}Supported periods: 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max
Supported intervals: 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo
5. get_dividends
Get complete dividend payment history.
6. get_stock_actions
Get all stock actions (dividends + splits).
Company Information (1 tool)
7. get_stock_info
Get comprehensive company information (~100 fields).
Output includes:
Company name, sector, industry
Market cap, enterprise value
P/E ratio, dividend yield
52-week high/low
Beta, trailing EPS
And much more...
Financial Statements (3 tools)
8. get_income_statement
Get income statement (DRE - DemonstraΓ§Γ£o de Resultados do ExercΓcio).
Input:
{
"symbol": "AAPL",
"freq": "yearly"
}Frequencies: yearly, quarterly, trailing
9. get_balance_sheet
Get balance sheet (BalanΓ§o Patrimonial).
10. get_cashflow
Get cash flow statement.
Holders & Ownership (1 tool)
11. get_holder_info
Get holder information with 6 different types.
Input:
{
"symbol": "NVDA",
"holder_type": "institutional_holders"
}Holder types:
major_holders- Major ownership percentagesinstitutional_holders- Institutional investorsmutualfund_holders- Mutual fund holdingsinsider_transactions- Recent insider tradesinsider_purchases- Insider buy transactionsinsider_roster_holders- Current insider roster
Options (2 tools)
12. get_option_expiration_dates
Get all available option expiration dates.
Output:
["2025-01-17", "2025-01-24", "2025-02-21", ...]13. get_option_chain
Get option chain for specific expiration date.
Input:
{
"symbol": "SPY",
"expiration_date": "2025-01-17",
"option_type": "both"
}Option types: calls, puts, both
Output includes:
Contract symbols
Strike prices
Last prices, bid, ask
Volume and open interest
Implied volatility
News & Analysis (5 tools)
14. get_news
Get recent news articles.
Output:
[
{
"title": "Apple announces new iPhone",
"summary": "...",
"url": "https://...",
"provider": "Reuters",
"publishedAt": "2025-01-15T10:30:00Z"
}
]15. get_recommendations
Get analyst recommendations and upgrades/downgrades.
Input:
{
"symbol": "TSLA",
"recommendation_type": "upgrades_downgrades",
"months_back": 12
}Recommendation types: recommendations, upgrades_downgrades
16. get_earning_dates
Get earnings announcement dates (past and future).
Input:
{
"symbol": "META",
"limit": 12
}17. get_stock_splits
Get historical stock split data.
Input:
{
"symbol": "AAPL"
}Output:
[
{
"date": "2020-08-31",
"ratio": 4.0
},
{
"date": "2014-06-09",
"ratio": 7.0
}
]18. get_analyst_price_targets
Get analyst price targets and estimates.
Input:
{
"symbol": "NVDA"
}Output includes:
Current price
Target mean, median, high, low
Number of analysts
Recommendation (buy/hold/sell)
π‘ Usage Examples
With Claude Desktop
User: What's the current price of Apple stock?
Claude: [Uses get_current_stock_price tool]
Apple (AAPL) is currently trading at $234.56, up $2.34 (1.01%) today.
User: Show me Microsoft's quarterly revenue for the last year
Claude: [Uses get_income_statement with freq="quarterly"]
Here's Microsoft's quarterly revenue...
User: Get Tesla call options expiring next month
Claude: [Uses get_option_expiration_dates, then get_option_chain]
Here are Tesla's call options for 2025-02-21...Brazilian Market Example
{
"mcpServers": {
"yfinance-br": {
"command": "uvx",
"args": ["mcp-yfinance"],
"env": {
"YFINANCE_DEFAULT_MARKET": "BR"
}
}
}
}User: Qual o preΓ§o atual de PETR4?
Claude: [Automatically normalizes to PETR4.SA]
Petrobras PN (PETR4.SA) estΓ‘ cotada a R$ 38.45...ποΈ Architecture
ββββββββββββββββββββββββββββββββββββ
β Claude Desktop / API Client β
β (User makes stock queries) β
ββββββββββββββ¬ββββββββββββββββββββββ
β stdio
ββββββββββββββΌββββββββββββββββββββββ
β server.py (MCP Protocol) β ββββ Tool registration
β - @server.list_tools() β Input validation
β - @server.call_tool() β Response formatting
ββββββββββββββ¬ββββββββββββββββββββββ
β
ββββββββββββββΌββββββββββββββββββββββ
β cache.py (Cache Layer) β ββββ TTL-based caching
β - Check cache by key β 5min: quotes
β - Return if valid β 1h: stock info
β - Pass through if miss β 24h: historical
ββββββββββββββ¬ββββββββββββββββββββββ
β (cache miss)
ββββββββββββββΌββββββββββββββββββββββ
β service.py (Business Logic) β ββββ YahooFinanceService
β - Normalize ticker β Input validation
β - Call yfinance β Data transformation
β - Map to Pydantic models β Error handling
β - Save to cache β Market normalization
ββββββββββββββ¬ββββββββββββββββββββββ
β
ββββββββββββββΌββββββββββββββββββββββ
β yfinance library β
β (Yahoo Finance API) β
ββββββββββββββββββββββββββββββββββββProject Structure
mcp-yfinance/
βββ src/
β βββ mcp_yfinance/
β βββ __init__.py # Version, exports, main()
β βββ __main__.py # CLI entry point
β βββ server.py # MCP server orchestration
β βββ service.py # Business logic (18 methods)
β βββ models.py # Pydantic schemas + Enums
β βββ cache.py # SQLite cache manager
β βββ exceptions.py # Custom exception hierarchy
β βββ utils.py # Helper functions
β βββ config.py # Configuration management
β βββ py.typed # Type checking marker
βββ tests/ # Test suite
βββ pyproject.toml # Package configuration
βββ README.md # This fileπ§ͺ Development
Setup Development Environment
# Clone repository
git clone https://github.com/yourusername/mcp-yfinance.git
cd mcp-yfinance
# Install with dev dependencies
pip install -e ".[dev]"
# Or with uv (recommended)
uv pip install -e ".[dev]"Running Tests
# Run all tests
pytest
# Run with coverage
pytest --cov=mcp_yfinance --cov-report=html
# Run specific test file
pytest tests/test_service.pyType Checking
# Run mypy
mypy src/mcp_yfinance
# Run ruff (linter + formatter)
ruff check src/mcp_yfinance
ruff format src/mcp_yfinanceTesting the Server
# Run server directly
python -m mcp_yfinance
# Test with MCP Inspector
npx @modelcontextprotocol/inspector uv run mcp-yfinance
# Test with environment variable
YFINANCE_DEFAULT_MARKET=BR python -m mcp_yfinanceπ§ Troubleshooting
Common Issues
Issue: "Ticker not found"
Make sure the ticker symbol is correct
Check if you're using the right market (US vs BR vs UK, etc.)
Some tickers may not be available on Yahoo Finance
Issue: "Cache permission denied"
Ensure
~/.mcp-yfinance/directory is writableCheck disk space
Issue: "Module not found"
Reinstall package:
pip install --force-reinstall mcp-yfinanceCheck Python version (requires β₯3.10)
Issue: "SSL certificate verification failed"
Set
verify=Falsein service initialization (not recommended for production)Update CA certificates:
pip install --upgrade certifi
π€ Contributing
Contributions are welcome! Please follow these guidelines:
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Write tests for new functionality
Ensure all tests pass (
pytest)Run type checking (
mypy src/mcp_yfinance)Format code (
ruff format)Commit changes (
git commit -m 'Add amazing feature')Push to branch (
git push origin feature/amazing-feature)Open a Pull Request
Code Standards
All code in English (comments, docstrings, variable names)
Complete type hints on all functions
Google-style docstrings
Test coverage β₯80%
Pass mypy strict mode
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Acknowledgments
yfinance - Yahoo Finance API wrapper
MCP - Model Context Protocol
Pydantic - Data validation
Anthropic - Claude AI
π Support
Issues: GitHub Issues
Discussions: GitHub Discussions
Email: your.email@example.com
πΊοΈ Roadmap
v0.2.0 (Planned)
Advanced retry logic with exponential backoff
Rate limiting protection
WebSocket support for real-time quotes
Additional markets (CN, KR, TW, etc.)
v0.3.0 (Future)
Multiple data sources (Alpha Vantage, IEX Cloud)
Backtesting tools
Technical indicators (RSI, MACD, Bollinger Bands)
Portfolio tracking
π Performance
Benchmarks (on average hardware):
Operation | Without Cache | With Cache | Improvement |
Get Stock Price | 450ms | 15ms | 96% faster |
Get Historical Data | 1200ms | 20ms | 98% faster |
Get Option Chain | 800ms | 18ms | 97% faster |
Get Financial Statements | 950ms | 25ms | 97% faster |
Cache hit rate: ~85% after 1 hour of usage
Made with β€οΈ for the MCP community
Available Tools
18 toolsget_analyst_price_targetsC
Get analyst price targets and recommendations summary.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries full burden. The one-line description lacks behavioral details such as data sources, aggregation method, or whether it provides a single summary or historical data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise one-sentence description. However, it may be too brief, lacking important details that could be included without excessive length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input (one string parameter) and no output schema, the description is minimally complete. However, it fails to explain what the returned 'summary' contains, leaving ambiguity for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter 'symbol' with standard description 'Stock ticker symbol.' The description adds no additional 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get analyst price targets and recommendations summary,' indicating the tool retrieves a summary of analyst price targets and recommendations. It distinguishes from siblings like get_recommendations which may provide more detailed recommendation data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidelines on when to use this tool vs. alternatives like get_recommendations. The description only states the action without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balance_sheetC
Get balance sheet for a stock.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol. | |
| freq | No | Frequency - "yearly" or "quarterly". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description discloses no behavioral traits such as data freshness, read-only nature, rate limits, or pagination. The burden falls on the description, which fails to deliver.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one sentence), which is efficient but lacks structure. It misses important details like parameter usage or output expectations, making it minimally adequate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description should explain what the balance sheet includes (e.g., assets, liabilities, equity). It also fails to clarify the freq parameter's effect. The description is incomplete for a tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds no meaning beyond the schema's definitions for symbol and freq. Baseline 3 is appropriate because the schema already documents both parameters adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'balance sheet for a stock,' making the purpose unambiguous. However, it does not mention the optional frequency parameter, which could differentiate it from siblings like get_income_statement or get_cashflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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_income_statement, get_cashflow) or when to include the freq parameter. The description is a single sentence without any context on selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cashflowC
Get cash flow statement for a stock.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol. | |
| freq | No | Frequency - "yearly" or "quarterly". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fails to disclose any behavioral traits such as data freshness, rate limits, or whether the call is idempotent. The agent is left uninformed about side effects or reliability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one sentence). It is efficient and front-loaded, but could benefit from a brief elaboration on output without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too sparse given the lack of output schema. It does not explain what fields or structure the cash flow statement will contain, leaving the agent without enough context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage and includes descriptive parameter names and an enum for freq. The description adds no additional meaning, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves a cash flow statement using a verb-resource structure. However, it does not differentiate this tool from siblings like get_income_statement or get_balance_sheet, all of which retrieve financial statements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, nor any prerequisites or conditions. The agent has no context about the tool's applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_stock_priceB
Get the current stock price for a given symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol (e.g., "AAPL", "PETR4"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the full burden. It does not disclose behavioral traits such as data freshness (real-time vs delayed), dependency on market hours, error handling for invalid symbols, or rate limits. The agent lacks critical context for usage decisions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded with the essential action and resource. However, it may be overly minimal, lacking details that could fit without clutter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature (one parameter, no output schema, no annotations), the description provides basic purpose but omits necessary context like whether the price is real-time, during market hours, or for any exchange. More context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description for the single parameter 'symbol'. The description adds no extra meaning beyond the schema (e.g., the example values are already in the schema). Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get the current stock price for a given symbol' clearly states the verb (get), resource (stock price), and scope (current, for a given symbol). It distinguishes itself from siblings like get_historical_stock_prices by specifying 'current'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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_stock_price_by_date). There are no prerequisites, exclusion criteria, or contextual hints about market hours or data freshness.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dividendsB
Get dividend history for a stock.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full burden for behavioral disclosure but only states basic purpose. No mention of output format, historical range, or any limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is very concise, but could be slightly expanded for clarity without losing efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Minimally complete: explains purpose sufficiently for a one-parameter tool, but lacks detail on output or constraints, especially given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'symbol', so baseline is 3. The description adds no extra meaning beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'dividend history' for a stock, distinguishing it from other stock-related tools like get_stock_splits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 such as get_historical_stock_prices or get_current_stock_price. The description lacks any context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_earning_datesA
Get upcoming and historical earnings dates for a stock.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol. | |
| limit | No | Maximum number of earnings dates to retrieve. |
TDQS
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 states the tool returns both upcoming and historical dates, but does not disclose any authentication needs, rate limits, data range limitations, or behavior nuances beyond the basic description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that contains no unnecessary words. It is front-loaded with the key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of a clear input schema, the description is minimally adequate. However, it does not explain the output format or behavior (e.g., ordering, date range), which could be helpful for an AI agent. Adding a note about what the returned data looks like would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for both parameters (symbol and limit) with 100% coverage. The description does not add additional meaning beyond what the schema already offers, such as clarifying how the limit applies to upcoming vs. historical dates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get upcoming and historical earnings dates for a stock.' It uses a specific verb and resource, and distinguishes it from sibling tools that focus on other financial data like analyst price targets or balance sheets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for retrieving earnings dates, but does not provide guidance on when to use it versus alternatives like get_news for earnings reports. No explicit when-to-use or when-not-to-use context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_historical_stock_pricesB
Get historical stock prices for a given period and interval.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol. | |
| period | No | Time period (e.g., "1mo", "1y", "max"). | |
| interval | No | Data interval (e.g., "1d", "1wk", "1mo"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavior. It only states the basic function, omitting details like return format (e.g., open/close prices), compatibility constraints between period and interval, or any rate limits. This bare minimum fails to inform the agent of behavioral nuances.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 11 words, front-loading the verb and resource. Every word is necessary, and there is no fluff or redundancy. It is optimally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with full schema coverage, the description is adequate but incomplete. It fails to mention important context such as valid period-interval combinations or the structure of the returned data (e.g., OHLCV). Given no output schema, this adds a gap in understanding the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with each parameter having a basic description (e.g., 'Stock ticker symbol.'). The tool description adds no additional meaning beyond restating the period and interval. Baseline is 3, and no extra value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'historical stock prices', and the constraints 'period and interval'. It differentiates from siblings like balance sheet or news, but does not explicitly distinguish from similar sibling tools such as get_stock_price_date_range, leaving slight ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., get_current_stock_price for current prices, get_stock_price_by_date for a single date). It lacks context on typical use cases or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_holder_infoB
Get holder and ownership information for a stock.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol. | |
| holder_type | Yes | Type of holder information to retrieve. Options: - "major_holders": Major shareholders overview - "institutional_holders": Institutional ownership details - "mutualfund_holders": Mutual fund ownership details - "insider_transactions": Insider trading activity - "insider_purchases": Insider purchase transactions - "insider_roster_holders": Current insider roster |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. However, it merely states 'Get... info' without disclosing whether the operation is read-only, has any side effects, or requires specific permissions. This leaves the agent without crucial context for invoking the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence. While it avoids verbosity, it lacks any structural elements (e.g., bullet points or sections) that could improve readability for the agent. It is minimally adequate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the holder_type enum (six options) and the lack of an output schema, the description is too brief. It does not explain what each type returns or how to interpret the results, leaving the agent potentially confused about the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with clear descriptions for both parameters, including an enum for holder_type. The description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the verb 'Get' and the resource 'holder and ownership information for a stock', making the tool's function unambiguous. It effectively distinguishes from sibling tools like get_stock_info by focusing specifically on holders and ownership.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as the other financial data tools in the sibling list. It lacks any context about appropriate use cases or conditions for selecting specific holder_type values.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_income_statementC
Get income statement for a stock.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol. | |
| freq | No | Frequency - "yearly" or "quarterly". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. It only states 'get', implying read-only, but does not disclose return format, data scope, error handling, or any side effects. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words. It is appropriately concise for a simple tool, though it could benefit from slightly more context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite low complexity and no output schema, the description fails to explain what the income statement contains, how it is structured, or any limitations. Incomplete for a financial data tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 both parameters. The description adds no additional meaning beyond the schema, resulting in a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves an income statement for a stock, using a specific verb and resource. However, it does not differentiate from sibling tools like get_balance_sheet or get_cashflow, missing the chance to clarify its unique purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. The description lacks context about the income statement's role or typical use cases, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_newsB
Get recent news articles for a stock.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavioral traits. It does not mention that this is a read-only operation, any authentication requirements, rate limits, or what 'recent' means (e.g., last 24 hours, last week). The term 'recent' is vague and lacks precision.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence with no superfluous words. It is concise and gets straight to the point, which is appropriate for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and no output schema, but the description does not hint at the return format (e.g., list of headlines, articles with links) or define 'recent'. These omissions leave some ambiguity, but the basic purpose is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a clear parameter description ('Stock ticker symbol.'). The tool description adds no extra meaning beyond what the schema provides, which is acceptable given the simplicity. It neither enhances nor detracts from parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'recent news articles', and the target 'a stock'. It distinguishes this tool from sibling tools that retrieve specific financial data like prices, balance sheets, or earnings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 over alternatives. With 18 sibling tools, the description should specify contexts (e.g., 'Use this to get market sentiment or breaking news') or exclude cases (e.g., 'Not for historical news analysis').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_option_chainB
Get option chain data for a specific expiration date.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol. | |
| expiration_date | Yes | Option expiration date (YYYY-MM-DD format). | |
| option_type | No | Type of options - "calls", "puts", or "both". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the general function, lacking details on what the return data contains, potential errors (e.g., invalid symbol), rate limits, or any side effects. This is insufficient for a data retrieval tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that directly states the tool's purpose with no extraneous words. It is concise and front-loaded with the key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has three parameters, no output schema, and no annotations, the description should provide more context about the returned data, error behavior, or usage notes. It is too brief to be fully useful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage, and the parameters are well-described in the schema. The description adds 'for a specific expiration date' but does not elaborate on the meaning or constraints of the parameters beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves option chain data for a specific expiration date. It uses a specific verb 'Get' and resource 'option chain data', and the purpose is distinct from sibling tools that focus on stock prices, financials, or option expiration dates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing option chain data for a given expiration, but it does not explicitly state when to use this tool versus siblings like 'get_option_expiration_dates' or other stock data tools, nor does it mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_option_expiration_datesC
Get available option expiration dates for a stock.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the purpose without mentioning whether the operation is read-only, the format of dates, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that quickly conveys the tool's function. It is front-loaded but could include more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema), the description is adequate but minimal. It does not explicitly clarify that only expiration dates are returned, not the full option chain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the 'symbol' parameter described. The description does not add additional meaning beyond the schema, meeting the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves option expiration dates for a stock, using a specific verb and resource. However, it does not differentiate from the sibling tool 'get_option_chain', which may also 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_option_chain'. There is no mention of prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recommendationsC
Get analyst recommendations for a stock.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol. | |
| recommendation_type | No | Type of recommendations - "recommendations" or "upgrades_downgrades". | |
| months_back | No | Number of months of historical recommendations to retrieve. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is the sole source for behavioral traits. It does not disclose that this is likely a read-only operation, any rate limits, or data freshness. The tool's behavior is implied but not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence without extraneous words. However, it could be slightly expanded to include critical usage context without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters, no output schema, and many sibling tools, the description is insufficient. It does not explain return format, pagination, or how the 'months_back' parameter interacts with other tools. The tool feels incomplete for effective selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds 'for a stock' which reinforces the schema's required 'symbol'. However, the enum values for 'recommendation_type' are only partially explained in the schema description, and the description does not clarify the missing 'recommendations_summary' option.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get analyst recommendations for a stock', specifying the verb (Get) and resource (analyst recommendations). However, it does not distinguish itself from the sibling tool 'get_analyst_price_targets', which could be confused with recommendations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 vs alternatives like 'get_analyst_price_targets' or other financial data tools. There is no mention of prerequisite knowledge or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_actionsB
Get stock actions (splits and dividends) history.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must fully convey behavioral traits. It only states the action without disclosing whether results are limited, how history is ordered, or any constraints like pagination 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently communicates the core action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool without output schema, the description is adequate but lacks context regarding how it relates to sibling tools (e.g., whether it returns both splits and dividends in one call). This omission reduces completeness given the tool set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'symbol' is already described in the schema as 'Stock ticker symbol.' The description adds no further context beyond the schema, achieving baseline 3 due to 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get stock actions (splits and dividends) history,' specifying the verb and resource with examples. However, it does not differentiate from sibling tools like get_dividends and get_stock_splits, which serve more specific purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. With sibling tools that cover subsets of this functionality, the agent lacks direction on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_infoC
Get comprehensive stock information and metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. The description only mentions fetching information, which implies a read operation, but does not discuss data freshness, rate limits, or any side effects. This is insufficient for a tool returning 'comprehensive' data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no waste, but it is overly terse, omitting important details that would justify its length. It is concise but at the expense of clarity and completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's broad name and lack of output schema, the description fails to specify what 'comprehensive' includes (e.g., price, fundamentals, metadata). With numerous sibling tools providing specific data, the description should clarify the scope but does not, leaving the agent uncertain about the tool's coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'symbol' has a schema description of 'Stock ticker symbol.', which is adequate but minimal. The tool description does not add additional meaning beyond the schema (e.g., format requirements, case sensitivity). With 100% schema coverage, the baseline score is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it provides 'comprehensive stock information and metadata', which indicates a broad overview. However, 'comprehensive' is vague and does not specify what exactly is included, nor does it differentiate from the many sibling tools that offer specific stock data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 the extensive list of sibling tools (e.g., get_current_stock_price, get_balance_sheet). The agent is left to infer that this tool aggregates general info, but no explicit when-to-use or when-not-to-use advice is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_price_by_dateB
Get the stock price for a specific date.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol. | |
| date | Yes | Date in YYYY-MM-DD format. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden for behavioral disclosure. It only says 'get the stock price' without clarifying the type of price (e.g., closing, adjusted), handling of non-trading days, or potential errors. This is insufficient for safe and correct invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. However, it could be slightly more informative without becoming verbose, so a 4 (not a 5) reflects that it is efficient but not optimally helpful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 parameters and no output schema, the description is minimal. It does not explain return values, edge cases (e.g., holidays), or error handling. Given the context of 17 sibling tools, more detail would aid selection and use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description adds no additional meaning beyond the schema; it simply restates the purpose. Baseline score of 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get the stock price for a specific date.' It specifies the verb (get), resource (stock price), and scope (specific date), distinguishing it from siblings like get_current_stock_price (no date) and get_stock_price_date_range (date range).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. The description does not indicate when to use this tool over alternatives (e.g., get_current_stock_price for latest price, get_historical_stock_prices for multiple dates), nor does it mention any prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_price_date_rangeB
Get stock prices for a date range.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol. | |
| start_date | Yes | Start date in YYYY-MM-DD format. | |
| end_date | Yes | End date in YYYY-MM-DD format. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description does not disclose any behavioral traits beyond basic operation (no side effects, rate limits, or prerequisites mentioned). For a read operation, the description should at least hint at being 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is very concise (one sentence), but context with 3 parameters and no annotations could benefit from slightly more detail. It is appropriately front-loaded but may be too minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has many siblings and no output schema. Description does not explain return format or key behavioral details, leaving gaps for an agent to fully understand usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are fully described in the schema. Description adds no additional meaning beyond the schema, meeting baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states it gets stock prices for a date range, which clearly distinguishes it from sibling get_stock_price_by_date (single date). The verb 'Get' and resource 'stock 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. It is implied that this tool is for date ranges, but no alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_splitsB
Get stock split history for a stock.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only states it returns history without details on output format, date range, or behavioral traits. Fails to add beyond the basic purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise but lacks necessary detail. Not too verbose, but could be more informative without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 1 parameter, the description is insufficient for an agent to understand the result or use the tool correctly among many siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for 'symbol'. Description adds no extra meaning beyond reinforcing the function.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves stock split history for a stock, specifying the verb and resource. It differentiates from siblings like dividends or price history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. Lacks context about prerequisites or exclusions.
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.
18 tool updates
v0.1.4- First observed
get_analyst_price_targets - First observed
get_balance_sheet - First observed
get_cashflow - First observed
get_current_stock_price - First observed
get_dividends - First observed
get_earning_dates - First observed
get_historical_stock_prices - First observed
get_holder_info - First observed
get_income_statement - First observed
get_news - First observed
get_option_chain - First observed
get_option_expiration_dates - First observed
get_recommendations - First observed
get_stock_actions - First observed
get_stock_info - First observed
get_stock_price_by_date - First observed
get_stock_price_date_range - First observed
get_stock_splits
TDQS
Scored across 18 tools
Each tool has a distinct, clearly defined purpose with no overlap. For example, get_current_stock_price, get_stock_price_by_date, and get_stock_price_date_range target different price queries, while financial statements (get_balance_sheet, get_income_statement, get_cashflow) are unique.
All tools follow a consistent 'get_' prefix followed by descriptive snake_case noun phrases. No mixing of convention or verb styles.
18 tools is slightly above the typical sweet spot (3-15) but still reasonable for a comprehensive financial data API. Each tool contributes to a well-scoped domain without feeling excessive.
The tool surface covers all major aspects of stock data: prices (current/historical/by date), financial statements, dividends, splits, options, analysts, news, holder info, and metadata. No obvious gaps for fundamental stock analysis.
Maintenance
Related MCP Connectors
MCP server for stocksense-ai documentation, generated by doc2mcp.
Research-only MCP server: your AI as a quant research desk. 90 tools, no trades, no brokers.
Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
The Octagon MCP server provides specialized AI-powered financial research and analysis by integrating with the Octagon Market Intelligence API. It enables users to analyze public market data (SEC filings, earnings transcripts, financial metrics, and stock data for 8000+ companies), private market data (3M+ companies, 500k+ funding rounds, 2M+ M&A/IPO transactions), and conduct deep research including web scraping capabilities. The server also features autonomous research agents that search hundreds of sources and return fully cited reports in approximately one minute.
Related MCP Servers
- AlicenseBqualityBmaintenanceA Model Context Protocol server that enables interaction with Yahoo Finance to retrieve stock pricing, company information, and historical financial data through natural language queries.101,798 PyPI29MIT
- AlicenseCqualityNot gradedmaintenanceA Model Context Protocol server that provides tools for interacting with Yahoo Finance, allowing users to retrieve stock prices, company information, and perform financial data comparisons.11MIT
- AlicenseCqualityDmaintenanceA Model Context Protocol server providing comprehensive financial data from Yahoo Finance, allowing users to retrieve detailed stock information, financial statements, options data, and market news.34MIT
- FlicenseNot gradedqualityCmaintenanceFinancial MCP server providing 15 tools for stock quotes, financials, risk metrics, news sentiment, SEC filings, and session summaries via Yahoo Finance data.-