MCP server for PatternCatcher - a pattern matching and technical analysis tool for financial markets
Three tools with complete input schemas and descriptions, but significant gaps in output documentation and error handling. search_patterns and upload_chart have good parameter constraints (enums, descriptions), but lack documented return schemas. list_patterns is trivial (no params). No tool annotations (readOnlyHint, destructiveHint). Error handling exists in code but not surfaced in tool definitions. Descriptions are adequate (100-150 chars) but lack WHEN/WHY guidance. No pagination or result limits documented despite search_patterns returning 'top_n' results.
List all available pattern templates supported by PatternCatcher
Search for technical analysis patterns in financial markets using PatternCatcher
Upload a custom K-line chart image or hand-drawn pattern for analysis
Output schemas not documented. search_patterns and upload_chart return results but no schema is visible for what fields agents should expect (e.g., does result contain 'score', 'symbol', 'confidence'?). LLMs cannot plan downstream calls without knowing response structure.
list_patterns has no input parameters but description is vague ('List all available pattern templates'). Does it return 100 items? 1000? Paginated? What fields? Agents need to know structure before calling.
No tool annotations. All three tools are marked READ_ONLY in metadata but tool definitions lack readOnlyHint annotation. Agents cannot infer safety from the schema alone.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2025-06-18+ | v2 |
Error handling guidance missing from tool descriptions. Code catches PatternCatcherError and HTTP errors, but tool definitions do not document what errors are possible or how to recover (e.g., 'If image_path is invalid, error message will say so, provide a valid file path').
Parameter 'top_n' lacks min/max bounds in description. Code caps at 10 but description does not state this. Agents may pass invalid values.