MCP server providing access to Hyperliquid decentralized exchange data including user state, trading history, market data, order book snapshots, and funding information
The server provides 10 READ_ONLY tools that are properly named with action verbs and include descriptions. However, tool definitions exhibit significant structural gaps: most parameter descriptions contain example values (e.g., '0xcd5051944f780a621ee62e39e493c489668acf4d'), which violates LLM prompt-engineering best practices. Output schemas are entirely undocumented, there is no specification of what fields are returned, making it impossible for an LLM to plan downstream operations or extract values for tool chaining. Parameter descriptions lack constraint information (format, range, allowed values). Error handling is present but minimal: all tools catch exceptions and return JSON-formatted errors, but errors do not provide recovery guidance or classification. The ctx parameter is accepted but often unused, suggesting incomplete API design. Overall, the definitions are functional but below production quality, suitable for basic data retrieval but lacking the polish expected of A-grade tools.
Retrieve the mid prices for all trading pairs available on the exchange.
Fetch the candlestick data snapshot for a specific coin.
Fetch the funding rate history for a specific coin.
Fetch the Level 2 order book snapshot for a specific coin.
Retrieve metadata about perpetual markets available on the Hyperliquid decentralized exchange.
Fetch the fee structure and rates for a specific user account.
Fetch the funding payment history for a specific user account.
Output schemas entirely undocumented. No specification of returned fields, types, or structure. LLMs cannot plan tool chaining or extract values without guessing.
Parameter descriptions contain example values (e.g., '0xcd5051944f780a621ee62e39e493c489668acf4d'). LLMs tend to reuse example values literally instead of adapting to context, causing failures when real addresses differ.
No format or constraint documentation for string parameters. 'coin_name' accepts 'BTC' or 'ETH' but the description does not enumerate valid values or state whether lowercase is allowed. Enum or pattern constraint missing.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 51 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 25 | - | v1 |
Fetch all open orders for a specific user account.
Query user state including trading positions, margin, and withdrawable balance.
Fetch the trade fill history for a specific user account.
ISO 8601 time parameters documented in descriptions but no format constraint or regex pattern in schema. Accepts 'start_time' and 'end_time' as strings with example '2025-01-01T00:00:00Z', but invalid formats (e.g., '01/01/2025') are not rejected until runtime.
Error messages are minimal and non-recoverable. All tools return '{}' with 'error' key on exception but do not classify errors (retryable vs. fatal) or suggest recovery steps. LLM cannot decide whether to retry, ask user, or abort.
Parameter 'interval' in get_candles_snapshot documented as accepting '1m', '5m', '1h' but no enum constraint. LLM may pass '30s', '2h', or invalid formats without schema validation.
Context parameter (ctx) is declared in all tool signatures but used inconsistently. Some tools pass it to @mcp.tool() decorator, others do not. Inconsistent API design.
get_user_state parameter 'check_spot' defaults to False (queries perpetuals). Default behavior is non-obvious and may confuse agents. No guidance on which mode to use by default.