A multi-server MCP system for autonomous cryptocurrency trading with account management, market data, and push notifications
Server has 7 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-50 chars, mostly short), and input schemas are present with typed parameters. However, descriptions lack depth, most are single sentences without context on WHEN to use the tool or what happens on failure. Output schemas are undocumented. Error handling is absent: no guidance on retryability, no recovery hints, no validation of inputs like symbol format or quantity bounds. The 'push' tool has an unusual nested 'args' parameter structure that complicates invocation. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels (READ_ONLY vs WRITE). Parameter descriptions are minimal, 'symbol' lacks format guidance (BTC vs btc?), 'quantity' has no bounds, 'rationale' is vague. Composition is reasonable (separate read/write tools), but missing idempotency guarantees and confirmation patterns for destructive operations (buy_shares, sell_shares, change_strategy).
Buy units of a crypto asset.
At your discretion, if you choose to, call this to change your investment strategy for the future.
Get the cash balance of the given account name.
Get the holdings of the given account name.
Get the current price for a crypto symbol.
Send a push notification with this brief message
Sell units of a crypto asset.
Destructive operations (buy_shares, sell_shares, change_strategy) lack confirmation/dry-run patterns and error recovery guidance. No indication of retryability or side effects.
Output schemas are completely undocumented. Tools return floats, dicts, and strings with no field descriptions. LLMs cannot plan downstream calls or extract structured data.
Parameter descriptions lack actionable constraints. 'symbol' has no format guidance (BTC vs btc vs BTCUSD?). 'quantity' has no bounds (min/max). 'rationale' is vague. LLMs will guess and fail.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
'push' tool uses unusual nested 'args' parameter with Pydantic BaseModel. Standard MCP tools flatten parameters at the top level. This complicates invocation and is non-standard.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Agents cannot distinguish safe reads from destructive writes without parsing descriptions.