MCP server providing tools for retrieving stock prices and historical stock data
Two tools with basic verb-noun naming (getLatestStockPrices, getHistoricalStockPrices) and minimal descriptions. Both descriptions are under 30 characters, failing the 10-1024 character guideline. Input schemas are present with typed parameters (string, integer) but lack depth. No output schema documentation visible. No error handling guidance, recovery paths, or parameter constraints (e.g., valid company names, day ranges). Tool annotations (readOnlyHint) are declared in metadata but not reflected in schema. No pagination support despite getHistoricalStockPrices returning lists. Descriptions do not explain WHEN to use each tool or what distinguishes them.
Historical daily stock prices
get actual stock prices
Descriptions are critically short (under 30 chars). 'get actual stock prices' and 'Historical daily stock prices' lack context for LLM tool selection. Should explain WHEN to use each tool, what data is returned, and any prerequisites.
No output schema documentation. LLMs cannot plan downstream calls or extract fields without knowing return structure. getHistoricalStockPrices returns List<DailyShareQuote> but this is not visible in tool metadata.
Parameter 'company' accepts free-form strings with no enum, validation, or format guidance. LLMs will hallucinate invalid company names. Should document valid formats or provide a discovery tool (list_supported_companies).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 36 | <=2025-11-25 | v2 |
getHistoricalStockPrices 'days' parameter has no bounds. LLMs may pass 0, negative, or absurdly large values (e.g., 999999). Should specify min/max range (e.g., 1-365 days).
No error handling guidance. If company not found or API fails, LLM receives raw exception. Should return actionable errors: 'Company "XYZ" not found. Try search_companies() or check ticker symbol format.'