Directory

Hyperliquid (Free)

TradingFREERoutes in chatHyperliquid

Hyperliquid, free and non-gated: live perp + spot markets, prices, L2 orderbooks, candles, funding (with cross-venue predictions), and the full per-address account surface — positions, margin, PnL, open orders, fills, USDC ledger — plus await_settlement, a real-time WebSocket watch that returns the moment an order fills. Read-only by construction (never touches /exchange, nothing signable). Rate-limited. By Yeetful.

Routability

can the router discover, pick, and call it?
98/100Alinted 7/8/2026, 11:43:35 AM
Param schemas
100% · w25
Descriptions
100% · w20
Live probe
100% · w15
Planner test
100% · w30
Affordances
80% · w10
14 checks
  • schema · 12 endpoints are planner-eligible
  • schema · param-schema coverage 13/13 endpoints (100%)
  • schema · typed params 31/31
  • schema · required flags present
  • description · 12/12 endpoint descriptions carry real intent
  • description · capability tags: trading, perps, spot, funding, portfolio
  • description · 3 example queries
  • probe · https://hyperliquid-mcp.yeetful.com/mcp → HTTP 200
  • planner · "what are my positions on Hyperliquid?" → picked + constructed (tools/call)
  • planner · "what's the BTC funding rate?" → picked + constructed (tools/call)
  • planner · "show the HYPE/USDC orderbook" → picked + constructed (tools/call)
  • affordances · identity params documented for context vars ($USER_ADDRESS)
  • affordances · no escape-hatch tool — every uncovered filter needs a new endpoint (whack-a-mole)
  • affordances · signing hygiene: build-don't-execute language (or no signables)

Suggested fixes

  1. Consider ONE guarded general-query tool exposing the backend's native query language (see snapshot-free graphql_query) so long-tail intents need no new endpoints.
Fix it with Claude Code

Paste this into Claude Code inside the MCP’s repo — it carries the failing checks, the fix list, and the conventions the router grades against.

You are upgrading the MCP service "Hyperliquid (Free)" so an AI router can reliably discover, choose, and call its tools. Yeetful's Reason Router just graded it 98/100 (A). I'll point you at the service's codebase; audit it against the findings below and implement the fixes.

## Failing checks
affordances (80%):
  - no escape-hatch tool — every uncovered filter needs a new endpoint (whack-a-mole)

## Fixes, in priority order
1. Consider ONE guarded general-query tool exposing the backend's native query language (see snapshot-free graphql_query) so long-tail intents need no new endpoints.

## The conventions to build to (what the router needs)
- **Param schemas on every tool/endpoint**: name, type, required-vs-optional, and a description per param. A router refuses to construct calls it cannot validate — schema-less endpoints are invisible.
- **Descriptions that carry user intent**: write what a USER would ask ('crypto spot price by symbol — price of ETH, BTC…'), never what the URL is. Include 2–3 example queries.
- **One guarded escape hatch instead of endless params**: if the backend has a native query language (GraphQL/SQL), expose ONE read-only general-query tool with strict guardrails (single read-only operation, allowlisted root fields, depth + page-size caps, response truncation) and a compact schema card in the tool description (root fields + useful filters + one example). Long-tail intents then need no new endpoints.
- **Declare user-identity params**: any param that should be the CALLER's own address (their votes, follows, balances, orders) must say so in its description ('the user's own wallet address') so routers can inject identity server-side instead of guessing.
- **Server-side joins for the headline intent**: if answering the #1 user question takes two chained calls (e.g. resolve follows → filter proposals), add one param that does the join server-side.
- **Build, don't execute**: anything signable returns an UNSIGNED payload (typed data / tx template) for the user's own wallet. Never hold keys, never sign, never submit on the user's behalf.
- **Free tiers still need rate limiting**: no payment gate means no natural throttle.

Start by reading the tool/endpoint definitions and their input schemas, then apply the fixes smallest-first. After each change, restate which failing check it clears.

