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 (verb_noun pattern: get_*) and basic schemas. All tools have descriptions and input parameters with types. However, descriptions are generic and lack LLM-optimization guidance. Output schemas are not documented, tools return JSON strings rather than structured objects. No error handling guidance, no parameter constraints (enums), and no indication of what fields downstream tools should expect. Parameter descriptions are minimal (e.g., 'Ticker symbol of the company (e.g. AAPL, GOOGL)' repeated across tools). Tools 8 and 9 (get_crypto_prices and get_historical_crypto_prices) appear to be duplicates with identical signatures, violating single-responsibility principle.
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) rather than structured objects with typed fields. LLMs cannot infer what fields to expect or plan downstream tool calls.
Duplicate tools: get_crypto_prices and get_historical_crypto_prices have identical signatures and descriptions. This violates single-responsibility and forces LLMs to reason about which to use.
No error handling guidance. Tools return generic error strings ('Unable to fetch X or no X found') without actionable recovery steps. LLMs cannot determine if errors are retryable or require user intervention.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | <=2025-11-25 | v2 |
Gets historical prices for a crypto currency.
Gets historical stock prices for a company.
Get income statements for a company.
Parameter descriptions lack constraints and format guidance. 'period' accepts 'annual, quarterly, ttm' but is not declared as an enum. 'interval' similarly lacks enum constraint. Free-form strings invite hallucinated values.
No pagination or result limits documented. Tools may return unbounded lists (e.g., get_available_crypto_tickers, get_company_news) without limit parameters or documentation of max results, risking context window exhaustion.