Production-ready MCP server for TradingView market data, technical analysis, screeners, and backtesting
10 tools with complete schemas and descriptions, but quality is inconsistent. All tools have basic descriptions (50-100 chars) and input schemas with types, but descriptions lack LLM-optimized guidance on WHEN to use each tool vs. similar ones. Parameter descriptions are minimal (e.g., 'Exchange name', 'Timeframe'). No output schemas documented. Error handling returns JSON stringified errors without recovery guidance. Tool names follow verb_noun pattern (scan, filter, analyze) but many are domain-specific jargon ('bollinger_scan', 'bbw_threshold') that may confuse LLMs unfamiliar with trading terminology. No tool annotations (readOnlyHint, destructiveHint). All tools are READ_ONLY per metadata, but this is not reflected in schema or description.
Advanced multi-timeframe candle pattern scan
Scan for Bollinger Band width squeeze candidates
Detailed technical analysis for a symbol
Scan consecutive candle patterns
Filter assets by Bollinger Band rating
Smart volume plus RSI filter scanner
Return top gainers for an exchange and timeframe
No output schemas documented. LLMs cannot infer what fields to expect from tool responses, forcing them to parse unstructured JSON and plan downstream calls blindly.
Parameter descriptions are minimal (5-20 chars: 'Exchange name', 'Timeframe', 'Pattern type'). LLMs cannot infer valid values, ranges, or dependencies. E.g., 'pattern_type' defaults to 'bullish' but no enum or description of valid options.
Tool descriptions lack WHEN-to-use guidance. 'Scan for Bollinger Band width squeeze candidates' does not explain when to call this vs. rating_filter or bollinger_scan. LLMs waste reasoning cycles choosing between similar tools.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
Return top losers for an exchange and timeframe
Detect volume and price breakouts
Volume confirmation for a single symbol
Error handling returns JSON.stringify(handleBatchError(error)), raw error objects without recovery guidance. LLMs cannot determine if errors are retryable, user-fixable, or fatal.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are READ_ONLY per metadata, but this is not declared in schema or description, forcing LLMs to infer safety.