@mutexa/mcp
OfficialProvides on-chain reads from Ethereum via a user-supplied RPC endpoint, enabling access to Aave V3 reserve data such as LTV, liquidation threshold and bonus, flags, and oracle prices.
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., "@@mutexa/mcpwhere would a 5x BTC long of $2M liquidate, and how would six slices spread it?"
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.
@mutexa/mcp
A read-only Model Context Protocol server that lets Claude, Cursor or any MCP client reason about liquidation exposure: Hyperliquid markets and positions, liquidation prices, slice and loan ladders, Aave V3 reserves, linkability scores, tracker views and liquidation maps.
Everything runs locally on top of the open Mutexa packages and public venue data. No Mutexa API and no API key are needed. Nothing is signed, no order is placed and no funds move.
Install
Claude Code:
claude mcp add mutexa -- npx -y @mutexa/mcp
# with the Aave V3 tools
claude mcp add mutexa -e MUTEXA_ETH_RPC=https://your-ethereum-rpc -- npx -y @mutexa/mcpClaude Desktop, Cursor and other clients (mcpServers config):
{
"mcpServers": {
"mutexa": {
"command": "npx",
"args": ["-y", "@mutexa/mcp"],
"env": { "MUTEXA_ETH_RPC": "https://your-ethereum-rpc" }
}
}
}Streamable HTTP instead of stdio:
npx @mutexa/mcp --http --port 3000 # http://127.0.0.1:3000/mcp, stateless; GET /healthMUTEXA_ETH_RPC (or --eth-rpc, comma-separated for fallbacks) is only needed by aave_reserves and by
plan_loans with a reserve symbol. There is no built-in default endpoint; use one you trust.
Related MCP server: hl-read
30-second example
From examples/client.ts, which starts the server over stdio like any MCP client would:
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
const client = new Client({ name: "example", version: "0.0.0" });
await client.connect(new StdioClientTransport({ command: "node", args: ["dist/cli.js"] }));
const { tools } = await client.listTools();
console.log(tools.map((t) => t.name).join(", "));
const r = await client.callTool({ name: "hl_markets", arguments: { limit: 3 } });
const { data, source, fetchedAt } = JSON.parse((r.content as { text: string }[])[0]!.text);
for (const m of data.markets) console.log(m.name, m.mark, `max ${m.maxLeverage}x`);
console.log(source, fetchedAt);
await client.close();Then ask your agent things like "where would a 5x BTC long of $2M liquidate, and how would six slices spread that out?", or "what do trackers see on 0x…, with my alert threshold at $250k?".
Tools
Every tool is read-only and answers with one JSON text block:
{ "data": { … }, "source": "Hyperliquid info API (metaAndAssetCtxs)", "fetchedAt": "2026-10-18T00:00:00.000Z" }source names the public call or local computation behind the numbers. When an upstream fails or an input is
missing, the tool answers isError with { "error", "source" } instead of a guess.
Tool | Input | What it returns | Source |
|
| Perp markets: mark, 24h change and volume, open interest, hourly funding and APR, max leverage, size decimals, margin tiers | Hyperliquid |
|
| Open positions with the venue's liquidation price next to the computed one | Hyperliquid |
|
| Liquidation price and distance |
|
| coin, side, notional, leverage, placement, band, | Slices, band, single-position comparison, alert sizing, cost preview when both cost inputs are given |
|
|
| Loans with staggered LTV, band, extra collateral, |
|
|
| Aave V3 Ethereum reserves at one block: LTV, liquidation threshold and bonus, flags, oracle price | On-chain reads through |
| slices, leverages, jitter, freshAccounts, privateFunding, alertThreshold | Score 0–100, level, factors with fixes |
|
|
| The tracker-view CLI's JSON: positions by closest liquidation, threshold flags, re-plans | Hyperliquid |
|
| Liquidatable notional per price bucket with reconciling totals | Hyperliquid leaderboard file, |
Inputs that only the user can know (alert threshold, fee rate, cost per account) are required inputs with no defaults, and the server instructions tell the agent to ask for them.
Library
Export | What it does |
| An |
| The two transports the CLI uses |
| Tool definitions, for embedding them in another server |
| Constants |
options: fetch (all HTTP reads), ethRpcUrls, env, and test hooks (aave, leaderboard, now).
Tests
Every tool is called through an in-memory MCP client against recorded public responses (Hyperliquid markets,
one account under the fake address 0x…ee01, the first leaderboard rows and their positions under fake
addresses 0x…e001…, and one Aave V3 reserve snapshot), the tool list is pinned by a schema snapshot, and the
streamable HTTP transport is exercised on localhost. Fixtures are written by ETH_RPC=… pnpm record <address>;
the RPC URL and the real address are never written to disk. CI never touches the network.
Logs go to stderr only, so stdout stays protocol-clean on stdio.
How Mutexa uses it
This is the agent-facing side of Mutexa: the same math and reads the app uses, exposed so an agent can check a plan, a tracker view or a map and cite where every number came from. Agent trading through slices comes later, through a separate, authenticated path; this server never gets that ability.
Limitations
Read-only. No orders, no signing, no funding.
Hyperliquid and Aave V3 Ethereum only in this release.
The leaderboard file is unofficial.
liquidation_mapdepends on the file the Hyperliquid web app loads, which is not a documented API and can change.Point in time. Prices and positions change every second; always read
fetchedAt.
Mutexa's privacy limits, for anything an agent plans with these tools: slices are hidden from public trackers, not from the venues themselves; clustering by timing is still possible; very large positions still move markets; splitting and privacy rails cost extra fees; fills that carry an integrator fee are marked as such. Follow each venue's terms in your region.
License
MIT © 2026 Mutexa
Available Tools
9 toolsaave_reservesAave V3 Ethereum reservesARead-onlyIdempotent
Risk parameters of every Aave V3 Ethereum reserve at one block: max LTV, liquidation threshold, liquidation bonus, collateral and borrow flags, frozen and paused state, and the AaveOracle price. The data provider and oracle are resolved from the PoolAddressesProvider, and nothing is reported if it no longer points at the expected Pool. Needs MUTEXA_ETH_RPC.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | No | Only these reserve symbols |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/destructive, and the description adds real behavioral context: providers are resolved dynamically from the PoolAddressesProvider, and the tool reports nothing if that no longer points at the expected Pool (a silent-empty failure mode). It also discloses the MUTEXA_ETH_RPC configuration requirement, though it does not say which block is used when none is supplied.
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?
Two compact sentences, front-loaded with what is returned, then the resolution/failure semantics, then the credential requirement. Every clause carries 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?
No output schema exists, and the description compensates by enumerating the returned fields plus the empty-result condition and the RPC env var. Minor gaps: no mention of the optional symbol filter or how the block is chosen, and no note on result size or per-reserve keying.
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 coverage is 100% and the single optional 'symbols' filter is documented there, so baseline is 3. The description's phrasing 'every ... reserve' does not mention that results can be narrowed by symbol, leaving a small gap between prose and 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?
States a specific verb and resource ('Risk parameters of every Aave V3 Ethereum reserve at one block') and enumerates the exact fields returned (max LTV, liquidation threshold, bonus, flags, frozen/paused, oracle price). This is unmistakably distinct from the Hyperliquid/planning siblings.
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?
Usage is only implied by 'at one block' and 'every reserve' — the agent can infer this is a bulk snapshot read. There is no explicit when-to-use/when-not guidance or naming of an alternative (e.g., a single-reserve lookup or price tool) that would be preferred for other cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hl_marketsHyperliquid perp marketsARead-onlyIdempotent
Live Hyperliquid perp markets sorted by 24h volume: mark price, 24h change, volume, open interest, hourly funding and its annualised rate, max leverage, size decimals and margin tiers (notional bound and max leverage per tier). Filter by coins or take the top N.
| Name | Required | Description | Default |
|---|---|---|---|
| coins | No | Only these markets | |
| limit | No | Most markets to return when no coins are given (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/non-destructive, so the bar is lower; the description still adds that results are live and sorted by 24h volume, which tells the agent how to interpret ordering and freshness of the returned list. It omits rate-limit or pagination behavior beyond the schema's limit cap.
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?
Two sentences, front-loaded with the resource and ordering. The long field enumeration is dense but justified since there is no output schema; nothing is redundant, though the field list pushes the single sentence to its limit.
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?
With no output schema, enumerating returned fields (price, change, volume, OI, funding, tiers) is the right call and makes the tool callable as-is. Minor gap: it doesn't say whether limit is ignored when coins is supplied, or what happens for unknown coin names.
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 coverage is 100% — both params are documented with examples and a default of 20 — so the baseline is 3. The description only restates the filter-vs-limit dichotomy without adding format, precedence, or truncation semantics beyond 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?
States a specific resource (Hyperliquid perp markets) with a specific verb/behavior (sorts by 24h volume) and enumerates exactly what data comes back. The resource is clearly distinct from siblings like hl_positions or liquidation_map, so an agent can select it without ambiguity.
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?
"Filter by coins or take the top N" names the two invocation modes but gives no guidance on when to choose one over the other, when to use this vs. a sibling such as hl_positions, or what happens when both parameters are supplied. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hl_positionsHyperliquid positions of an addressARead-onlyIdempotent
Open perp positions of any public Hyperliquid address: side, size, entry, mark, value, leverage, margin mode, margin and unrealized PnL, with the liquidation price Hyperliquid reports next to the one computed from the position's own state (isolated positions only; cross margin depends on the whole account, so computedLiq is null).
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Public Hyperliquid account address (0x…, 42 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the bar is lower; the description still adds real domain nuance — the Hyperliquid-reported liq price is returned alongside a locally computed one, and computedLiq is null for cross-margin because margin depends on the whole account. That explains an otherwise confusing null and is genuine added 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?
A single front-loaded sentence starting with the resource and scope, then the returned fields. It is dense but every clause carries information; it could be split into two sentences for readability but nothing is wasted.
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?
No output schema exists, and the description compensates by listing the returned fields (side, size, entry, mark, value, leverage, margin mode, margin, uPnL, liq prices). Empty-position behavior and any limit on position count are the only gaps for a single-address read 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?
One parameter with 100% schema coverage, where the schema already documents the 0x… 42-character format, so baseline 3 applies. The description only adds that the address must be 'public', a marginal note beyond 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?
States a specific verb+resource ('Open perp positions of ... address') and enumerates the exact fields returned, which is far beyond a tautology. It doesn't reference a sibling tool by name, so the agent must infer that this reads positions while liq_price/liquidation_map serve other purposes.
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?
'of any public Hyperliquid address' implies an unauthenticated lookup for a single account, but there is no explicit when-to-use clause, no exclusions, and no pointer to the close siblings (liq_price, liquidation_map). Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkability_scoreLinkability scoreARead-onlyIdempotent
How easily a set of slices could be clustered by an observer, 0 (hard to link) to 100 (easy), with every factor that added points and its suggested fix: slice count, size spread, leverage spread, timing jitter, fresh accounts, private funding and slices above your alert threshold. A heuristic documented in the linkability spec, not a statistical guarantee.
| Name | Required | Description | Default |
|---|---|---|---|
| jitter | Yes | Timing spread of the openings | |
| slices | Yes | Notional per slice in USD | |
| leverages | Yes | Leverage per slice | |
| freshAccounts | Yes | No account was used before this position | |
| alertThreshold | Yes | Your alert threshold in USD | |
| privateFunding | Yes | No slice was funded from a wallet visible to the others |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, non-open-world behavior. The description adds meaningful context that the score is a heuristic rather than a statistical guarantee and that output includes contributing factors and suggested fixes.
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?
Front-loads the score, range, and output content before the caveat. It is appropriately compact, though the long factor list makes the single sentence dense.
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?
With no output schema, the description explains the score range, contributing factors, suggested fixes, and the non-guarantee caveat. The input schema fully covers parameter semantics, so the remaining gap is mainly exact output formatting.
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 100%, so all six parameters are already documented. The description reinforces their meaning as risk factors, including slices above the alert threshold, but does not add syntax or format details beyond 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?
States a specific computed metric, its 0-100 direction, and the factors it evaluates. It is clearly distinct from the market, position, and planning siblings without needing to name them.
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?
Implies the tool is used to assess how linkable a set of slices is, but it gives no explicit when-to-use, when-not-to-use, or alternative tool guidance. The heuristic caveat adds context but not usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
liq_priceLiquidation priceARead-onlyIdempotent
Liquidation price of a fresh isolated Hyperliquid perp position (kind=perp: side, entry, size in coins, isolated margin in USD, and either coin to use that market's live margin tiers or maxLeverage for a single tier), or of a single-collateral, single-debt Aave V3 loan in standard mode (kind=loan: collateral amount, debt in USD, collateral price, liquidation threshold). Uses Hyperliquid's documented formula and Aave's health factor.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | perp: market whose live margin tiers to use | |
| kind | Yes | ||
| side | No | Position side | |
| size | No | perp: size in coins | |
| entry | No | perp: entry price | |
| price | No | loan: collateral price in USD | |
| margin | No | perp: isolated margin in USD | |
| debtUsd | No | loan: debt in USD | |
| collateral | No | loan: collateral amount in tokens | |
| maxLeverage | No | perp: max leverage for a single tier, instead of coin | |
| liqThreshold | No | loan: liquidation threshold, 0..1 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, open-world, so the bar is lower; the description still adds real value by disclosing that 'coin' triggers a live margin-tier fetch, that only fresh isolated perps are modeled, and that Aave inputs are restricted to standard mode single-collateral/single-debt. Those are genuine modeling limits an agent needs before trusting the output.
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?
Every clause carries information and the purpose leads the sentence. The trade-off is a single very long nested-parenthetical sentence that is harder to scan than a short bulleted split by kind would be.
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 an 11-parameter, two-mode calculator with no output schema, the description covers both modes' required inputs and where live data comes from, which is what an agent needs to select and invoke correctly. The return value is unambiguous from the title 'Liquidation price'.
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 coverage is 91%, so the baseline is 3; the description earns a bump by grouping parameters by 'kind' (perp vs loan) and spelling out the coin-or-maxLeverage either/or, a mutual exclusivity the schema itself does not encode via oneOf. It does not explain units beyond the schema's own text or what happens if both are supplied.
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 opens with a specific computed quantity (liquidation price) and precisely names both supported model types, enumerating the inputs each expects. An agent can tell this is a calculator, not a position/loan viewer, but no sibling (e.g. liquidation_map, plan_ladder, plan_loans) is named as the alternative or contrast.
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?
Usage is implied rather than stated: 'fresh isolated' position and 'single-collateral, single-debt ... standard mode' loan scope out the cases this handles, which hints at when to reach for it. But there is no explicit when-to-use statement, no exclusions (e.g. cross margin, e-mode, multi-collateral), and no routing to liquidation_map or plan_ladder.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
liquidation_mapLiquidation map of large accountsARead-onlyIdempotent
Where the largest Hyperliquid accounts get liquidated on one coin: ranks the leaderboard by 30-day volume or account value, reads the public positions of the top accounts (at most 100), and buckets their notional by liquidation price around the mark (longs below, shorts above). Totals reconcile: in range + outside + no liquidation price = total. The leaderboard is the file the Hyperliquid web app loads, not a documented API.
| Name | Required | Description | Default |
|---|---|---|---|
| top | Yes | Accounts sampled from the top of the ranking | |
| coin | Yes | Hyperliquid perp market name, for example BTC, ETH, kPEPE | |
| rank | Yes | Rank by 30-day volume or by account value | |
| range | No | Price range on each side of the mark (default 0.25) | |
| buckets | No | Price buckets across the range (default 60) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the description adds real behavioral context: the data comes from an undocumented file the web app loads rather than an official API, sampling is capped at 100 accounts, and longs bucket below the mark while shorts bucket above. It also gives the reconciliation invariant (in range + outside + no liquidation price = total) so results can be sanity-checked. It omits failure modes and latency, keeping it at 4.
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?
Three sentences, front-loaded with the core purpose and no filler. The dense 'in range + outside + no liquidation price = total' phrasing takes a re-read, and the data-source caveat sits slightly awkwardly at the end, but nothing is wasted.
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 derived analytics call with no output schema, the description covers provenance, the sampling cap, bucket geometry, and a totals invariant, which is enough to call and interpret it. It does not describe the response structure in detail or what happens for an unknown coin, leaving a small gap.
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 coverage is 100%, so the baseline is 3; the description goes further by clarifying that 'top' is a sample of the ranking, that 'rank' means 30-day volume or account value, and that the buckets run around the mark with longs below and shorts above. That adds interpretation the schema alone does not convey.
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?
States a specific outcome: it ranks the Hyperliquid leaderboard by 30-day volume or account value, reads public positions of the top accounts, and buckets notional by liquidation price around the mark. That is a concrete verb-plus-resource definition an agent can match to a request. It does not name a sibling (e.g. liq_price) to distinguish itself, so it stops short of 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?
Usage is implied rather than stated: the description makes clear you'd call it to see liquidation clustering for one coin, and the 'at most 100' cap is disclosed. But there is no explicit when-not guidance and no routing to alternatives such as liq_price or hl_positions for single-account lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_ladderPlan a liquidation ladderARead-onlyIdempotent
Split one Hyperliquid perp position into isolated slices whose liquidation prices form a band instead of one public line. Placement 'around' keeps the same capital as one position; 'beyond' puts no slice closer to price than the single position (more margin). Give slices, or alertThreshold to size every slice under your alert threshold. Optional cost preview when feeRate and accountCost are given. Uses the market's live margin tiers and mark.
| Name | Required | Description | Default |
|---|---|---|---|
| band | Yes | Leverage stagger across slices, 0..1 | |
| coin | Yes | Hyperliquid perp market name, for example BTC, ETH, kPEPE | |
| seed | No | Seed for the size variation (default 1) | |
| side | Yes | Position side | |
| entry | No | Entry price (default: current mark) | |
| slices | No | Number of slices | |
| feeRate | No | Your venue fee rate per fill, for example 0.00045 | |
| leverage | Yes | Target leverage of the whole position | |
| notional | Yes | Total position size in USD | |
| placement | Yes | ||
| sizeJitter | No | Size variation across slices, 0..1 (default 0: equal sizes) | |
| accountCost | No | Your cost per extra account in USD | |
| alertThreshold | No | Your alert threshold in USD; sets the slice count when slices is not given |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world, non-destructive behavior. The description adds useful context beyond them: it uses the market's live margin tiers and mark, and optionally previews costs when feeRate and accountCost are supplied.
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 compact and front-loaded: it defines the core behavior first, then explains placement, sizing alternatives, and optional cost preview. The sentences are dense but each contributes relevant 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?
For a complex 13-parameter planning tool with no output schema, the description explains inputs and live-data behavior but does not say what the result contains, such as returned slice sizes, liquidation prices, or cost preview structure. That leaves a meaningful gap for correct invocation interpretation.
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 coverage is high at 92%, so the baseline would be 3. The description still adds meaningful semantics by explaining placement modes, alertThreshold-based slice sizing, and the optional cost-preview condition.
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 uses a specific verb and resource: splitting a Hyperliquid perp position into isolated slices whose liquidation prices form a band. It clearly distinguishes the tool's function from data-querying siblings like hl_markets or liq_price, though it does not explicitly name alternative tools.
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?
It explains parameter-level choices, such as placement 'around' vs 'beyond' and using slices vs alertThreshold, which implies how to use the tool. However, it gives no explicit guidance on when to choose this tool over siblings like liquidation_map or plan_loans.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_loansPlan a loan ladderARead-onlyIdempotent
Split one Aave V3 loan (one collateral, one debt, standard mode) into loans with staggered LTV so their liquidation prices form a band. Give collateralSymbol to use the live reserve (LTV, liquidation threshold, oracle price; needs MUTEXA_ETH_RPC), or ltv, liqThreshold and priceUsd to plan offline. Reports the band, extra collateral and whether the single loan is above max LTV.
| Name | Required | Description | Default |
|---|---|---|---|
| ltv | No | Max LTV for new borrows, 0..1 (offline mode) | |
| band | Yes | LTV stagger across loans, 0..1 | |
| seed | No | Seed for the size variation (default 1) | |
| loans | Yes | Number of loans | |
| debtUsd | Yes | Debt in USD | |
| priceUsd | No | Collateral price in USD (offline mode) | |
| placement | Yes | ||
| sizeJitter | No | Size variation across loans, 0..1 (default 0) | |
| liqThreshold | No | Liquidation threshold, 0..1 (offline mode) | |
| collateralAmount | Yes | Collateral in tokens | |
| collateralSymbol | No | Aave V3 Ethereum reserve symbol, for example WETH |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, open-world; the description adds the piece annotations cannot convey — that live mode requires the MUTEXA_ETH_RPC environment variable and fails otherwise. It also previews what the call reports (the band, extra collateral, and whether the single loan already exceeds max LTV), which reduces uncertainty about running it.
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?
Two sentences, no filler: the first defines the operation and output shape, the second gives the mode-selection rule and prerequisites. Mode selection is front-loaded in the second sentence where an agent will look for it before reading the schema.
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 an 11-parameter, no-output-schema tool the description covers the essentials (what it does, required inputs by mode, what it reports) but leaves the required 'placement' enum unexplained — an agent cannot know what 'around' vs 'beyond' does — and says nothing about the sibling plan_ladder's overlapping scope.
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 coverage is 91%, so the baseline would be 3; the description earns above that by grouping parameters into mutually exclusive modes (live-reserve vs offline), which the flat schema cannot express. The gap is the required placement enum (around/beyond), which is left entirely undefined in both schema and description, and seed/sizeJitter are likewise only schema-documented.
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?
States a concrete transformation on a specific resource: splitting one Aave V3 loan (one collateral, one debt, standard mode) into staggered-LTV loans whose liquidation prices form a band. That is far more than a restatement of the name. It does not, however, distinguish itself from the sibling plan_ladder, which the title ('Plan a loan ladder') makes easy to confuse with this tool.
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?
Explicitly splits usage into two modes and names the parameters that select each: collateralSymbol for live reserve data (with the MUTEXA_ETH_RPC prerequisite called out) versus ltv/liqThreshold/priceUsd for offline planning. No guidance is given on when to prefer this tool over the sibling plan_ladder or liquidation_map, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracker_viewTracker view of an addressARead-onlyIdempotent
What public trackers see for any Hyperliquid address: every open position sorted by closest liquidation (side, size, value, leverage, isolated or cross, entry, mark, liquidation price, distance, uPnL), flags for positions above your alert threshold, and optionally a re-plan of each position into isolated slices placed beyond today's liquidation price. Same JSON as the tracker-view CLI.
| Name | Required | Description | Default |
|---|---|---|---|
| replan | No | Also re-plan each position into a band of slices | |
| address | Yes | Public Hyperliquid account address (0x…, 42 characters) | |
| threshold | Yes | Your alert threshold in USD: positions worth more are flagged. There is no default. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, open-world, so the safety profile is covered. The description adds genuine behavioral context beyond that: positions are sorted by closest liquidation, an alert threshold produces flags, and replan projects slices beyond today's liquidation price — the 'same JSON as the tracker-view CLI' line usefully signals output stability. It does not mention rate limits or failure modes for an invalid/empty address.
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?
A single front-loaded sentence leads with the core deliverable and then enumerates the fields, with the optional replan behavior placed last where it belongs. The parenthetical field list is dense but each item is informative; no sentence is filler.
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?
There is no output schema, so the description must carry the return shape — and it does, naming the fields and ordering of positions plus the flag and replan additions. What remains uncovered is minor: whether spot and perp positions are both included, how 'distance' is expressed, and behavior when the address has no positions.
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 coverage is 100%, so all three parameters are already documented with patterns and units, making 3 the baseline. The description does add a little for replan ('isolated slices placed beyond today's liquidation price'), clarifying what 'band of slices' means, but it does not clarify that threshold is a USD value, which the schema states but the description only loosely echoes as 'above your alert threshold'.
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?
It names a specific resource (a Hyperliquid address's open positions) and enumerates exactly what is returned — side, size, value, leverage, entry/mark/liq price, distance, uPnL — plus flagging and optional re-planning. The purpose is unmistakable. It stops short of a 5 because it never distinguishes itself from close siblings like hl_positions or liquidation_map, which plausibly return overlapping position/liquidation 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?
Usage is only implied: 'what public trackers see' and the optional replan flag suggest a monitoring/triage use case, and the required threshold implies it is meant for alert-style screening. There is no explicit when-to-use versus hl_positions, liquidation_map, or liq_price, and no statement of when the replan variant should be chosen over plan_ladder.
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.
9 tool updates
v0.1.1- First observed
aave_reserves - First observed
hl_markets - First observed
hl_positions - First observed
linkability_score - First observed
liq_price - First observed
liquidation_map - First observed
plan_ladder - First observed
plan_loans - First observed
tracker_view
TDQS
Scored across 9 tools
Most tools target clearly different objects: market data, a single liquidation price, a perp ladder plan, a loan ladder plan, reserve parameters, an aggregate liquidation map, and a linkability heuristic. The one real overlap is hl_positions versus tracker_view, which both return the same open positions of an address; the descriptions differentiate them (tracker-style sorting, alert flags and re-planning), but an agent could easily pick the wrong one. plan_ladder and liq_price are also adjacent, though one computes a single price and the other a slice band.
All names are snake_case, which is good, but the convention is mixed: two domain-prefixed tokens (hl_markets, hl_positions), several noun phrases (aave_reserves, liquidation_map, linkability_score), a verb_noun pair (plan_ladder, plan_loans), and an ambiguous hybrid (tracker_view). The hl_ prefix implies a Hyperliquid namespace that was abandoned for every other Hyperliquid tool. Readable, but not a predictable pattern.
Nine tools is well within the sweet spot, and each one covers a distinct piece of the workflow (market data, position inspection, liquidation pricing, two planning tools, reserve data, a linkability score, and a market-wide liquidation map). No tool appears to be a redundant variant or wrapper of another.
The Hyperliquid side is fairly complete for research and planning, and Aave reserves plus offline loan planning are covered. However, there is no way to read an existing Aave position or health factor by address (liq_price's loan mode requires manual inputs), and the planner tools are one-shot with no way to monitor or re-evaluate a ladder after slices are placed. Execution and account/balance data are entirely absent, so every workflow ends in manual work.
Maintenance
Related MCP Connectors
Read-only Hyperliquid analytics: orderflow, liquidation levels, whale positioning, funding.
Real-time Ethereum liquidation intelligence for AI agents and MEV bots.
Read-only Hyperliquid data for AI agents: fills, candles, funding, liquidations, wallet analytics.
Read-only Hyperliquid vault search, risk, drawdown, rankings, TVL, alerts, and comparisons.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for Hyperliquid that provides read-only on-chain wallet analytics. Enables natural-language queries about positions, fills, funding, and realized PnL for any public address.89 npmMIT
- AlicenseNot gradedqualityCmaintenanceA read-only MCP server for Hyperliquid that provides public market data (prices, order books, funding) and any wallet's positions, orders, and fills via MCP tools, without requiring a private key.MIT
- AlicenseCqualityDmaintenanceA read-only Model Context Protocol server for Hyperliquid that exposes over 30 tools to query public market data and user state via the Hyperliquid Info API, without requiring a private key.41MIT
- AlicenseAqualityDmaintenanceA read-only MCP server for querying Hyperliquid perp markets, funding rates, order books, candles, and account positions/fills/funding for any address, without needing API keys or wallets.828 npm2MIT