Stock screening and analysis service providing technical, fundamental, options, and news-based stock filtering with watchlist management
mcp-stockscreen demonstrates solid tool naming and schema coverage, with clear HTTP transport and basic error handling. Tool names follow verb_noun patterns (run_stock_screen, get_stock_news, manage_watchlist, get_screening_result). All tools have input schemas with proper JSON Schema type definitions and descriptions. However, output schemas are undocumented, ResponseEnvelope type is returned but its structure is not formally specified in the code review. Parameter descriptions are present but some lack constraint clarity (e.g., 'criteria' param in run_stock_screen is documented as 'object' with no guidance on allowed nested fields per screen_type). Error handling returns ToolError with messages, but lacks recovery guidance and error classification. Security is strong (validates watchlist/result names with regex patterns, no secret parameters exposed). Tool composition is good, each tool has a single responsibility and uses symbol/name parameters that match natural identifiers. Comparison to baseline: 4 tools with 4.5 avg params each (within p10-p90 range). Tool names avg ~19 chars (within 10-27 baseline). Descriptions present but average ~120 chars, shorter than baseline 194 chars, some lack detail on when to use vs similar tools.
Retrieve a saved screening result.
Get normalized recent Yahoo Finance news.
Create, update, delete, or retrieve a safely persisted watchlist.
Run a legacy technical, fundamental, options, news, or custom screen.
Output schema for ResponseEnvelope is not documented. LLMs cannot predict what fields to extract from responses (e.g., does it return 'data', 'result', 'matches', 'articles'?). This forces agents to make assumptions or fail on unexpected structures.
'criteria' parameter in run_stock_screen is typed as object with description 'Criteria for the selected legacy screen category' but provides no guidance on what nested keys are valid for each screen_type (technical, fundamental, options, news, custom). Agents must guess valid criteria structure.
Error responses return ToolError with raw exception messages (e.g., 'Yahoo Finance request failed after bounded retries: <exception>'). Lack of error classification: is this retryable? Should the agent ask the user? Is it fatal? Error messages do not include recovery guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 68 | 2026-07-28+ | v2 |
Tool descriptions are brief (60-70 chars avg) and lack 'when to use' context. Example: 'Get normalized recent Yahoo Finance news.' does not explain when to call this vs run_stock_screen with news criteria. Agents waste cycles deciding between similar tools.
manage_watchlist requires 'symbols' parameter for create/update actions but accepts null. Runtime validation ('if not symbols: raise ToolError') should be caught at schema level with conditional required fields.