Audit before you build: if a fix describes a capability the service ALREADY provides (e.g. an escape hatch or identity param that exists but the grader missed), do NOT duplicate it — say so, skip it, and note it back as a likely router-side scoring gap on Yeetful rather than an MCP deficiency. Only change what this service actually controls.

Tools

13
  • POST/mcp/marketsstart here
    via Yeetful (free)hyperliquid-mcp.yeetful.com

    Hyperliquid perpetual markets: mark/mid/oracle price, 24h change + volume, open interest (USD), hourly + annualized funding, max leverage. Default = top markets by 24h volume; pass coins for specific ones. Answers "what's trading on Hyperliquid" / "BTC funding rate".

    2 parameters
    • coinsstringbody

      Coin filter, comma-separated, e.g. "BTC,ETH". Spot pairs like "PURR/USDC" or bare "PURR" also resolve.

    • firstnumberbody

      How many to return (default ~20, max 100).

  • POST/mcp/candlesstart here
    via Yeetful (free)hyperliquid-mcp.yeetful.com

    OHLCV candle history for one coin (perp or spot). Choose an interval and either hoursBack (default 24) or explicit startTime/endTime (ms). Keep interval × window sane — the response is capped.

    5 parameters
    • coinstringbodyrequired

      Coin: perp name ("BTC") or spot pair ("HYPE/USDC").

    • intervalstringbodyrequired

      Candle interval: 1m 3m 5m 15m 30m 1h 2h 4h 8h 12h 1d 3d 1w 1M.

    • hoursBacknumberbody

      Lookback window in hours (default 24).

    • startTimenumberbody

      Window start, ms since epoch (overrides hoursBack).

    • endTimenumberbody

      Window end, ms since epoch (default now).

  • POST/mcp/portfoliostart here
    via Yeetful (free)hyperliquid-mcp.yeetful.com

    Full Hyperliquid account view for an address: perp positions (size, entry, liquidation px, unrealized PnL, leverage), margin + withdrawable USDC, spot balances, and day/week/month/all-time PnL. THE tool for "what are my positions" / "how is my account doing" (user:"$USER_ADDRESS").

    1 parameter
    • userstringbodyrequired

      EVM address (0x…) of the Hyperliquid account — for the connected user's own portfolio/orders/fills use "$USER_ADDRESS".

  • POST/mcp/spot_markets
    via Yeetful (free)hyperliquid-mcp.yeetful.com

    Hyperliquid spot pairs (HYPE/USDC, PURR/USDC, …): mark/mid price, 24h change + volume. Native '@N' pair names are resolved to token names; the returned nativeName is what orderbook/candles/await_settlement expect for spot coins.

    2 parameters
    • coinsstringbody

      Coin filter, comma-separated, e.g. "BTC,ETH". Spot pairs like "PURR/USDC" or bare "PURR" also resolve.

    • firstnumberbody

      How many to return (default ~20, max 100).

  • POST/mcp/price
    via Yeetful (free)hyperliquid-mcp.yeetful.com

    Live mid prices. With coins, resolves perp names (BTC) and spot aliases (PURR, HYPE/USDC) in one call — the cheapest way to answer "what's ETH at?". Without coins, returns all perp mids.

    1 parameter
    • coinsstringbody

      Coin filter, comma-separated, e.g. "BTC,ETH". Spot pairs like "PURR/USDC" or bare "PURR" also resolve.

  • POST/mcp/orderbook
    via Yeetful (free)hyperliquid-mcp.yeetful.com

    L2 orderbook for one coin (perp or spot): best bid/ask, mid, spread %, and up to 20 aggregated levels per side.

    3 parameters
    • coinstringbodyrequired

      Coin: perp name ("ETH") or spot pair ("HYPE/USDC", "@107").

    • depthnumberbody

      Levels per side (default 10, max 20).

    • nSigFigsnumberbody

      Aggregate price levels to N significant figures (2–5; omit for full precision).

  • POST/mcp/funding
    via Yeetful (free)hyperliquid-mcp.yeetful.com

    Funding for one perp: recent hourly funding history plus the PREDICTED next rate on Hyperliquid vs Binance/Bybit (cross-venue basis). Rates are hourly fractions — ×24×365 for APR.

    2 parameters
    • coinstringbodyrequired

      Perp coin name, e.g. "ETH".

    • hoursBacknumberbody

      History window in hours (default 24).

  • POST/mcp/open_orders
    via Yeetful (free)hyperliquid-mcp.yeetful.com

    An address's resting orders with full detail: side, size, limit price, order type, trigger/TP-SL info, reduce-only flag, oid + cloid. Answers "what orders do I have open?" (user:"$USER_ADDRESS").

    1 parameter
    • userstringbodyrequired

      EVM address (0x…) of the Hyperliquid account — for the connected user's own portfolio/orders/fills use "$USER_ADDRESS".

  • POST/mcp/fills
    via Yeetful (free)hyperliquid-mcp.yeetful.com

    An address's executed trades (fills): price, size, side, direction (Open Long / Close Short…), closed PnL, fee, oid, tx hash. Most recent first; optionally time-bounded. Answers "what did I trade today?" / "did my order execute?".

    4 parameters
    • userstringbodyrequired

      EVM address (0x…) of the Hyperliquid account — for the connected user's own portfolio/orders/fills use "$USER_ADDRESS".

    • startTimenumberbody

      Only fills at/after this ms timestamp.

    • endTimenumberbody

      Only fills at/before this ms timestamp.

    • firstnumberbody

      How many to return (default ~20, max 100).

  • POST/mcp/order_status
    via Yeetful (free)hyperliquid-mcp.yeetful.com

    Status of ONE order by oid or cloid: open / filled / canceled / rejected (+ the order's details and status timestamp). For live "tell me when it settles", use await_settlement instead.

    2 parameters
    • userstringbodyrequired

      EVM address (0x…) of the Hyperliquid account — for the connected user's own portfolio/orders/fills use "$USER_ADDRESS".

    • oidstringbodyrequired

      Order id: the numeric oid from open_orders/fills, or the 0x… cloid.

  • POST/mcp/ledger
    via Yeetful (free)hyperliquid-mcp.yeetful.com

    An address's USDC ledger: kind=funding for funding payments paid/received per position, kind=transfers for deposits, withdrawals, transfers and liquidations. Defaults to the last 7 days.

    4 parameters
    • userstringbodyrequired

      EVM address (0x…) of the Hyperliquid account — for the connected user's own portfolio/orders/fills use "$USER_ADDRESS".

    • kindstringbodyrequired

      "funding" = funding payments; "transfers" = deposits/withdrawals/transfers/liquidations.

    • startTimenumberbody

      Window start, ms since epoch (default 7 days ago).

    • endTimenumberbody

      Window end, ms since epoch (default now).

  • POST/mcp/await_settlement
    via Yeetful (free)hyperliquid-mcp.yeetful.com

    BLOCK until an order settles, then report it — the real-time "did it go through?" tool. Subscribes to the address's fills + order updates over WebSocket and returns as soon as a matching fill or terminal status lands, or after timeoutSeconds (default 30, max 45). With oid it watches that order (checking first whether it ALREADY settled); with just coin or nothing it resolves on the address's next fill.

    4 parameters
    • userstringbodyrequired

      EVM address (0x…) of the Hyperliquid account — for the connected user's own portfolio/orders/fills use "$USER_ADDRESS".

    • oidstringbody

      Order id to watch: numeric oid or 0x… cloid (optional).

    • coinstringbody

      Only settle on events for this coin (perp name or spot nativeName).

    • timeoutSecondsnumberbody

      Max seconds to wait (default 30, max 45).

  • POST/mcp/info_query
    via Yeetful (free)hyperliquid-mcp.yeetful.com

    Escape hatch: run any READ-ONLY Hyperliquid /info request for data the other tools don't cover (vaults, staking, fees, sub-accounts, TWAP fills…). Pass the JSON body, e.g. {"type":"userFees","user":"$USER_ADDRESS"}. Allowlisted types only; read-only by construction.

    1 parameter
    • requeststringbodyrequired

      The /info request body as JSON, e.g. {"type":"vaultDetails","vaultAddress":"0x…"}.