MCP server for accessing financial data including income statements, balance sheets, cash flow statements, stock prices, crypto prices, and company news from the Financial Datasets API
Server has 10 tools with consistent naming (all verb_noun pattern: get_*) and complete input schemas with type definitions. However, descriptions are generic and lack LLM-optimization guidance. Parameter descriptions are present but minimal (10-30 chars typical). Output schemas are not documented, tools return JSON strings without field-level documentation. Error handling is basic (generic 'Unable to fetch' messages). No tool annotations (readOnlyHint, destructiveHint). Composition is sound (each tool does one thing), but descriptions don't explain WHEN to use each tool vs. alternatives (e.g., get_crypto_prices vs get_historical_crypto_prices are confusingly similar).
Gets all available crypto tickers.
Get balance sheets for a company.
Get cash flow statements for a company.
Get news for a company.
Gets historical prices for a crypto currency.
Get the current / latest price of a crypto currency.
Get the current / latest price of a company.
Output schemas not documented. Tools return JSON strings (via json.dumps) but no field-level schema is provided to LLMs. LLMs cannot plan downstream calls or extract specific fields without parsing unstructured text.
Confusing tool naming: get_crypto_prices and get_historical_crypto_prices appear to do the same thing (both fetch historical prices). LLMs will waste reasoning cycles deciding between them. Consolidate or clarify the distinction in descriptions.
Descriptions lack LLM-optimization guidance. Generic descriptions like 'Get income statements for a company' (34 chars) do not explain WHEN to use this tool, what data it returns, or how it differs from related tools. Baseline for A+ tools: 50-200 chars with context.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
Gets historical prices for a crypto currency.
Gets historical stock prices for a company.
Get income statements for a company.
Error handling is generic and non-actionable. All tools return 'Unable to fetch X or no X found' without guidance on what the LLM should do next (retry, check ticker validity, call discovery tool). No error categorization (retryable vs. user-fixable).
No tool annotations. Tools lack readOnlyHint, destructiveHint, or idempotentHint. All tools are read-only (safe to retry), but this is not declared in the schema, forcing LLMs to infer safety.