Skip to main content
Glama
mutexa-labs

@mutexa/mcp

Official
by mutexa-labs

@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/mcp

Claude 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 /health

MUTEXA_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

hl_markets

coins?, limit?

Perp markets: mark, 24h change and volume, open interest, hourly funding and APR, max leverage, size decimals, margin tiers

Hyperliquid metaAndAssetCtxs

hl_positions

address

Open positions with the venue's liquidation price next to the computed one

Hyperliquid clearinghouseState, metaAndAssetCtxs

liq_price

kind: perp (side, entry, size, margin, coin or maxLeverage) or kind: loan (collateral, debtUsd, price, liqThreshold)

Liquidation price and distance

@mutexa/liq-math, live tiers when coin is given

plan_ladder

coin, side, notional, leverage, placement, band, slices or alertThreshold, sizeJitter?, seed?, entry?, feeRate? + accountCost?

Slices, band, single-position comparison, alert sizing, cost preview when both cost inputs are given

@mutexa/ladder with live tiers and mark

plan_loans

collateralSymbol or ltv + liqThreshold + priceUsd, collateralAmount, debtUsd, loans, band, placement

Loans with staggered LTV, band, extra collateral, overMax

@mutexa/ladder, live Aave reserve when a symbol is given

aave_reserves

symbols?

Aave V3 Ethereum reserves at one block: LTV, liquidation threshold and bonus, flags, oracle price

On-chain reads through MUTEXA_ETH_RPC

linkability_score

slices, leverages, jitter, freshAccounts, privateFunding, alertThreshold

Score 0–100, level, factors with fixes

@mutexa/linkability

tracker_view

address, threshold, replan?

The tracker-view CLI's JSON: positions by closest liquidation, threshold flags, re-plans

Hyperliquid clearinghouseState, allMids, metaAndAssetCtxs

liquidation_map

coin, rank, top (at most 100), range?, buckets?

Liquidatable notional per price bucket with reconciling totals

Hyperliquid leaderboard file, clearinghouseState, allMids

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

createServer(options?)

An McpServer with every tool registered; connect it to any transport

startStdio(options?), startHttp({ host?, port?, path?, … })

The two transports the CLI uses

TOOLS, registerTools(server, ctx), createContext(options)

Tool definitions, for embedding them in another server

SERVER_INSTRUCTIONS, VERSION, MAP_MAX_TOP

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_map depends 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 tools
aave_reservesAave V3 Ethereum reservesA
Read-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.

NameRequiredDescriptionDefault
symbolsNoOnly these reserve symbols

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 marketsA
Read-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.

NameRequiredDescriptionDefault
coinsNoOnly these markets
limitNoMost markets to return when no coins are given (default 20)

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 addressA
Read-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).

NameRequiredDescriptionDefault
addressYesPublic Hyperliquid account address (0x…, 42 characters)

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 scoreA
Read-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.

NameRequiredDescriptionDefault
jitterYesTiming spread of the openings
slicesYesNotional per slice in USD
leveragesYesLeverage per slice
freshAccountsYesNo account was used before this position
alertThresholdYesYour alert threshold in USD
privateFundingYesNo slice was funded from a wallet visible to the others

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 priceA
Read-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.

NameRequiredDescriptionDefault
coinNoperp: market whose live margin tiers to use
kindYes
sideNoPosition side
sizeNoperp: size in coins
entryNoperp: entry price
priceNoloan: collateral price in USD
marginNoperp: isolated margin in USD
debtUsdNoloan: debt in USD
collateralNoloan: collateral amount in tokens
maxLeverageNoperp: max leverage for a single tier, instead of coin
liqThresholdNoloan: liquidation threshold, 0..1

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 accountsA
Read-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.

NameRequiredDescriptionDefault
topYesAccounts sampled from the top of the ranking
coinYesHyperliquid perp market name, for example BTC, ETH, kPEPE
rankYesRank by 30-day volume or by account value
rangeNoPrice range on each side of the mark (default 0.25)
bucketsNoPrice buckets across the range (default 60)

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 ladderA
Read-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.

NameRequiredDescriptionDefault
bandYesLeverage stagger across slices, 0..1
coinYesHyperliquid perp market name, for example BTC, ETH, kPEPE
seedNoSeed for the size variation (default 1)
sideYesPosition side
entryNoEntry price (default: current mark)
slicesNoNumber of slices
feeRateNoYour venue fee rate per fill, for example 0.00045
leverageYesTarget leverage of the whole position
notionalYesTotal position size in USD
placementYes
sizeJitterNoSize variation across slices, 0..1 (default 0: equal sizes)
accountCostNoYour cost per extra account in USD
alertThresholdNoYour alert threshold in USD; sets the slice count when slices is not given

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 ladderA
Read-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.

NameRequiredDescriptionDefault
ltvNoMax LTV for new borrows, 0..1 (offline mode)
bandYesLTV stagger across loans, 0..1
seedNoSeed for the size variation (default 1)
loansYesNumber of loans
debtUsdYesDebt in USD
priceUsdNoCollateral price in USD (offline mode)
placementYes
sizeJitterNoSize variation across loans, 0..1 (default 0)
liqThresholdNoLiquidation threshold, 0..1 (offline mode)
collateralAmountYesCollateral in tokens
collateralSymbolNoAave V3 Ethereum reserve symbol, for example WETH

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 addressA
Read-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.

NameRequiredDescriptionDefault
replanNoAlso re-plan each position into a band of slices
addressYesPublic Hyperliquid account address (0x…, 42 characters)
thresholdYesYour alert threshold in USD: positions worth more are flagged. There is no default.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 9 tool updatesv0.1.1
    • First observedaave_reserves
    • First observedhl_markets
    • First observedhl_positions
    • First observedlinkability_score
    • First observedliq_price
    • First observedliquidation_map
    • First observedplan_ladder
    • First observedplan_loans
    • First observedtracker_view

TDQS

A3.8/5.0

Scored across 9 tools

Disambiguation4/5

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.

Naming Consistency3/5

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.

Tool Count5/5

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.

Completeness3/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP 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.
    8
    9 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A 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
  • A
    license
    C
    quality
    D
    maintenance
    A 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.
    41
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A 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.
    8
    28 npm
    2
    MIT