MCP Server for saving trading results and managing portfolio data
Single tool with critical definition gaps. Tool description is in Chinese (non-English), parameter descriptions contain formatting issues and unhelpful structure documentation, and no output schema is documented. The tool performs destructive writes (creates/modifies files) without any error handling guidance or confirmation pattern. Input validation is present in code but not communicated via schema constraints. Parameter types are loosely defined (dict|str, list|str) without proper JSON Schema structure.
保存交易结果
Tool description is entirely in Chinese ('保存交易结果'). MCP tool descriptions must be in English for LLM interoperability and discoverability by English-speaking agents and tools.
No output schema documented. Callers cannot predict return structure (dict with 'path' and 'mermaid_image' keys). LLMs need explicit return type documentation to plan downstream operations and extract relevant data.
Parameter schemas use Python union types (dict|str, list|str) instead of proper JSON Schema with discriminated union or oneOf. JSON Schema representation is unclear; LLMs cannot reliably predict which type is expected or how to construct valid input.
Parameter 'balance' description is minimal and references an external tool ('account_balance') without explaining what values are valid, expected range, or units beyond 'USD'. Description is under 50 characters of useful guidance.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 34 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 27 | - | v1 |
Parameter 'assets' and 'trades' descriptions include code-like structure examples ('BTC': <float>) instead of clear, LLM-friendly language. The description mixes schema documentation with parameter guidance, confusing for LLM interpretation.
Tool performs file I/O with side effects (creates/modifies './demo.json' and './README.md') but has no dry-run mode, confirmation step, or error recovery guidance. If file write fails or path is inaccessible, LLM receives no actionable error message.
Error handling is minimal. Code returns 'Balance is empty' on missing balance, but other validation errors (invalid JSON in assets/trades, file write failures, permission errors) produce no structured error messages. LLMs cannot determine if errors are retryable or user-fixable.
Default parameter values ('{}', '[]' as strings) are confusing. The parameter accepts both dict and str, but defaults are string literals, unclear if LLM should pass '{"BTC": 100}' or a dict. This ambiguity invites malformed input.
Tool name 'save_trading_result' is somewhat vague. Does it save single result or batch? Does 'result' mean outcome, record, or snapshot? A clearer name like 'log_trading_snapshot' or 'record_trading_state' would better convey intent.