CCXT integration for Model Context Protocol - provides cryptocurrency exchange API access through MCP tools and resources
The CCXT MCP server defines 20 tools with explicit schemas and descriptions, but suffers from inconsistent quality across tools and missing output documentation. All tool names follow verb_noun conventions (good). All parameters have Zod schema definitions with type information. However, many descriptions are generic or lack context about when to use specific tools vs. alternatives. Output schemas are completely undocumented, no return type specifications visible. Error handling is present but inconsistent across tools (some tools check for capability support, others rely on try-catch). Tool descriptions average ~60-80 characters, which is below the 194-char production baseline. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present despite having 19 READ_ONLY and 1 REVERSIBLE and 1 DESTRUCTIVE tools. The server does not document parameter relationships (e.g., when 'symbol' is required vs. optional across different tools). Security model is sound (no API keys in parameters, they're loaded server-side from config), but no explicit permission gates are visible.
Analyze consecutive winning and losing trades
Analyze daily and monthly returns for a configured account
Analyze trading performance for a configured account
Calculate win rate and profit metrics for a configured account
Cancel an existing order using a configured account
Create a new order using a configured account
Output schemas completely undocumented. No tool returns a documented structure, LLMs cannot infer what fields to expect or plan downstream tool chains.
Missing tool annotations. Despite having 19 READ_ONLY, 1 REVERSIBLE, and 1 DESTRUCTIVE tools, no readOnlyHint, idempotentHint, or destructiveHint annotations are visible. LLMs cannot distinguish safe (retry-safe) tools from dangerous ones.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | C | 61 | - | v1 |
Fetch account balance for a configured account
Fetch all closed orders using a configured account
Fetch deposit history for a configured account
Fetch markets from a cryptocurrency exchange
Fetch personal trade history for a configured account
Fetch OHLCV candlestick data for a symbol on an exchange
Fetch all open orders using a configured account
Fetch information about a specific order using a configured account
Fetch order book for a symbol on an exchange
Fetch ticker information for a symbol on an exchange
Fetch all tickers from an exchange
Fetch recent trades for a symbol on an exchange
Fetch withdrawal history for a configured account
List all configured account names
Inconsistent error handling and recovery guidance. Some tools (fetchDeposits, fetchWithdrawals) check for capability support; others rely on try-catch. No consistent error messages guide the LLM on retryability or next steps.
Generic descriptions lack actionable context. Many descriptions (e.g., 'Fetch deposit history') do not explain WHEN to use this tool instead of similar ones, what parameters are required vs. optional, or what the response structure contains.
No parameter relationship documentation. Multiple analysis tools (analyzeTradingPerformance, calculateWinRate, analyzeConsecutiveProfitLoss, analyzePeriodicReturns) accept optional 'symbol' and 'period' params with overlapping enums, but no explicit guidance on how symbol filtering interacts with period selection or account data.
Missing pagination and result limits. Tools like fetchMyTrades, fetchTrades, fetchMarkets, fetchOpenOrders, fetchClosedOrders accept optional 'limit' parameters but no guidance on max limit, default, or what happens if results exceed limit. No cursor/offset pattern visible.
createOrder lacks dry-run / confirmation step. Destructive tool that creates real orders with no mention of test mode, confirmation requirement, or preview capability. Agents can accidentally place large orders.
Parameter 'params' object is under-specified. Multiple tools (createOrder, cancelOrder, fetchOrder, fetchOpenOrders, fetchClosedOrders) accept an optional 'params' object with type 'object' and description 'Additional exchange-specific parameters', but no guidance on valid keys, exchange variations, or common examples.