MCP server for Binance USDT-M Futures trading. Tools for market data, account balances, open positions, order placement/modification/cancellation, leverage and margin-type control.
Server has 6 read-only market data tools with clear naming conventions (verb-noun pattern). All tools have descriptions and input schemas with type definitions. However, descriptions lack depth on WHEN to use each tool and don't explain dependencies or common workflows. Parameter descriptions are present but minimal, most are 1-2 sentences. Output schemas are not explicitly documented in source code. Error handling exists via ErrorHandlingMiddleware but responses do not guide recovery. Tools are narrowly scoped (one symbol at a time) which is good for composition, but no batch variants offered. Overall: functional but token-wasteful, descriptions could be 2-3x richer, and output schemas should be documented.
Get OHLCV candlestick data for a symbol. Returns list of dicts with: openTime, open, high, low, close, volume, closeTime, quoteVolume, trades, takerBuyVolume, takerBuyQuoteVolume.
Get order book bids and asks for a symbol. Returns top `limit` bids and asks as [[price, qty], ...] lists.
Get the most recent public trades for a symbol.
Get trading rules for a symbol: tick size, lot size, min notional, max leverage, etc.
Get latest price, 24 h stats, and mark/index prices for a symbol. Returns a merged dict with: - price, priceChange, priceChangePct, high, low, volume, quoteVolume - markPrice, indexPrice, fundingRate, nextFundingTime
Test connectivity to the Binance Futures API. Returns {} on success.
Output schemas not documented in source code. Tool descriptions state what fields are returned but no formal JSON Schema provided for LLM downstream planning.
Descriptions lack context on WHEN to use each tool. 'Get latest price' does not explain when to call get_ticker vs get_klines, or whether to use mark price vs index price for different trading scenarios.
get_recent_trades description is minimal ('Get the most recent public trades for a symbol'). No explanation of what fields are included, whether data is real-time, or when this is preferred over get_klines.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
No batch variants. If an LLM needs data for 10 symbols, it must call get_ticker 10 times. Single-item loops waste tokens and latency. Offer get_tickers (array input) alongside get_ticker.
Error responses from ErrorHandlingMiddleware do not provide recovery guidance. When Binance rejects a request (e.g. 'symbol not found'), the error should hint at next steps: 'Symbol not found. Call get_symbol_info or check the Binance API docs for valid symbols.'