hyperliquid-info-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@hyperliquid-info-mcpshow my current positions and margin for account 0xabc123"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Hyperliquid Info MCP Server
An MCP server that provides real-time data and insights from the Hyperliquid perp DEX for use in bots, dashboards, and analytics.
Features
User Data Queries:
get_user_state: Fetch user positions, margin, and withdrawable balance for perpetuals or spot markets.get_user_open_orders: Retrieve all open orders for a user account.get_user_trade_history: Get trade fill history with details like symbol, size, and price.get_user_funding_history: Query funding payment history with customizable time ranges.get_user_fees: Fetch user-specific fee structures (maker/taker rates).get_user_staking_summary&get_user_staking_rewards: Access staking details and rewards.get_user_order_by_oid&get_user_order_by_cloid: Retrieve specific order details by order ID or client order ID.get_user_sub_accounts: List sub-accounts associated with a main account.
Market Data Tools:
get_all_mids: Get mid prices for all trading pairs.get_l2_snapshot: Fetch Level 2 order book snapshots for a specific coin.get_candles_snapshot: Retrieve candlestick data with customizable intervals and time ranges.get_coin_funding_history: Query funding rate history for a specific coin.get_perp_dexs: Fetch metadata about perpetual markets (usingmeta).get_perp_metadata&get_spot_metadata: Get detailed metadata for perpetual and spot markets, with optional asset contexts.
Analysis Prompt:
analyze_positions: A guided prompt to analyze user trading activity using relevant tools.
ISO 8601 Support: Time-based queries (
get_candles_snapshot,get_coin_funding_history,get_user_funding_history) accept ISO 8601 time strings for precise data filtering.
Related MCP server: hyperliquid-whalealert-mcp
Installation
Prerequisites
Python 3.10: Required by the Hyperliquid Python SDK.
A valid Hyperliquid account address for user-specific queries.
Steps
Clone the Repository:
git clone https://github.com/kukapay/hyperliquid-info-mcp.git cd hyperliquid-info-mcpInstall Dependencies: Using
uv:uv sync
Usage
Running the Server
Run the server in development mode with MCP Inspector:
mcp dev main.pyOr install it for use in Claude Desktop:
mcp install main.py --name "Hyperliquid Info"Example Usage
Using the MCP Inspector or Claude Desktop, you can interact with the server using natural language prompts. Below are examples of how to trigger the analyze_positions prompt and individual tools conversationally.
Analyze Trading Positions:
Prompt:
"Please analyze the trading activity for my Hyperliquid account with address 0xYourAddress. Provide insights on my positions, open orders, and recent trades."Behavior:
This triggers theanalyze_positionsprompt, which usesget_user_state,get_user_open_orders,get_user_trade_history,get_user_funding_history, andget_user_feesto fetch data and generate a risk/performance analysis.Example Output:
For account 0xYourAddress: - Current Positions: 0.1 BTC long at $50,000, unrealized PNL +$500. - Open Orders: 1 limit order to sell 0.05 BTC at $52,000. - Recent Trades: Bought 0.1 BTC at $50,000 on 2025-05-30. - Funding Payments: Paid $10 in funding fees last week. - Fees: Maker fee 0.02%, taker fee 0.05%. Recommendation: Monitor BTC price closely due to high leverage.
Fetch User State:
Prompt:
"Show me the current state of my Hyperliquid account 0xYourAddress, including my positions and margin details for perpetuals."Behavior:
Invokesget_user_state(account_address="0xYourAddress", check_spot=False).Example Output:
{ "assetPositions": [ { "position": { "coin": "BTC", "szi": "0.1", "entryPx": "50000.0", "markPx": "50500.0", "unrealizedPnl": "500.0" } } ], "marginSummary": { "accountValue": "10000.0", "totalMarginUsed": "2000.0" }, "withdrawable": "8000.0" }
Get Candlestick Data:
Prompt:
"Can you get the 1-minute candlestick data for ETH on Hyperliquid from January 1, 2025, to January 2, 2025?"Behavior:
Invokesget_candles_snapshot(coin_name="ETH", interval="1m", start_time="2025-01-01T00:00:00Z", end_time="2025-01-02T00:00:00Z").Example Output:
[ { "t": 1672531200000, "o": "3000.0", "h": "3010.0", "l": "2995.0", "c": "3005.0", "v": "1000.0" }, ... ]
Check Trade History:
Prompt:
"What are the recent trades for my account 0xYourAddress on Hyperliquid?"Behavior:
Invokesget_user_trade_history(account_address="0xYourAddress").Example Output:
[ { "coin": "ETH", "px": "3000.0", "sz": "0.5", "time": 1672531200000, "tid": "123456" }, ... ]
Fetch Market Metadata:
Prompt:
"Tell me about the perpetual markets available on Hyperliquid, including trading pairs."Behavior:
Invokesget_perp_metadata(include_asset_ctxs=False).Example Output:
{ "universe": [ { "name": "BTC-PERP", "maxLeverage": 50, "szDecimals": 4, "tickSz": "0.1" }, ... ] }
License
This project is licensed under the MIT License.
Available Tools
17 toolsget_all_midsA
Retrieve the mid prices for all trading pairs available on the exchange.
Parameters:
ctx (Context): The MCP context object for accessing server state.
Returns:
str: A JSON string containing a dictionary of trading pairs and their mid prices.
Returns a JSON string with an error message if the query fails.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the tool retrieves data (implying read-only, non-destructive) and describes the return format and error handling, which adds useful context. However, it lacks details on rate limits, authentication needs, or performance characteristics, leaving gaps for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by concise sections for parameters and returns. Every sentence earns its place by providing essential information without redundancy, making it efficient and well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (0 parameters, no output schema, no annotations), the description is mostly complete. It explains the purpose, return format, and error handling. However, it could improve by addressing potential limitations or linking to siblings for more specific data, but for a simple retrieval tool, it covers the essentials adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and the input schema has 100% coverage (though empty). The description correctly notes that there are no user-provided parameters, only a context object, which adds clarity beyond the schema. Since there are no parameters to document, a baseline of 4 is appropriate as the description adequately addresses the parameterless nature.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Retrieve') and resource ('mid prices for all trading pairs available on the exchange'), distinguishing it from siblings that focus on user data, metadata, or specific data types like candles or order books. It precisely defines what the tool does without being vague or tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any context, prerequisites, or exclusions, such as when to prefer this over other data-fetching tools like get_spot_metadata or get_l2_snapshot. Usage is implied only by the purpose, with no explicit when/when-not statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_candles_snapshotB
Fetch the candlestick data snapshot for a specific coin.
Parameters:
coin_name (str): The trading symbol (e.g., 'BTC', 'ETH').
interval (str): The candlestick interval (e.g., '1m', '5m', '1h').
start_time (str): The start time for the candles in ISO 8601 format (e.g., '2025-01-01T00:00:00Z').
end_time (str): The end time for the candles in ISO 8601 format (e.g., '2025-12-31T23:59:59Z').
ctx (Context): The MCP context object for accessing server state.
Returns:
str: A JSON string containing a list of candlestick data, each with open, high, low, close, volume, and timestamp.
Returns a JSON string with an error message if the query fails.
| Name | Required | Description | Default |
|---|---|---|---|
| coin_name | Yes | ||
| interval | Yes | ||
| start_time | Yes | ||
| end_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the return format (JSON string with candlestick data or error message) and implies a read-only operation ('fetch'), but lacks details on rate limits, authentication needs, data freshness, or error handling beyond a generic mention. It adds some context but doesn't fully compensate for the absence of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, starting with a clear purpose statement followed by structured parameter and return sections. Every sentence adds value: the first defines the tool, the parameter list explains inputs with examples, and the return section details output format. There's no wasted text, and it's well-organized for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (4 parameters, no annotations, no output schema), the description is moderately complete. It covers parameter semantics and return format adequately, but lacks behavioral context like error conditions, rate limits, or data source details. For a financial data tool with multiple parameters, it should provide more guidance on usage constraints and sibling tool differentiation to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the input schema, which has 0% description coverage. It explains each parameter's purpose with examples (e.g., 'coin_name' as trading symbol, 'interval' as candlestick interval, time formats), clarifying semantics that the schema alone doesn't provide. This compensates well for the low schema coverage, though it doesn't cover all potential nuances like valid interval values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Fetch the candlestick data snapshot for a specific coin.' It specifies the verb ('fetch'), resource ('candlestick data snapshot'), and scope ('for a specific coin'), which is clear and specific. However, it doesn't explicitly differentiate from sibling tools like 'get_l2_snapshot' or 'get_user_trade_history', which might also retrieve financial data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools or contexts where other tools might be more appropriate, such as using 'get_user_trade_history' for user-specific trades or 'get_l2_snapshot' for order book data. There's no explicit when/when-not or alternative usage information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_coin_funding_historyA
Fetch the funding rate history for a specific coin.
Parameters:
coin_name (str): The trading symbol (e.g., 'BTC', 'ETH').
start_time (str): The start time for the funding history in ISO 8601 format (e.g., '2025-01-01T00:00:00Z').
end_time (str): The end time for the funding history in ISO 8601 format (e.g., '2025-12-31T23:59:59Z').
ctx (Context): The MCP context object for accessing server state.
Returns:
str: A JSON string containing a list of funding rate records, each with details such as funding rate and timestamp.
Returns a JSON string with an error message if the query fails.
| Name | Required | Description | Default |
|---|---|---|---|
| coin_name | Yes | ||
| start_time | Yes | ||
| end_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behaviors: it describes the return format (JSON string with list of records), error handling (returns error message on failure), and data structure details (funding rate and timestamp fields). It doesn't mention rate limits, authentication needs, or pagination, but provides solid operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with a clear purpose statement followed by well-organized parameter and return sections. Every sentence earns its place by providing essential information without redundancy. The formatting with bullet-like sections enhances readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no annotations and no output schema, the description provides good coverage: clear purpose, parameter semantics, return format, and error handling. It doesn't explain sibling differentiation or advanced behavioral aspects like rate limits, but covers the core operational context adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by providing detailed semantic information for all 3 parameters: coin_name specifies trading symbols with examples, start_time and end_time specify ISO 8601 format with concrete examples. This adds significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Fetch') and resource ('funding rate history for a specific coin'), distinguishing it from siblings like get_user_funding_history (user-specific) or get_candles_snapshot (price data). It precisely identifies what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the specific resource focus (coin funding history), but doesn't explicitly state when to use this tool versus alternatives like get_user_funding_history or other data-fetching siblings. No explicit exclusions or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_l2_snapshotA
Fetch the Level 2 order book snapshot for a specific coin.
Parameters:
coin_name (str): The trading symbol (e.g., 'BTC', 'ETH').
ctx (Context): The MCP context object for accessing server state.
Returns:
str: A JSON string containing the Level 2 order book snapshot, including bids and asks with prices and sizes.
Returns a JSON string with an error message if the query fails.
| Name | Required | Description | Default |
|---|---|---|---|
| coin_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool fetches data (implied read-only) and mentions error handling, but lacks details on rate limits, authentication needs, or data freshness. It adds some behavioral context but is incomplete for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the main purpose, followed by structured parameter and return sections. Every sentence adds value, though it could be slightly more concise by integrating the return details into the main description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (fetching financial data), no annotations, and no output schema, the description is adequate but has gaps. It explains parameters and returns well, but lacks usage context, error specifics, or behavioral details like latency or data format nuances, making it minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the input schema, which has 0% coverage. It explains that 'coin_name' is a trading symbol with examples ('BTC', 'ETH'), clarifies the purpose of the parameter, and notes that 'ctx' is for server state access, compensating well for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Fetch') and resource ('Level 2 order book snapshot for a specific coin'), distinguishing it from sibling tools that fetch different data types like metadata, user data, or historical information. It precisely identifies what the tool retrieves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives among the many sibling tools. It mentions the specific data fetched but does not indicate scenarios, prerequisites, or comparisons to other tools like get_candles_snapshot or get_user_open_orders.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_perp_dexsA
Retrieve metadata about perpetual markets available on the Hyperliquid decentralized exchange.
Parameters:
ctx (Context): The MCP context object for accessing server state.
Returns:
str: A JSON string containing metadata about perpetual markets, including a list of trading pairs and their
contract details (e.g., symbol, tick size, contract type). Returns a JSON string with an error message if
the query fails.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior: it retrieves metadata, specifies the return format (JSON string with market details), and mentions error handling (returns error message on failure). However, it does not cover aspects like rate limits, authentication needs, or performance characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the purpose clearly, followed by structured sections for parameters and returns. Every sentence adds essential information without redundancy, making it efficient and well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 0 parameters, no output schema, and no annotations, the description is largely complete: it explains the purpose, parameters, and return values. However, it could improve by addressing potential limitations or linking to sibling tools for more context, but it adequately covers the basics for this simple retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so the baseline is 4. The description adds value by explaining the 'ctx' parameter as 'The MCP context object for accessing server state,' providing semantic context beyond the schema's empty properties.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Retrieve metadata') and resource ('perpetual markets available on the Hyperliquid decentralized exchange'), distinguishing it from sibling tools like get_spot_metadata or get_perp_metadata by specifying it's about perpetual markets on a particular DEX.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving perpetual market metadata, but does not explicitly state when to use this tool versus alternatives like get_perp_metadata or get_all_mids. It provides context but lacks explicit guidance on exclusions or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_perp_metadataA
Fetch metadata about perpetual markets on the Hyperliquid exchange.
Parameters:
include_asset_ctxs (bool, optional): If True, includes asset contexts with metadata. Defaults to False.
ctx (Context, optional): The MCP context object for accessing server state.
Returns:
str: A JSON string containing metadata about perpetual markets, including trading pairs and contract details
(e.g., symbol, tick size). Returns a JSON string with an error message if the query fails.
| Name | Required | Description | Default |
|---|---|---|---|
| include_asset_ctxs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the tool returns a JSON string with an error message on failure, which is useful. However, it lacks details on rate limits, authentication requirements, data freshness, or whether this is a read-only operation (though implied by 'fetch').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the core purpose. The parameter and return sections are structured clearly, though the return explanation could be slightly more concise. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (fetching metadata), no annotations, and no output schema, the description is adequate but has gaps. It covers parameters and return format well, but lacks behavioral context like error handling details or performance characteristics. It meets minimum viability but could be more comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant value beyond the input schema, which has 0% description coverage. It explains the optional 'include_asset_ctxs' parameter's effect (includes asset contexts with metadata) and default value (False), and mentions the optional 'ctx' parameter for accessing server state, which is not in the schema at all. This compensates well for the schema's lack of documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Fetch metadata') and resource ('perpetual markets on the Hyperliquid exchange'), distinguishing it from sibling tools like get_spot_metadata (for spot markets) and get_all_mids (for market IDs). The verb 'fetch' is precise and the scope is well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving perpetual market metadata, but does not explicitly state when to use this tool versus alternatives like get_spot_metadata or get_all_mids. No guidance is provided on prerequisites, exclusions, or specific scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spot_metadataB
Fetch metadata about spot markets on the Hyperliquid exchange.
Parameters:
include_asset_ctxs (bool, optional): If True, includes asset contexts with metadata. Defaults to False.
ctx (Context, optional): The MCP context object for accessing server state.
Returns:
str: A JSON string containing metadata about spot markets, including trading pairs and contract details
(e.g., symbol, tick size). Returns a JSON string with an error message if the query fails.
| Name | Required | Description | Default |
|---|---|---|---|
| include_asset_ctxs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but lacks behavioral details. It mentions the tool returns JSON or error messages, but doesn't cover rate limits, authentication needs, data freshness, or what 'fails' means operationally. The return format is described, but behavioral context is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and concise, with a clear purpose statement followed by parameter and return sections. Every sentence adds value: the first defines the tool, the second explains the optional parameter, and the third details the return format and error handling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, 1 parameter with 0% schema coverage, and no output schema, the description is moderately complete. It covers the parameter and return format but lacks context on when to use it, error specifics, or integration with sibling tools. For a simple read operation, it's adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant value beyond the input schema, which has 0% description coverage. It explains 'include_asset_ctxs' as including asset contexts with metadata and provides a default. However, it doesn't detail what 'asset contexts' contain or why to include them, leaving some semantic gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Fetch metadata about spot markets on the Hyperliquid exchange.' It specifies the resource (spot markets) and verb (fetch metadata), but doesn't explicitly differentiate from siblings like 'get_perp_metadata' beyond the 'spot' vs 'perp' distinction in names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools, compare to 'get_perp_metadata' for perpetual markets, or specify use cases like needing spot market details for trading decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_feesA
Fetch the fee structure and rates for a specific user account.
Parameters:
account_address (str): The Hyperliquid account address (e.g., '0xcd5051944f780a621ee62e39e493c489668acf4d').
ctx (Context): The MCP context object for accessing server state.
Returns:
str: A JSON string containing the user's fee structure, including maker and taker fees.
Returns a JSON string with an error message if the query fails.
| Name | Required | Description | Default |
|---|---|---|---|
| account_address | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool fetches data (read-only behavior) and mentions potential failure with error messages, which is useful. However, it lacks details on authentication needs, rate limits, or what 'fails' means (e.g., network errors vs. invalid addresses). It adds some context but is incomplete for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose statement, parameter explanations, and return details. It uses bullet points for readability and avoids unnecessary words. However, the return section could be more concise (e.g., merging the two sentences), and the example address is slightly verbose, keeping it from a perfect 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 1 parameter with 0% schema coverage and no output schema, the description does a good job: it explains the parameter semantics, describes the return format (JSON string with fee structure or error), and covers basic behavior. It could improve by detailing error cases or response structure more, but it's largely complete for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the input schema, which has 0% coverage. It explains that 'account_address' is a Hyperliquid account address with an example format, and clarifies that 'ctx' is an MCP context object for server state access. This compensates well for the schema's lack of descriptions, though it doesn't detail all possible address formats or ctx usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Fetch the fee structure and rates for a specific user account.' It specifies the verb ('fetch') and resource ('fee structure and rates'), distinguishing it from siblings like get_user_state or get_user_trade_history. However, it doesn't explicitly differentiate from all siblings (e.g., get_user_funding_history also fetches user-specific data), so it's not a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when fee information is needed for a user account, but provides no explicit guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, exclusions, or compare to sibling tools (e.g., get_user_state might include fee data). Usage is inferred from the purpose, but lacks clear directives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_funding_historyA
Fetch the funding payment history for a specific user account.
Parameters:
account_address (str): The Hyperliquid account address (e.g., '0xcd5051944f780a621ee62e39e493c489668acf4d').
start_time (str): The start time for the funding history in ISO 8601 format (e.g., '2025-01-01T00:00:00Z').
end_time (str): The end time for the funding history in ISO 8601 format (e.g., '2025-12-31T23:59:59Z').
ctx (Context): The MCP context object for accessing server state.
Returns:
str: A JSON string containing a list of funding payment records, each with details such as amount and timestamp.
Returns a JSON string with an error message if the query fails.
| Name | Required | Description | Default |
|---|---|---|---|
| account_address | Yes | ||
| start_time | Yes | ||
| end_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only minimally addresses behavior. It mentions the return format (JSON string with records or error) but lacks details on permissions, rate limits, pagination, or what constitutes a 'failed query'. For a data retrieval tool with zero annotation coverage, this is insufficient disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by organized parameter and return sections. Every sentence adds value: the opening statement defines scope, parameter explanations provide essential format details, and the return statement clarifies output behavior. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description does an adequate job covering parameters and basic return format. However, for a tool that retrieves financial history data, it lacks details about authentication requirements, rate limiting, error scenarios beyond 'fails', and how results are structured (e.g., pagination, sorting). The context signals indicate moderate complexity that warrants more completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by providing detailed parameter semantics: it explains what each parameter represents (account address, start/end time), includes format examples (ISO 8601, address format), and clarifies their purpose in the context of fetching funding history. This adds significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Fetch') and resource ('funding payment history for a specific user account'), distinguishing it from siblings like get_user_fees, get_user_trade_history, and get_user_staking_rewards which handle different types of user data. The verb+resource combination is precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving funding payment history within a time range, but provides no explicit guidance on when to use this tool versus alternatives like get_coin_funding_history or other user data tools. There's no mention of prerequisites, exclusions, or comparative context with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_open_ordersA
Fetch all open orders for a specific user account.
Parameters:
account_address (str): The Hyperliquid account address (e.g., '0xcd5051944f780a621ee62e39e493c489668acf4d').
ctx (Context): The MCP context object for accessing server state.
Returns:
str: A JSON string containing a list of open orders, each with details such as order ID, symbol, size, price,
and status. Returns a JSON string with an error message if the query fails.
| Name | Required | Description | Default |
|---|---|---|---|
| account_address | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that the tool fetches data (read-only implied) and returns JSON with either order details or an error message, which covers basic behavior. However, it lacks details on rate limits, authentication needs, pagination, or what constitutes a 'fails' condition, leaving gaps in behavioral understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose statement followed by parameter and return sections. Every sentence adds value: the first defines the tool's function, and the subsequent lines explain inputs and outputs. It's appropriately sized without redundancy, though the mention of 'ctx' parameter not in the schema slightly reduces efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and low schema coverage (0%), the description provides basic completeness by explaining the tool's purpose, parameter, and return format. However, for a tool that interacts with user data and returns complex JSON, it lacks details on error handling, data structure examples, or performance considerations, making it minimally adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the input schema, which has 0% coverage. It explains that 'account_address' is a Hyperliquid account address with an example format, clarifying the parameter's purpose and expected value. Since there's only one parameter, this compensation is effective, though it doesn't detail the 'ctx' parameter mentioned in the description but not in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Fetch all open orders') and target resource ('for a specific user account'), distinguishing it from sibling tools like get_user_fees, get_user_trade_history, or get_user_order_by_oid which focus on different user data. The verb+resource combination is precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing open orders for a user, but provides no explicit guidance on when to use this versus alternatives like get_user_order_by_oid for specific orders or get_user_trade_history for completed trades. No exclusions or prerequisites are mentioned, leaving usage context inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_order_by_cloidA
Fetch details of a specific order by its client order ID for a user account.
Parameters:
account_address (str): The Hyperliquid account address (e.g., '0xcd5051944f780a621ee62e39e493c489668acf4d').
cloid (str): The client order ID to query.
ctx (Context): The MCP context object for accessing server state.
Returns:
str: A JSON string containing the order details, including symbol, size, price, and status.
Returns a JSON string with an error message if the query fails.
| Name | Required | Description | Default |
|---|---|---|---|
| account_address | Yes | ||
| cloid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool fetches details (implying read-only behavior) and mentions potential error returns, but it does not cover other behavioral aspects like rate limits, authentication needs, or side effects. It adds some context but is incomplete for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose statement, parameter list, and return details. Every sentence adds value, and it is front-loaded with the core functionality. No wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description does a good job covering purpose, parameters, and return format. However, it lacks details on error handling specifics, behavioral constraints, or output structure beyond a high-level mention. It is mostly complete but has minor gaps for a tool with no structured support.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explicitly lists and explains all 2 parameters (account_address and cloid), providing examples and context beyond the schema. It also mentions the 'ctx' parameter, which is not in the input schema, adding further semantic clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Fetch details') and resource ('specific order by its client order ID for a user account'), distinguishing it from sibling tools like get_user_order_by_oid (which uses a different identifier) and get_user_open_orders (which lists multiple orders). It precisely defines what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates usage context by specifying 'for a user account' and naming the required parameters, but it does not explicitly state when to use this tool versus alternatives like get_user_order_by_oid or get_user_open_orders. It provides clear prerequisites but lacks explicit comparison or exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_order_by_oidA
Fetch details of a specific order by its order ID for a user account.
Parameters:
account_address (str): The Hyperliquid account address (e.g., '0xcd5051944f780a621ee62e39e493c489668acf4d').
oid (int): The order ID to query.
ctx (Context): The MCP context object for accessing server state.
Returns:
str: A JSON string containing the order details, including symbol, size, price, and status.
Returns a JSON string with an error message if the query fails.
| Name | Required | Description | Default |
|---|---|---|---|
| account_address | Yes | ||
| oid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the return format (JSON string with order details or error message) and implies a read-only operation ('Fetch', 'query'), but doesn't mention potential rate limits, authentication requirements, error conditions beyond failure, or whether the query is real-time/historical. It adds some context but leaves gaps for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with a clear purpose statement followed by parameter and return sections. Every sentence adds value: the first defines the tool's function, the parameter explanations provide necessary details, and the return statement clarifies output format. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 parameters with 0% schema coverage and no annotations or output schema, the description does well by documenting all parameters and return format. However, as a data retrieval tool with no behavioral annotations, it could benefit from mentioning authentication needs, rate limits, or query limitations. It's mostly complete but has minor gaps in operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully compensate. It explicitly lists and explains all 2 parameters: account_address ('The Hyperliquid account address') with an example, and oid ('The order ID to query'). The description adds essential meaning beyond the bare schema, fully documenting parameter purposes and formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Fetch details') and resource ('a specific order by its order ID for a user account'), distinguishing it from sibling tools like get_user_open_orders (which lists multiple orders) and get_user_order_by_cloid (which uses a different identifier). The verb+resource combination is precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying 'for a user account' and naming the required parameters (account_address and oid), but it doesn't explicitly state when to use this tool versus alternatives like get_user_order_by_cloid or get_user_open_orders. The guidance is clear for the intended scenario but lacks explicit sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_staking_rewardsA
Fetch the staking rewards history for a specific user account.
Parameters:
account_address (str): The Hyperliquid account address (e.g., '0xcd5051944f780a621ee62e39e493c489668acf4d').
ctx (Context): The MCP context object for accessing server state.
Returns:
str: A JSON string containing a list of staking reward records, each with amount and timestamp.
Returns a JSON string with an error message if the query fails.
| Name | Required | Description | Default |
|---|---|---|---|
| account_address | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool fetches historical data (implying read-only behavior) and mentions error handling (returns error message on failure), but lacks details on rate limits, authentication needs, or data freshness. It adds some behavioral context but not comprehensively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose statement, parameter details, and return information in bullet points. Every sentence adds value without redundancy, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a single parameter, the description is mostly complete: it explains purpose, parameters, and return format. However, it could improve by mentioning data range limits or pagination for the history, though the simplicity of the tool makes this less critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It fully documents the single parameter (account_address) with its type, example, and purpose, adding significant meaning beyond the bare schema. This effectively covers the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Fetch') and resource ('staking rewards history for a specific user account'), distinguishing it from siblings like get_user_staking_summary (which likely provides aggregated data) and other user-specific tools (e.g., get_user_fees, get_user_trade_history).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when historical staking reward data is needed for a user, but does not explicitly state when to use this versus alternatives like get_user_staking_summary or other user data tools. It provides clear context but lacks explicit exclusions or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_staking_summaryB
Fetch the staking summary for a specific user account.
Parameters:
account_address (str): The Hyperliquid account address (e.g., '0xcd5051944f780a621ee62e39e493c489668acf4d').
ctx (Context): The MCP context object for accessing server state.
Returns:
str: A JSON string containing the staking summary, including staked amounts and status.
Returns a JSON string with an error message if the query fails.
| Name | Required | Description | Default |
|---|---|---|---|
| account_address | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that it returns a JSON string with an error message on failure, which adds some context beyond the basic fetch operation. However, it lacks details on permissions, rate limits, side effects, or data freshness, leaving significant gaps for a tool that accesses user-specific staking data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by clear parameter and return sections. Every sentence adds value: the first states the purpose, the parameters section clarifies the input, and the returns section explains the output format and error handling. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (fetching user-specific staking data), no annotations, and no output schema, the description is adequate but incomplete. It covers the purpose, parameter semantics, and return format, but lacks behavioral details like authentication needs or data constraints. It's minimally viable but could be more comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context for the single parameter 'account_address' by specifying it as a 'Hyperliquid account address' and providing an example format, which is valuable since the input schema has 0% description coverage. This compensates well for the schema's lack of detail, though it doesn't cover all possible edge cases or validation rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Fetch' and the resource 'staking summary for a specific user account', making the purpose unambiguous. It distinguishes from siblings like 'get_user_fees' or 'get_user_state' by specifying the staking context. However, it doesn't explicitly contrast with 'get_user_staking_rewards', which might be a related sibling, so it's not a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to prefer this over other user-related tools like 'get_user_state' or 'get_user_staking_rewards', nor does it specify prerequisites or exclusions. The usage is implied by the purpose but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_stateA
Query user state including trading positions, margin, and withdrawable balance.
Parameters:
account_address (str): The Hyperliquid account address (e.g., '0xcd5051944f780a621ee62e39e493c489668acf4d').
check_spot (bool, optional): If True, queries spot user state; otherwise, queries perpetuals state. Defaults to False.
ctx (Context, optional): The MCP context object for accessing server state.
Returns:
str: A JSON string containing the user state, including a list of positions (with symbol, size, entry_price,
current_price, unrealized_pnl), margin_summary, and withdrawable balance. Returns a JSON string with an
error message if the query fails.
| Name | Required | Description | Default |
|---|---|---|---|
| account_address | Yes | ||
| check_spot | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that this is a query operation (non-destructive), describes the return format (JSON string with positions, margin, etc.), and mentions error handling ('Returns a JSON string with an error message if the query fails'). It lacks details on rate limits, authentication needs, or data freshness, but covers core behavioral aspects adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the purpose clearly, followed by structured sections for parameters and returns. Every sentence adds value, though the 'ctx' parameter explanation could be more specific. No redundant information is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (querying financial state with 2 parameters), no annotations, and no output schema, the description is fairly complete. It explains the tool's purpose, parameters, and return format in detail. It could improve by specifying data sources or update frequency, but it covers the essentials for an AI agent to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaningful semantics: 'account_address' is explained as 'The Hyperliquid account address' with an example, and 'check_spot' clarifies it queries spot vs. perpetuals state with a default. The 'ctx' parameter is noted as optional for server state access, though its purpose is vague. This compensates well for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Query user state including trading positions, margin, and withdrawable balance.' It specifies the verb 'query' and the resource 'user state' with key components listed. However, it doesn't explicitly differentiate from siblings like 'get_user_fees' or 'get_user_trade_history' beyond the general scope of user state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the parameter details (e.g., 'check_spot' for spot vs. perpetuals state), but it doesn't provide explicit guidance on when to use this tool versus alternatives like 'get_user_open_orders' or 'get_user_trade_history'. No when-not-to-use or prerequisite information is included.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_sub_accountsB
Fetch the sub-accounts associated with a specific user account.
Parameters:
account_address (str): The Hyperliquid account address (e.g., '0xcd5051944f780a621ee62e39e493c489668acf4d').
ctx (Context): The MCP context object for accessing server state.
Returns:
str: A JSON string containing a list of sub-accounts and their details.
Returns a JSON string with an error message if the query fails.
| Name | Required | Description | Default |
|---|---|---|---|
| account_address | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions that it 'returns a JSON string' and includes error handling, which is useful, but lacks details on permissions, rate limits, or what 'details' include. For a tool with no annotations, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by structured sections for parameters and returns. Every sentence adds value, with no redundant information, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description covers the basic purpose and parameters adequately but lacks depth. It doesn't fully explain the return structure beyond 'list of sub-accounts and their details', leaving ambiguity for an AI agent to interpret the output correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates well by explaining the 'account_address' parameter as 'The Hyperliquid account address' with an example. It also mentions the 'ctx' parameter, though not in the input schema, adding clarity beyond the minimal schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'fetch' and resource 'sub-accounts associated with a specific user account', making the purpose evident. However, it doesn't explicitly differentiate from sibling tools like get_user_state or get_user_fees, which also fetch user-related data but for different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing a valid account address, or compare it to sibling tools like get_user_state that might provide overlapping or complementary information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_trade_historyA
Fetch the trade fill history for a specific user account.
Parameters:
account_address (str): The Hyperliquid account address (e.g., '0xcd5051944f780a621ee62e39e493c489668acf4d').
ctx (Context): The MCP context object for accessing server state.
Returns:
str: A JSON string containing a list of trade fills, each with details such as symbol, size, price, timestamp,
and trade ID. Returns a JSON string with an error message if the query fails.
| Name | Required | Description | Default |
|---|---|---|---|
| account_address | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that it fetches historical data (implied read-only) and mentions potential failure with error messages, but lacks details on rate limits, authentication needs, or data freshness. It adds some behavioral context but not comprehensively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by clear parameter and return sections. Every sentence adds value without redundancy, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, 0% schema coverage, and no output schema, the description compensates well by explaining the parameter, return format, and error handling. However, it could be more complete by detailing the 'ctx' parameter or providing more behavioral context for a tool with potential complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the input schema, which has 0% coverage. It explains that 'account_address' is a Hyperliquid account address with an example format, clarifying the parameter's purpose and expected value, though it does not detail the 'ctx' parameter beyond naming it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Fetch') and resource ('trade fill history for a specific user account'), distinguishing it from sibling tools like get_user_funding_history or get_user_open_orders by focusing on trade fills rather than other user data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying 'for a specific user account' but does not explicitly state when to use this tool versus alternatives like get_user_state or get_user_fees, nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
17 tool updates
v1.0.0- Changed
get_all_mids1 field changed- added
Input schema / titleAdded value: +"get_all_midsArguments"
- Changed
get_candles_snapshot1 field changed- added
Input schema / titleAdded value: +"get_candles_snapshotArguments"
- Changed
get_coin_funding_history1 field changed- added
Input schema / titleAdded value: +"get_coin_funding_historyArguments"
- Changed
get_l2_snapshot1 field changed- added
Input schema / titleAdded value: +"get_l2_snapshotArguments"
- Changed
get_perp_dexs1 field changed- added
Input schema / titleAdded value: +"get_perp_dexsArguments"
- Changed
get_perp_metadata1 field changed- added
Input schema / titleAdded value: +"get_perp_metadataArguments"
- Changed
get_spot_metadata1 field changed- added
Input schema / titleAdded value: +"get_spot_metadataArguments"
- Changed
get_user_fees1 field changed- added
Input schema / titleAdded value: +"get_user_feesArguments"
- Changed
get_user_funding_history1 field changed- added
Input schema / titleAdded value: +"get_user_funding_historyArguments"
- Changed
get_user_open_orders1 field changed- added
Input schema / titleAdded value: +"get_user_open_ordersArguments"
- Changed
get_user_order_by_cloid1 field changed- added
Input schema / titleAdded value: +"get_user_order_by_cloidArguments"
- Changed
get_user_order_by_oid1 field changed- added
Input schema / titleAdded value: +"get_user_order_by_oidArguments"
- Changed
get_user_staking_rewards1 field changed- added
Input schema / titleAdded value: +"get_user_staking_rewardsArguments"
- Changed
get_user_staking_summary1 field changed- added
Input schema / titleAdded value: +"get_user_staking_summaryArguments"
- Changed
get_user_state1 field changed- added
Input schema / titleAdded value: +"get_user_stateArguments"
- Changed
get_user_sub_accounts1 field changed- added
Input schema / titleAdded value: +"get_user_sub_accountsArguments"
- Changed
get_user_trade_history1 field changed- added
Input schema / titleAdded value: +"get_user_trade_historyArguments"
17 tool updates
- First observed
get_all_mids - First observed
get_candles_snapshot - First observed
get_coin_funding_history - First observed
get_l2_snapshot - First observed
get_perp_dexs - First observed
get_perp_metadata - First observed
get_spot_metadata - First observed
get_user_fees - First observed
get_user_funding_history - First observed
get_user_open_orders - First observed
get_user_order_by_cloid - First observed
get_user_order_by_oid - First observed
get_user_staking_rewards - First observed
get_user_staking_summary - First observed
get_user_state - First observed
get_user_sub_accounts - First observed
get_user_trade_history
TDQS
Scored across 17 tools
Most tools have clearly distinct purposes targeting specific data types (market data, user data, metadata), but there is some overlap between get_perp_dexs and get_perp_metadata which both retrieve perpetual market metadata. The descriptions help differentiate them slightly (one mentions 'decentralized exchange' context), but an agent might still be confused about which to use for general perpetual metadata queries.
All 17 tools follow a consistent 'get_' prefix with snake_case naming, creating a predictable verb_noun pattern (e.g., get_user_state, get_l2_snapshot). The naming convention is uniform throughout, making it easy to understand the tool's purpose at a glance.
With 17 tools, the count is slightly high but reasonable for a comprehensive cryptocurrency exchange data server. The tools cover market data, user data, and metadata across multiple domains (spot, perpetuals, staking), so most tools earn their place, though some consolidation might improve efficiency.
The toolset provides excellent read-only coverage for market data (prices, candles, order books, funding) and user account information (orders, trades, state, staking, fees). The main gap is the lack of write/action tools (e.g., place_order, cancel_order), but as an 'info' server this is understandable and agents can work around it by knowing this is a query-only interface.
Maintenance
Related MCP Connectors
Hosted Hyperliquid MCP server: query OHLCV, funding and positioning data in plain language with a free API key.
Unlock the power of real-time cryptocurrency data with our Crypto Price Insights MCP server.
MCP server connecting AI agents to non-custodial staking data across 130+ networks.
MCP server with quote and live cryptocurrency price tools, local and cloud-deployed transports.
Related MCP Servers
- AlicenseBqualityFmaintenanceAn MCP server implementation that integrates with Hyperliquid exchange, providing access to crypto market data including mid prices, historical candles, and L2 order books.311 npm44MIT
- AlicenseBqualityDmaintenanceAn MCP server that provides real-time whale alerts on Hyperliquid.114MIT
- AlicenseBqualityBmaintenanceMCP server for querying historical and real-time crypto market data across Hyperliquid, Hyperliquid HIP-3, and Lighter.xyz - orderbooks, trades, candles, funding, open interest, liquidations, and data quality metrics.10064 npm12MIT
- FlicenseNot gradedqualityCmaintenanceMCP server for Hyperliquid perpetual DEX with 48 tools for trading, monitoring, risk management, and security. Enables real-time market data, order management, risk validation, and automated trading strategies.-