Reference MCP server implementation for Machine-Centric Protocol on Solana with support for DeFi agents, NFT markets, and cryptocurrency data contexts
This server has 21 tools across three domains (Solana agent, Binance, CoinGecko) but suffers from critical definition gaps. Most tools have minimal descriptions (10-30 chars, well below the 50-200 char baseline for A-grade tools). Input schemas are present but sparse, many parameters lack descriptions entirely. No output schemas are documented. Error handling is absent from tool definitions. The server mixes unrelated concerns (agent registration, wallet creation, price feeds) without clear composition. Tool names are generic (health, get_context) and descriptions are trivial ('Health check endpoint'). No tool has actionable error guidance or recovery hints.
Get Binance context definition
Health check endpoint
Get CoinGecko context definition
Health check endpoint
Create local test wallet (development only)
Get all contexts
Get detailed information about a coin from CoinGecko
Get the list of supported coins from CoinGecko
Get current price of a coin from CoinGecko
Trivial descriptions on 8+ tools (health, *_get_context, get_all_contexts). Descriptions like 'Health check endpoint' (18 chars) and 'Get contexts by type' (20 chars) are below the 50-char minimum for LLM clarity. LLMs cannot distinguish when to call these tools.
No output schemas documented for any tool. Callers cannot know what fields to expect (e.g., does get_price return {price, symbol, timestamp} or {data: {price}}?). This forces LLMs to guess and breaks downstream tool chaining.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | <=2025-11-25 | v2 |
Get context by ID
Get contexts by type
Get global cryptocurrency market data from CoinGecko
Get historical kline data (candlesticks) from Binance
Get historical market data for a coin from CoinGecko
Get OHLC candlestick data for a coin from CoinGecko
Get order book for a symbol from Binance
Get current price for a symbol from Binance
Health check endpoint
Process agent instruction
Register a new agent
Search for coins, categories, and markets on CoinGecko
No error handling guidance in any tool definition. If get_price fails (invalid symbol, API timeout, rate limit), the LLM has no recovery hint. Error responses should state 'Symbol not found. Try search() with a partial name' or 'Rate limited, retry in 60s'.
Parameter descriptions missing or minimal. 'symbol' in get_price has description 'Trading symbol (e.g., BTCUSDT)' but no format constraint (uppercase? length?). 'interval' in get_klines lacks enum values (1m, 5m, 1h, 1d?). LLMs will hallucinate invalid values.
Tool composition is unclear. 'register_agent', 'process_agent_instruction', and 'create_local_wallet' are mixed with price feeds (Binance, CoinGecko). No clear narrative of when to use agent tools vs market data tools. Descriptions do not explain prerequisites or dependencies.