LiqFlow
Hyperliquid liquidation levels, whale positions, liquidations, cohorts and funding. Free.
Should I use this
Quality & Safety
Findings (2)
- LOWin coin_history
- LOWin leaderboard
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"liqflow": {
"url": "https://liqflow.app/mcp"
}
}
}Remote endpoints
https://liqflow.app/mcpstreamable-httpWhat it can do
Tool inventory
Tools (15)
🟢market_overview(top)
The whole market in one reading: how many perps lean bullish vs bearish on liquidation pressure, and the markets leaning hardest each way. The score compares short-liquidation exposure ABOVE price (forced buys if price rises) with long-liquidation exposure BELOW it (forced sells if it falls), weighted by distance. Negative = more fuel below, a bearish pull; positive = the reverse. Uses 2 API calls.
Input Schema
{
"type": "object",
"properties": {
"top": {
"default": 5,
"description": "How many markets to list on each side",
"maximum": 20,
"minimum": 1,
"title": "Top",
"type": "integer"
}
},
"title": "market_overviewArguments"
}🟢list_markets(query)
Market symbols LiqFlow covers, to resolve a name ("solana") to its market symbol (SOL). `scored` markets also have scores, funding, depth and volume; the rest have node data only (positions, levels, liquidations). Uses 2 API calls.
Input Schema
{
"type": "object",
"properties": {
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter by symbol or name, e.g. \"pepe\" or \"bitcoin\"",
"title": "Query"
}
},
"title": "list_marketsArguments"
}🟢open_interest_ranking(limit)
Hyperliquid markets ranked by open interest (USD), with how many positions are open in each, from every wallet on the node.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"default": 20,
"maximum": 100,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
},
"title": "open_interest_rankingArguments"
}🟢coin_snapshot(coin)
Everything about one market right now: live price and 24h change, its liquidation-pressure score, liquidation exposure each side and how close it sits, the nearest big cluster, its rank among all markets, and what changed since the previous snapshot. Start here for any question about one coin. Uses 2 API calls.
Input Schema
{
"type": "object",
"properties": {
"coin": {
"description": "Hyperliquid market symbol, e.g. BTC, ETH, HYPE, xyz:SKHX",
"title": "Coin",
"type": "string"
}
},
"required": [
"coin"
],
"title": "coin_snapshotArguments"
}🟢liquidation_map(coin, range_pct, bands)
Where the forced orders sit around the current price for one market, from every wallet on the node: liquidation prices (longs below = forced sells, shorts above = forced buys), resting stop-loss / take-profit trigger orders, and order-book depth, summed into price bands either side of the mark price, plus the biggest liquidation clusters. This is the "liquidation heatmap" question: where would a move run into cascading liquidations, and how much is there. Uses 2 API calls.
Input Schema
{
"type": "object",
"properties": {
"coin": {
"description": "Hyperliquid market symbol, e.g. BTC, ETH, HYPE, xyz:SKHX",
"title": "Coin",
"type": "string"
},
"range_pct": {
"default": 10,
"description": "How far either side of price to map, in %",
"exclusiveMinimum": 0,
"maximum": 50,
"title": "Range Pct",
"type": "number"
},
"bands": {
"default": 10,
"description": "Price bands per side",
"maximum": 50,
"minimum": 4,
"title": "Bands",
"type": "integer"
}
},
"required": [
"coin"
],
"title": "liquidation_mapArguments"
}🟢funding(coin, limit)
Perp funding rates. With a coin: the rate on each venue (Hyperliquid, Binance, Bybit, OKX, Bitget, Gate) normalised to 8 hours, plus the open-interest weighted aggregate. Without: the markets paying the most positive and most negative funding right now. Positive = longs pay shorts.
Input Schema
{
"type": "object",
"properties": {
"coin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "One market; omit for the most extreme rates across all",
"title": "Coin"
},
"limit": {
"default": 10,
"description": "Markets per side when no coin is given",
"maximum": 50,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
},
"title": "fundingArguments"
}🟢coin_history(coin, metric, days)
A metric's history for one market (with the price where the data has it), thinned to at most 60 points.
Input Schema
{
"type": "object",
"properties": {
"coin": {
"description": "Hyperliquid market symbol, e.g. BTC, ETH, HYPE, xyz:SKHX",
"title": "Coin",
"type": "string"
},
"metric": {
"default": "score",
"description": "score = liquidation-pressure score; funding = aggregate funding; depth = cross-exchange order-book imbalance; volume = cross-exchange traded volume",
"enum": [
"score",
"funding",
"depth",
"volume"
],
"title": "Metric",
"type": "string"
},
"days": {
"default": 7,
"maximum": 90,
"minimum": 1,
"title": "Days",
"type": "integer"
}
},
"required": [
"coin"
],
"title": "coin_historyArguments"
}🟢recent_liquidations(coin, side, min_usd, hours, limit)
Individual Hyperliquid liquidation fills, newest first, straight off the node: who was liquidated, on which market, how big, at what price. One liquidation can be several fills sharing an order id.
Input Schema
{
"type": "object",
"properties": {
"coin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "One market; omit for all",
"title": "Coin"
},
"side": {
"anyOf": [
{
"enum": [
"long",
"short"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Which side was liquidated",
"title": "Side"
},
"min_usd": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Only fills at least this large",
"title": "Min Usd"
},
"hours": {
"default": 24,
"exclusiveMinimum": 0,
"maximum": 720,
"title": "Hours",
"type": "number"
},
"limit": {
"default": 25,
"maximum": 100,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
},
"title": "recent_liquidationsArguments"
}🟢liquidation_totals(coin, hours, interval, limit)
How much was liquidated. Without a coin: every market ranked by liquidated USD over the window, long vs short. With a coin: long and short liquidations per time bucket. Windows that the node missed are listed under `gaps` -- those are missing data, not quiet periods.
Input Schema
{
"type": "object",
"properties": {
"coin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "One market, for a time series; omit for a ranking of markets",
"title": "Coin"
},
"hours": {
"default": 24,
"exclusiveMinimum": 0,
"maximum": 720,
"title": "Hours",
"type": "number"
},
"interval": {
"anyOf": [
{
"enum": [
"5m",
"15m",
"1h",
"4h",
"1d"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Bucket size for the time series; chosen from hours if omitted",
"title": "Interval"
},
"limit": {
"default": 20,
"description": "Markets in the ranking",
"maximum": 100,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
},
"title": "liquidation_totalsArguments"
}🟢cascades(coin, days, min_move_pct, sort, limit)
Past sharp moves (at least `min_move_pct` in one 4-hour step) paired with how much liquidation exposure sat in their path just before -- the evidence for whether clusters actually get run.
Input Schema
{
"type": "object",
"properties": {
"coin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Only this market",
"title": "Coin"
},
"days": {
"default": 90,
"maximum": 365,
"minimum": 1,
"title": "Days",
"type": "integer"
},
"min_move_pct": {
"default": 4,
"description": "Smallest 4-hour move to count",
"maximum": 100,
"minimum": 0.5,
"title": "Min Move Pct",
"type": "number"
},
"sort": {
"default": "time",
"description": "Newest first, or most exposure first",
"enum": [
"time",
"size"
],
"title": "Sort",
"type": "string"
},
"limit": {
"default": 20,
"maximum": 100,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
},
"title": "cascadesArguments"
}🟢top_positions(coin, side, limit)
The largest open positions on Hyperliquid right now, longs and shorts, read live from the node: wallet, size, notional, entry, leverage, liquidation price and how far price is from it, unrealised PnL, and the wallet's size cohort.
Input Schema
{
"type": "object",
"properties": {
"coin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "One market; omit for the largest on any market",
"title": "Coin"
},
"side": {
"anyOf": [
{
"enum": [
"long",
"short"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Omit for both",
"title": "Side"
},
"limit": {
"default": 10,
"description": "Per side",
"maximum": 25,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
},
"title": "top_positionsArguments"
}🟢wallet(address)
One Hyperliquid wallet right now, read live from the node: account value, PnL, every open position with leverage, liquidation price and how far price is from it, and its open orders (limits, stops and take-profits).
Input Schema
{
"type": "object",
"properties": {
"address": {
"description": "Hyperliquid wallet address, 0x...",
"title": "Address",
"type": "string"
}
},
"required": [
"address"
],
"title": "walletArguments"
}🟢cohort_positioning(coin)
How different kinds of traders are positioned: wallets grouped by account size (Micro under $250 up to Whale over $1M) and by all-time PnL (Highly Unprofitable to Highly Profitable), with each group's long and short notional and the share that is long. "Are whales and the profitable traders on the other side of retail?" Uses 2 API calls without a coin.
Input Schema
{
"type": "object",
"properties": {
"coin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "One market; omit for all markets combined",
"title": "Coin"
}
},
"title": "cohort_positioningArguments"
}🟢cohort_top_coins(cohort, side, rank_by, min_notional_usd, limit)
Which coins one trader cohort is most long and most short on, ranked across every market: "What are the most profitable traders most bullish and most bearish on?" Each coin has the cohort's long and short notional, net USD, share long and wallet count, plus the cohort's overall lean across all markets to compare against. Uses 2 API calls without a side.
Input Schema
{
"type": "object",
"properties": {
"cohort": {
"default": "Highly Profitable",
"description": "By all-time PnL: Highly Profitable (over $100k) down to Highly Unprofitable (under -$100k). By account size: Whale (over $1M) down to Micro (under $250).",
"enum": [
"Highly Profitable",
"Profitable",
"Slightly Profitable",
"Slightly Unprofitable",
"Unprofitable",
"Highly Unprofitable",
"Whale",
"Institutional",
"Advanced",
"Mid-Tier",
"Entry-Level",
"Micro"
],
"title": "Cohort",
"type": "string"
},
"side": {
"anyOf": [
{
"enum": [
"long",
"short"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "long: the coins the cohort is most bullish on; short: most bearish on. Omit for both",
"title": "Side"
},
"rank_by": {
"default": "ratio",
"description": "ratio: by the share of the cohort's notional that is long (conviction). net: by long minus short USD (the biggest bets, which favours BTC and ETH)",
"enum": [
"ratio",
"net"
],
"title": "Rank By",
"type": "string"
},
"min_notional_usd": {
"default": 1000000,
"description": "Skip coins where the cohort holds less than this, long plus short. Without a floor a ratio ranking is all tiny markets where a few wallets are 100% one way",
"minimum": 0,
"title": "Min Notional Usd",
"type": "number"
},
"limit": {
"default": 10,
"description": "Coins per side",
"maximum": 25,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
},
"title": "cohort_top_coinsArguments"
}🟢leaderboard(by, limit)
Hyperliquid wallets ranked by all-time PnL or by 30-day volume.
Input Schema
{
"type": "object",
"properties": {
"by": {
"default": "pnl",
"description": "All-time PnL, or 30-day traded volume",
"enum": [
"pnl",
"volume"
],
"title": "By",
"type": "string"
},
"limit": {
"default": 20,
"maximum": 100,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
},
"title": "leaderboardArguments"
}Community
Evidence