Multi-agent LLM financial trading framework with MCP servers for stock data, fundamentals, news, and social media analysis
TradingAgents MCP server demonstrates consistent tool naming with proper verb-prefixes (get_*) and adequate parameter typing, but suffers from significantly incomplete descriptions and missing output schema documentation. All 10 tools follow the get_* naming convention appropriately. Parameter descriptions are present and reasonably specific (e.g., 'Stock ticker symbol', 'Current date in YYYY-MM-DD format'), meeting the baseline for 72-char average param annotation. However, tool descriptions are uniformly brief (90-140 chars), falling short of the baseline 194-char average and lacking the WHAT/WHEN/WHY clarity required by pattern:tool-description. Most critically, no tool documents its output schema or return structure, violating the hard requirement that LLMs know what fields to expect (pattern:tool, D.Schemas & Output). No error handling guidance is present. Output is read-only across all tools, but this is not explicitly stated in descriptions. The server provides no pagination documentation despite tools that likely return collections (get_news, get_global_news, get_stock_data). STDIO transport is a hard architectural constraint limiting this to tier-D status.
Get balance sheet data for a stock.
Get cash flow statement data for a stock.
Get comprehensive fundamental data for a stock.
Get global market news and trends.
Get income statement data for a stock.
Get technical indicators for stock analysis.
Get insider sentiment information for a stock.
No output schema documentation for any tool. LLMs cannot plan downstream operations without knowing return field names and types. Violates hard requirement in pattern:tool and D.Schemas & Output baseline that 100% of A+ tools have documented return types.
Tool descriptions are uniformly brief (90-140 chars) vs. baseline 194 chars. None answer WHAT/WHEN/WHY questions or explain when to call this tool vs. similar ones. E.g., get_fundamentals lacks guidance on what 'comprehensive fundamental data' means or when to call it vs. get_balance_sheet.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 44 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 42 | - | v1 |
Get insider transaction information for a stock.
Get news articles for a specific stock ticker.
Get historical stock price data for a given ticker symbol.
No pagination support documented for tools returning collections (get_news, get_global_news, get_stock_data). Even though limit and look_back_days params exist on get_global_news, there is no documentation of max results, offset behavior, or next_cursor patterns. Violates pattern:paginated-result requirement.
No error handling guidance in any tool. When an API call fails (invalid ticker, network timeout, data unavailable), descriptions do not tell LLMs what to do next. Violates pattern:recovery-guide and pattern:error-classification.
Read-only semantics not declared. All tools are GET operations with READ_ONLY risk classification in metadata, but descriptions do not state this. Prevents LLM understanding of tool idempotency and safety-for-retry properties. Missing tool annotation support (idempotentHint).
Parameter constraints not enforced or documented. E.g., get_indicators 'indicator' param accepts arbitrary strings but only validates against {rsi, macd, boll, sma, ema, volume} at runtime. Should be an enum in schema or explicitly listed in description with recovery guidance.
Date format consistency. get_stock_data, get_news require 'start_date'/'end_date' params; others use 'curr_date'. No documentation of what happens when curr_date is in the future or in the past. No guidance on handling weekends/holidays in stock data.