MCP Server for financial analysis using Alpha Vantage and Financial Modeling Prep APIs
Two tools with solid schema definitions and reasonable descriptions, but missing critical elements for production use. Both tools have explicit input schemas with proper JSON Schema structure and type declarations. Tool descriptions are present and informative (119-132 chars, within the 10-1024 baseline range). However, neither tool has documented output schemas, the descriptions state what data is retrieved but don't specify the structure of the response fields returned by the handler. No error handling guidance (e.g., 'If symbol not found, try a different ticker'). Parameters generally well-constrained with enums where appropriate, but descriptions could be more prescriptive about formats and valid ranges. Missing tool annotations (readOnlyHint, etc.) despite both being read-only operations. No recovery guidance in error cases.
Get company fundamental data from Financial Modeling Prep
Get real-time and historical stock price data from Alpha Vantage
Missing output schema documentation. Handler returns raw JSON from external APIs without documenting the response structure (fields, types, nesting) to the LLM. This prevents the agent from planning downstream operations and parsing results reliably.
No error recovery guidance. Error messages are generic ('Alpha Vantage API error', 'FMP API error'). When a tool fails, the agent has no recovery path, e.g., 'symbol not found, try search_symbols()' or 'rate limit hit, retry in 60 seconds'.
Missing tool annotations. Both tools are read-only operations but have no readOnlyHint annotation declared. This prevents clients from understanding tool safety without parsing descriptions, and breaks toolAnnotations capability.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 66 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Parameter description precision gaps. 'symbol' described only as 'Stock ticker symbol' without format constraints (e.g., 'uppercase, 1-5 characters'). 'interval' and 'outputSize' lack guidance on when each option is appropriate (e.g., '1min only available for premium APIs').
No rate limit or quota documentation. Neither tool description mentions API rate limits, quotas, or cost implications. Agents calling these repeatedly without knowledge of limits can exhaust quotas undetected.
Naming ambiguity: 'stock_price' retrieves historical series, not a single price point. More precise names: 'get_stock_timeseries' or 'fetch_stock_historical_data'. Current name may cause agents to expect a single {price: 150.25} response.