Financial data server providing stock price, information, and income statement tools via Yahoo Finance integration
All three tools have basic descriptions and simple string-only parameter schemas, but fall short of production quality in multiple critical dimensions. Naming lacks action verbs (stock_price, stock_info, income_statement are noun-based), descriptions omit expected output formats and error guidance, and parameter descriptions are minimal. Schema definitions exist but are rudimentary (single string param, no validation). No error handling strategy is evident, and responses appear to be unstructured string concatenations rather than typed objects. Tools return verbose raw API output without shaping or pagination guidance.
This tool returns the quarterly income statement for a given stock ticker.
This tool returns information about a given stock given it's ticker.
This tool returns the last known price for a given stock ticker.
Tool names lack action verbs. 'stock_price', 'stock_info', 'income_statement' are nouns that obscure intent. Names should start with verbs like 'get_', 'fetch_', 'retrieve_' to signal the action clearly to LLMs.
Parameter descriptions are minimal. All three tools accept 'stock_ticker' but the description 'a alphanumeric stock ticker' lacks format constraints, examples, or guidance on validity.
No documented output schema. Tools return string concatenations (e.g., 'Stock price over the last month for {stock_ticker}: {last_months_closes}') with unstructured data. LLMs cannot parse or chain these outputs reliably.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 40 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 35 | - | v1 |
No error handling or recovery guidance. Tools call external yfinance API without visible try-catch, timeout handling, or error messages that guide LLM recovery (e.g., 'Ticker not found. Try search_tickers() first').
Tool descriptions include examples that LLMs may reuse literally rather than adapt. Example: 'Example payload: "NVDA"' and 'Example Response "NVDA: $100.21"' risk the LLM always passing NVDA or literal response strings.
Return data is verbose and unshapen. stock_price returns a full pandas Series as string; stock_info dumps entire .info dict; income_statement returns raw quarterly statement. High token cost, low signal.
No input validation visible. Tools accept any string as stock_ticker; yfinance API may return 404 or malformed data, but no validation or graceful degradation is evident.