MCP server for cryptocurrency pricing data - access real-time ticker prices, exchanges, and markets from AI assistants
The Luzia MCP server provides 8 well-named, read-only cryptocurrency tools with clear descriptions and proper JSON Schema inputs. Tool naming follows the verb_noun pattern (get_ticker, get_exchanges, etc.) consistently. All 8 tools have non-empty descriptions (average ~130 chars, within the 10-1024 baseline). All required parameters are described with helpful context (e.g., 'Exchange identifier (e.g., binance, coinbase)'). Schema definitions are complete with proper types and enums where applicable (e.g., interval enum in get_history, type enum in get_exchanges). However, several output schemas are not documented in the source, we can infer return types from context but cannot verify exact field names or nested structures. Error handling is present (via LuziaError imports) but error guidance text is not visible in the tool definitions. All tools are READ_ONLY, which is appropriate for a crypto pricing service. Tool composition is good: each tool has one clear responsibility. No security issues detected, no credentials exposed as parameters, all API authentication handled server-side via getLuziaClientForKey(). Logging is implemented via createLogger. The main gap is lack of visible output schema documentation and error message guidance patterns.
List supported exchanges with their current status. Includes both centralized exchanges (CEX, e.g. Binance, Coinbase) and decentralized exchanges (DEX, e.g. Uniswap V3/V4, Raydium). Pass type="cex" or type="dex" to filter.
List ISO 4217 fiat currencies referenced by Luzia markets (USD, EUR, GBP, BRL, JPY, ...). Stablecoins like USDC and USDT are tokens, not fiat — use get_tokens for those.
Get historical OHLCV (Open, High, Low, Close, Volume) candlestick data for a trading pair
Get market data including symbols and trading pairs available on an exchange
Get current ticker data for a cryptocurrency pair on a specific exchange
Get ticker data for multiple cryptocurrency pairs on an exchange
Output schemas not documented in tool definitions. While input schemas are complete, return types and field names are not formally specified. LLMs cannot reliably plan downstream operations or extract correct fields without knowing the output structure.
Error recovery guidance not visible in tool descriptions. Tools reference LuziaError but do not document what errors are possible, which are retryable, and what the LLM should do next. E.g., 'exchange not found' should suggest calling get_exchanges first.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | A | 83 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 58 | - | v1 |
Get detailed information for a specific cryptocurrency token
List cryptocurrency tokens with optional search and filtering
No pagination parameters (limit, offset, page) visible in list/discovery tools (get_tokens, get_exchanges). Without pagination, large result sets could exhaust context windows. API responses should be capped and paginated.
get_tokens and get_fiat_currencies accept optional 'limit' parameter but no corresponding 'offset' or 'page' for pagination. If results can be large, agent cannot iterate through pages efficiently.
Tool descriptions lack dependency hints. E.g., get_ticker should note 'Call get_exchanges first if you don't have a valid exchange name' or 'Call get_markets to see available symbols on an exchange'.