flowscan-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@flowscan-mcpwhat did Hyperliquid earn in fees yesterday?"
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.
flowscan-mcp
An MCP server that exposes the data shown on flowscan.xyz as tools for AI agents. Flowscan is a real-time explorer and analytics site for the Hyperliquid blockchain (HyperCore, HIP-3 perp DEXs and HIP-4 outcome markets). It is not related to the Flow blockchain. With this server an agent can answer questions such as "what did Hyperliquid earn in fees yesterday", "who holds the largest BTC longs", "which builder code earned the most this week" or "what positions does 0x... have open", using the same numbers a person would see on the site.
44 read-only tools, grouped by Flowscan page; 58 with the opt-in Hyperliquid-direct mode
Hyperliquid mainnet only (Flowscan has no testnet mode)
No API key
stdio transport by default, Streamable HTTP with
--http(Remote (HTTP) and Docker); Node.js 20 or newer (22 or newer for the three WebSocket tools of direct mode)
Works with any MCP client
Nothing here is specific to one vendor. Any client that speaks the Model Context Protocol can use the server: Claude Desktop and Claude Code, OpenAI Codex and ChatGPT, Cursor, VS Code with GitHub Copilot, Gemini CLI, Zed, Cline, Continue, Grok, Hermes Agent, and agent frameworks such as the OpenAI Agents SDK, LangChain and the Vercel AI SDK. Local clients start it over stdio; cloud clients reach it over Streamable HTTP. Tool schemas are listed in a portable subset of JSON Schema (no $schema, no const, no exclusive bounds), which suits model APIs with strict schema rules such as Gemini and OpenAI function calling. For clients that cannot load Claude skills, the server also serves its tool-selection guide as the MCP prompt flowscan_guide and the resource flowscan://guide, and the same rules are in AGENTS.md. Setup for each client: Client configuration and docs/clients.md.
Related MCP server: Hyperliquid MCP Updated
Two modes
The server has two modes. The default is strict; the second is opt-in.
Strict (default) | Hyperliquid-direct (opt-in) | |
Enable | nothing to set |
|
Tools | 44 | 58: the same 44 plus 14 Hyperliquid-direct tools |
Hosts contacted | only |
|
Adds | block and transaction lookups, the live block/tx feed, prices, candles, order books, recent trades, spot token directory, perp DEX list, validator APR/uptime, borrow/lend APYs, and the address page's portfolio chart, HyperEVM balance and Unit bridge operations | |
Tool list size (JSON schemas the client loads) | about 59,700 characters | about 74,300 characters |
The tool list is loaded into the model's context, so direct mode costs roughly a quarter more context on every conversation. Enable it only if you need the extra panels.
Strict mode: only flowscan.xyz
The server sends requests to exactly one host: https://www.flowscan.xyz. It calls the same /api/* routes the Flowscan web frontend calls. It never contacts api.hyperliquid.xyz, rpc.hyperliquid.xyz, api-ui.hyperliquid.xyz, api.hyperunit.xyz, Hydromancer or any other upstream directly. This is enforced in code: the Flowscan client (src/client.ts) refuses any URL that is not https://www.flowscan.xyz, so FLOWSCAN_BASE_URL cannot point it anywhere else, and the upstream client refuses every request while the switch is off. (The address tools use Flowscan's own /api/hydromancer/info route. That route is served by www.flowscan.xyz; whatever Flowscan's backend does behind it is not visible to, or called by, this server.)
This rule has a cost: some things you can see on Flowscan are fetched by your browser straight from Hyperliquid hosts, not from Flowscan's servers, so strict mode cannot return them. See Not covered.
Hyperliquid-direct mode (opt-in)
With FLOWSCAN_HYPERLIQUID_DIRECT=1, the server also serves those in-browser panels by making exactly the requests the Flowscan page makes (the same request bodies and WebSocket subscriptions, found in Flowscan's JavaScript bundles) to exactly the hosts the page uses. Hard limits, in src/upstream.ts and unit-tested:
Allowlist:
api.hyperliquid.xyz,rpc.hyperliquid.xyz,api-ui.hyperliquid.xyz,api.hyperunit.xyz;https://orwss://only, default port only. Anything else is refused before any I/O.Mainnet only (these are the mainnet hosts Flowscan uses).
At most 2 upstream requests at a time (WebSockets have their own limit of 2).
Short caches: prices 5 s, metadata (spot/perp metas, validator summaries, reserves) 60 s, explorer blocks/txs and Unit operations 30 s, portfolio 20 s; the HyperEVM balance is not cached.
HTTP 429 from Hyperliquid is never retried; the error carries a
hintwith how long to wait. Other 4xx are not retried; 5xx, timeouts and network errors are retried up to twice.flowscan_live_feed,flowscan_order_bookandflowscan_recent_tradesuse WebSockets and need Node.js 22 or newer (globalWebSocket). On Node 20 they return an error; everything else works.
Results from these tools use a different envelope (see Output shaping): source is the upstream URL that was called, shownOn is the Flowscan page where the same data appears, and mode is "hyperliquid-direct".
These /api/* routes and upstream requests are undocumented. Flowscan or Hyperliquid can change them at any time. When one breaks, the tool returns a structured error that names the route (see Errors) instead of guessing.
Quick start
Pick one of three ways to run it.
1. From GitHub with npx (no clone). package.json has a prepare script, so npm builds the TypeScript on install:
npx -y github:joshavenue/flowscan_mcp2. From a local clone.
git clone https://github.com/joshavenue/flowscan_mcp
cd flowscan_mcp
npm install
npm run build
node dist/index.jsThen point your MCP client at node /absolute/path/to/flowscan_mcp/dist/index.js.
3. From npm (once published). The package has not been published to npm yet. After it is, this will work:
npx -y flowscan-mcpStarted by hand, the server waits for MCP messages on stdin and prints flowscan-mcp ready (stdio) to stderr. You normally let the MCP client start it. To poke at the tools interactively, use the MCP Inspector:
npx @modelcontextprotocol/inspector node dist/index.jsClient configuration
The snippets below cover the most common clients. docs/clients.md has the full matrix: Codex, ChatGPT, the OpenAI Responses API and Agents SDK, Cursor, VS Code, Devin Desktop (formerly Windsurf), Cline, Roo Code, Continue, Zed, JetBrains AI Assistant, Gemini CLI, Gemini Code Assist, Antigravity, Grok, Hermes Agent, LangChain, the Vercel AI SDK and others, each with the vendor documentation it was checked against and whether the client can use the flowscan_guide prompt. Ready-to-copy config files are in examples/.
Each snippet uses npx from GitHub. With a local clone, use "command": "node" and "args": ["/absolute/path/to/flowscan_mcp/dist/index.js"] instead. After the npm release, the args become ["-y", "flowscan-mcp"].
Claude Desktop
Edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json, Windows: %APPDATA%\Claude\claude_desktop_config.json) and restart Claude Desktop. See examples/claude_desktop_config.json for the local-clone form.
{
"mcpServers": {
"flowscan": {
"command": "npx",
"args": ["-y", "github:joshavenue/flowscan_mcp"]
}
}
}Claude Code
claude mcp add flowscan -- npx -y github:joshavenue/flowscan_mcpTo share it with a project, commit a .mcp.json at the project root with the same mcpServers object as above (see examples/mcp.json). In Claude Code the tools show up as mcp__flowscan__<tool name>, for example mcp__flowscan__flowscan_revenue_summary.
Cursor
.cursor/mcp.json in the project, or ~/.cursor/mcp.json for all projects (examples/cursor.mcp.json):
{
"mcpServers": {
"flowscan": {
"type": "stdio",
"command": "npx",
"args": ["-y", "github:joshavenue/flowscan_mcp"]
}
}
}Cursor users have reported a cap of 40 MCP tools across all servers; strict mode has 44. If you hit it, see Limiting the tool list.
Codex
~/.codex/config.toml (shared by the Codex CLI and IDE extension; examples/codex.config.toml):
[mcp_servers.flowscan]
command = "npx"
args = ["-y", "github:joshavenue/flowscan_mcp"]
startup_timeout_sec = 120
tool_timeout_sec = 120Codex's default startup timeout (10 s) is too short for the first npx build, hence startup_timeout_sec. Codex reads AGENTS.md; this repository's AGENTS.md is ready to copy into your project.
VS Code (GitHub Copilot)
.vscode/mcp.json in the workspace. Note the top-level key is servers (examples/vscode.mcp.json):
{
"servers": {
"flowscan": {
"type": "stdio",
"command": "npx",
"args": ["-y", "github:joshavenue/flowscan_mcp"]
}
}
}Gemini CLI
gemini mcp add --scope user flowscan npx -- -y github:joshavenue/flowscan_mcpor the same mcpServers object as Claude Desktop in ~/.gemini/settings.json (examples/gemini.settings.json). Gemini CLI reads GEMINI.md, not AGENTS.md; this repository's GEMINI.md imports AGENTS.md.
Passing environment variables
Every stdio config accepts an env object. To turn on Hyperliquid-direct mode:
{
"mcpServers": {
"flowscan": {
"command": "npx",
"args": ["-y", "github:joshavenue/flowscan_mcp"],
"env": { "FLOWSCAN_HYPERLIQUID_DIRECT": "1" }
}
}
}See examples/claude_desktop_config.direct.json and examples/mcp.direct.json. In Codex the block is [mcp_servers.flowscan.env]; in VS Code it is the same env object under servers. With the CLIs:
claude mcp add flowscan -e FLOWSCAN_HYPERLIQUID_DIRECT=1 -- npx -y github:joshavenue/flowscan_mcp
codex mcp add flowscan --env FLOWSCAN_HYPERLIQUID_DIRECT=1 -- npx -y github:joshavenue/flowscan_mcpOther variables (see Environment variables) go in the same env object, for example "FLOWSCAN_MAX_RESULT_CHARS": "30000". Restart the client after changing them; the mode is fixed when the server starts.
Remote (HTTP) and Docker
Clients that connect to a URL instead of starting a process (ChatGPT, the OpenAI Responses API, Grok, Claude custom connectors, or any client you prefer to run against a shared server) use the Streamable HTTP transport:
npx -y github:joshavenue/flowscan_mcp --http # MCP endpoint: http://127.0.0.1:8787/mcp
curl http://127.0.0.1:8787/healthz # {"ok":true,"mode":"strict","tools":44,...}--port <n> and --host <addr> (or PORT, HOST, FLOWSCAN_MCP_TRANSPORT=http) change the defaults. The server is stateless by default (--stateful keeps Mcp-Session-Id sessions) and also serves the legacy HTTP+SSE transport on /sse for older clients. It has no authentication: it binds 127.0.0.1 and accepts only local Host headers unless FLOWSCAN_MCP_ALLOWED_HOSTS names more, and refuses browser origins not listed in FLOWSCAN_MCP_CORS.
Pointing a local client at it, for example:
claude mcp add --transport http flowscan http://127.0.0.1:8787/mcp# ~/.codex/config.toml
[mcp_servers.flowscan]
url = "http://127.0.0.1:8787/mcp"{ "mcpServers": { "flowscan": { "url": "http://127.0.0.1:8787/mcp" } } }(the last one is Cursor's .cursor/mcp.json; VS Code uses {"servers": {"flowscan": {"type": "http", "url": ...}}} and Gemini CLI uses httpUrl).
Docker (no published image yet; build from a clone):
docker build -t flowscan-mcp .
docker run --rm -p 127.0.0.1:8787:8787 flowscan-mcp
docker run --rm -p 127.0.0.1:8787:8787 -e FLOWSCAN_HYPERLIQUID_DIRECT=1 flowscan-mcpChatGPT, the Responses API, grok.com and the xAI API call the server from their own infrastructure, so they need a public HTTPS URL: the container behind a reverse proxy with TLS, or a tunnel to your machine (set FLOWSCAN_MCP_ALLOWED_HOSTS to the public hostname in both cases). Details, including which tunnels work: docs/clients.md.
Agent guidance (skill, prompt, AGENTS.md)
The server is most accurate when the model also has the tool-selection rules (which tool fits a question, mainnet only, quote the computed totals, how to say something is not served). They come in three forms with the same content:
skills/flowscan/SKILL.md, an agent skill. For Claude Code, copy the folder to
~/.claude/skills/flowscan(or.claude/skills/flowscaninside a project).The MCP prompt
flowscan_guideand the resourceflowscan://guide, served by the server itself, for clients that support MCP prompts or resources (Claude Code:/mcp__flowscan__flowscan_guide).flowscan://coverageserves the coverage map as JSON.AGENTS.md, a shortened copy for clients that read
AGENTS.md(Codex, Cursor, VS Code, Zed, Hermes Agent and others). docs/clients.md lists the rules file each client reads.
Tools
These 44 tools are available in both modes. All tools are read-only (annotated readOnlyHint). Required parameters are in bold. "fields/limit/offset" means the tool accepts the standard output-shaping parameters; "fields" alone means it only accepts fields. Default page sizes are noted where a tool pages a list. Each tool's description names the Flowscan page it mirrors; the route is in the source field of every result.
Start here
Tool | Returns | Key params |
| Map of Flowscan pages to tools, what is not served, HIP-3 DEX display names vs on-chain prefixes ( |
|
Homepage (/)
Tool | Returns | Key params |
| "Stablecoin Perp Margin" panel: stablecoin value on HyperCore split into spot balances and perp margin, overall and per token (USDC, USDT, USDE, USDH): balances, holders/traders, average/median, total value, market share. USD. | fields |
| Perp positioning snapshot for every perp market (about 330, including HIP-3 markets like |
|
| Open positions in one market, largest first: address, signed size, notional, side, entry, leverage, liquidation price, account value, funding PnL, all-time PnL, size change since the previous snapshot; |
|
| One address's open perp positions across all markets (including HIP-3) from the latest snapshot, sorted by notional, with |
|
openInterest in the perp snapshot (and OI in the HIP-3 tools) is Flowscan's two-sided figure: long notional + short notional. That is twice the one-sided OI some other interfaces show. In direct mode, flowscan_prices returns Hyperliquid's own figure, which is on the same two-sided basis (openInterestUsdTwoSided, directly comparable), and openInterestUsdOneSided (half). Always say which one you quote. The homepage "24h Revenue" card is served by the revenue tools below.
Revenue (/revenue)
Tool | Returns | Key params |
| One row per UTC day, oldest first: |
|
| Daily HIP-3 deployer fees ( |
|
| Daily write/read priority gas ( |
|
| For the last 1, 7 and 30 complete UTC days: native fees, HIP-3 fees, their sum | fields |
Flowscan's headline "Combined" revenue is native HyperCore fees + HIP-3 HyperCore fees + priority gas converted at the live HYPE price. Deployer fees are not part of it. Flowscan's routes do not expose the HYPE price and this server does not fetch it, so gas is reported in HYPE and the USDC part is totalUsdcExcludingGas.
Address (/address/{address})
Tool | Returns | Key params |
| Account role (user/vault/subAccount/agent/missing), lifetime PnL summary (PnL, win rate, trades, hold time, volume, fees, funding, days active, |
|
|
|
|
| Fills, newest first: coin, price, size, side, direction, closed PnL, fee, tx hash, time and |
|
| Newest first, rows with |
|
|
|
|
| Vault equities (vault, equity, lock-up) and sub-accounts (name, address, account value, notional, withdrawable, open positions, non-zero spot balances). |
|
| Smaller widgets: approved builders (with max fee), HyperCore borrow/lend state and health, API rate limit, TWAP slice fills. |
|
flowscan_address_perp_positions (homepage section) also takes an address. For orders, fills and ledger, quote count, countsByStatus and totals rather than adding rows; paging.rowsReturned counts the rows in the (possibly capped) upstream response, not every row in the period.
Staking (/validators)
Tool | Returns | Key params |
| Total HYPE staked, delegator and validator counts, and every validator (about 35) with name, address, commission (bps), total delegated, staker count, jailed flag; |
|
| One validator's summary plus its delegators |
|
| Recent delegation/undelegation events, newest first: user, amount (HYPE), |
|
Peers (/peers)
Tool | Returns | Key params |
| Crawl of the Hyperliquid gossip network (about 600 nodes). Default: meta (crawl time, counts, reachability, states), footprint (top countries, ASNs) and sentries. |
|
HIP-3 perp DEXs (/hip-3)
Tool | Returns | Key params |
| Totals across all HIP-3 DEXs (volume all-time/30d/90d, trades, traders, new users, OI), per-DEX and per-collateral market share, DEX list with collateral, builder-routed share of volume (top 3 builders per DEX), and | fields |
| Daily values per DEX for one metric as dated rows |
|
| All HIP-3 markets (dex, symbol, canonical underlying, asset class). With |
|
| One DEX: collateral, totals, every market with all-time volume, traders and current OI (sorted by volume), dated daily-total rows (today flagged partial). Unknown DEX names are an error that lists the valid ones. |
|
| Share of HIP-3 volume routed through builder codes, per-DEX builder volume with top builders, and 800+ builders ranked by HIP-3 volume only. |
|
| About 240 real-world-asset symbols with the matching Binance USDT-M futures: Binance OI, 24h volume, last price. With |
|
HIP-4 outcome markets (/hip-4)
Tool | Returns | Key params |
|
|
|
| YES and NO candles for one outcome ( |
|
| Readable labels for HIP-4 asset ids such as |
|
Spot stocks (/spot-stocks)
Tool | Returns | Key params |
| Tokenized stocks on Hyperliquid spot: xStocks NVDAX, SPYX, QQQX, SKHYX, MUX, SNDKX, SPCXX, TSLAX, AAPLX, CRCLX and Dinari SPCXD. |
|
Weekend trading (/weekend-trading)
Tool | Returns | Key params |
| Tracked weekends, newest first ( |
|
| For HIP-3 TradFi perps ( |
|
| Per perp market: long/short counts and notional at Friday close vs the latest snapshot, new/closed positions, net changes, optionally the top 5 address changes. |
|
| One HIP-3 TradFi market's Friday-to-Sunday move for every tracked weekend, with ISO timestamps. A bare symbol ( |
|
Builders (/builders, /builders/{id})
Tool | Returns | Key params |
| Resolves a builder name, id or address (substring) to candidates with id, name, category, address, revenue and volume per window, total users, and |
|
| One builder's total and daily revenue (USD) over any range, cross-checked between |
|
| "Builder Arena": about 1800 builders ranked by one metric over a fixed window. Compact rows |
|
| All-time builder revenue, volume, users and avg revenue per user, overall and per category, plus the per-builder all-time list. | fields/limit/offset (default 50) |
| Revenue per builder per UTC day for a date range, with per-builder and grand totals (top 20 builders by default). Invalid dates are an error; a future end date is clamped with a note. |
|
| Daily active traders and new traders since 2025-07-27, overall or per builder. |
|
| One builder's dashboard over a fixed window ending yesterday (UTC): stats (volume, revenue, fills, unique/new traders, volume shares, run-rate), daily series, volume/revenue by asset; |
|
The leaderboard and dashboard only offer fixed windows (1d/7d/30d/90d/all_time and 7d/30d/90d/all). For any other range, such as "the past 45 days", use flowscan_builder_revenue. Builder names are not unique on Flowscan (there are two "fomo" builders, and one's id is the other's name), so resolve names with flowscan_builder_lookup first and pass the address or id:<id>.
Builder Intelligence (/builder-intelligence)
Tool | Returns | Key params |
| The roughly 120 analysed builders (id, name, category, total/active users, revenue, volume, 7d new users) and the categories. |
|
| One builder's report: user status, revenue, cohorts, lifecycle, retention, daily activity, top users, heatmap, daily revenue. Address lists are reduced to |
|
| Aggregates for a category or |
|
"7d new users" in the leaderboard, the user series and Builder Intelligence come from different Flowscan datasets and can differ.
Addresses must be 0x followed by 40 hex characters. Exact parameter descriptions are in the tool schemas the server advertises (src/tools/*.ts).
Hyperliquid-direct tools (opt-in)
Registered only when FLOWSCAN_HYPERLIQUID_DIRECT=1 (see Two modes). Each mirrors a Flowscan panel that the Flowscan page loads from Hyperliquid in the browser; "Shown on" is the page, and the result's shownOn field links it. Same conventions as above: required parameters in bold, "fields/limit/offset" = the standard shaping parameters.
Tool | Shown on | Upstream | Returns | Key params |
|
|
| Height, time, hash, proposer, tx count, success rate, failed count, transaction breakdown by action type, and the transactions table (hash, user, type, status, one-line summary). |
|
|
|
| Hash, block, time, user, status/error, action type and Flowscan label, a one-line summary (asset, side, size, price, notional, amount, destination) and the full action payload. |
|
|
|
| Listens for |
|
|
|
| Mark, mid, oracle, 24h change, hourly funding and APR, premium, open interest as |
|
|
|
| OHLCV rows |
|
|
|
| One L2 snapshot: top bids/asks with size, order count, cumulative size and USD, best bid/ask, mid, spread (bps). Coin: |
|
|
|
| The most recent trades (Hyperliquid sends the last 30): time, side (buy = taker bought), price, size, USD notional, hash, buyer, seller, plus buy/sell volume and VWAP. Node 22+. |
|
|
|
| Spot directory per pair: pair id ( |
|
|
|
| Every perp DEX (main + HIP-3): index, on-chain prefix, Flowscan display name, collateral token, active/delisted market counts and market names. |
|
|
|
| Per validator: stake (HYPE), commission, jailed/active, recent blocks proposed, uptime % and predicted APR % for the window, plus average APR. |
|
|
|
| Per token: supply APY, borrow APY, utilization, total supplied/borrowed, available, oracle price, LTV. |
|
|
|
| Account value and PnL history for a window, downsampled with ISO times, latest/min/max and window volume; |
|
|
|
| HyperEVM HYPE balance: exact wei, HYPE decimal string and a float. HyperCore balances are in |
|
|
|
| Unit bridge operations between Hyperliquid and Bitcoin/Ethereum/Solana, newest first: time, asset, chains, direction, amount, USD value at current prices, state, tx hashes and addresses; totals by direction and asset. |
|
In direct mode flowscan_coverage reports mode: "hyperliquid-direct" and lists these tools on their pages.
DEX names
The /hip-3 analytics use display names, while market symbols (xyz:TSLA), address data and deployer fees use the on-chain DEX prefix. Tools that take a dex (the HIP-3 tools, flowscan_revenue_deployer_fees and flowscan_address_summary) accept either form, case-insensitively. flowscan_hip3_dex and flowscan_address_summary reject an unknown name with an error that lists the valid ones; in the other tools an unknown name simply matches nothing.
Display name | On-chain prefix |
XYZ |
|
FLX |
|
Hyena |
|
KM |
|
VNTL |
|
Dreamcash |
|
Paragon |
|
Entropy |
|
flowscan_coverage (hip3DexNames) and flowscan_hip3_overview (dexAliases) return the same table.
Output shaping
Several Flowscan routes return megabytes of JSON. Tool results are shaped so they stay usable by a model.
Envelope. A successful result is one compact JSON text block. Pretty-printed and abridged, it looks like this:
{
"source": "https://www.flowscan.xyz/api/perp-snapshot/markets",
"network": "mainnet",
"paging": { "total": 330, "offset": 0, "limit": 60, "hasMore": true },
"data": { "...": "..." }
}source is the Flowscan route the data came from. For POST routes it is the route path only, without the request body (such as {type: "hypercoreFeeSummary"}). Some tools add other top-level keys such as units, kind, window, capped, coveredRange, nextStartTime or note. flowscan_coverage returns the coverage map directly, without the envelope.
The Hyperliquid-direct tools use this envelope instead (illustrative block height, abridged):
{
"source": "https://rpc.hyperliquid.xyz/explorer",
"shownOn": "https://www.flowscan.xyz/block/812345678",
"mode": "hyperliquid-direct",
"network": "mainnet",
"fetchedAt": 1790924498621,
"fetchedAtIso": "2026-10-02T07:41:38.621Z",
"request": { "height": 812345678, "type": "blockDetails" },
"data": { "...": "..." }
}source is the upstream URL that was called, shownOn the Flowscan page where the same data is shown, fetchedAt/fetchedAtIso when the result was built (quote it as the snapshot time for prices and other live figures), and request the body or WebSocket subscription that was sent (a list when several requests were combined). Some add shownOnNote, oiNote, paging or totals.
fields. A list of keys or dotted paths to keep, relative to data, for example ["summary", "by_token.USDC"]. A leading data. is accepted and stripped. Everything else in data is dropped. When data is a list of rows (revenue series, orders, fills, ledger), paths are relative to each row (delta.usdc, not data.delta.usdc). A path that matches nothing is never silent: the result gets _fieldsNotFound (the paths that missed) and _availableFields (the keys that do exist, from data or its first row), so a typo cannot be mistaken for "no data".
limit / offset. Page through the tool's main list. Each tool has its own default page size (see the tools table). paging.hasMore tells you whether there is more. The address orders, fills and ledger tools report paging.rowsReturned instead of paging.total, because the upstream response may itself be capped. Some tools have a limit with a different meaning, such as the number of positions or events Flowscan returns; their descriptions say so.
Totals. Tools that return many rows also return totals computed over every matched row, not just the current page: rangeTotals (revenue series), totals (fills, ledger and funding), count/countsByStatus (orders), marketSummary/filteredSideSummary (positions). Quote these instead of adding rows.
Size cap. If the serialized result is longer than FLOWSCAN_MAX_RESULT_CHARS (default 40,000 characters; dense JSON results of about 51,000 characters were too large for Claude Code's MCP output limit in the eval below), the server shortens the largest lists (keeping their first items) until it fits, and the result stays valid JSON. It then carries two extra top-level keys:
{
"_truncated": [{ "path": "data.markets", "originalLength": 330, "kept": 120 }],
"_truncatedNote": "[TRUNCATED: response was 152345 chars; the lists in _truncated were shortened to their first items to stay under 40000. Use `fields`, `limit`/`offset` or a narrower query for the rest.]"
}(If the top-level value was a list, it is wrapped as {"items": [...]} first.) Only if that is still not enough, for example because of one huge string, is the text cut at the limit and followed by a plain [TRUNCATED: ...] marker; that last-resort output is not valid JSON. In either case, ask again with fields, a smaller limit or a narrower tool.
Errors
Failures come back as an MCP tool error (isError: true) with this body:
{"error":"Flowscan returned HTTP 404 for /api/...","status":404,"route":"/api/...","source":"www.flowscan.xyz"}For the Hyperliquid-direct tools, source is the upstream host and route the URL plus request type, for example "https://api.hyperliquid.xyz/info {type:candleSnapshot}". A 429 from Hyperliquid also has a hint with how long to wait; it is not retried. A block or transaction that does not exist is a 404 ("Block not found" / "Transaction not found").
status is null for timeouts and network errors. status and route are both null for errors the server raises itself before calling Flowscan, such as an invalid date range, an unknown DEX name or an unknown validator. An unknown market in flowscan_perp_positions is a 404 whose message lists candidate symbols.
Only transient failures are retried, up to twice with backoff: HTTP 429, HTTP 5xx, timeouts and network errors. HTTP 400/404 and the deterministic HTTP 500 that Flowscan's address route returns for a malformed query (body containing "Check your request body") are returned immediately.
Environment variables
All are optional.
Variable | Default | Effect |
| unset (strict mode) |
|
|
| Kept for tests only. The client refuses any URL that is not |
|
| Per-request timeout in milliseconds. When set, it applies to both. |
|
| Maximum simultaneous requests to Flowscan. Extra calls wait. |
|
| In-memory cache lifetime for ordinary responses. Identical requests within this window reuse the cached result. |
|
| Cache lifetime for large, slow-changing payloads (HIP-3 snapshot, per-DEX and builder stats, Binance comparison, builders leaderboard and all-time summary, builders user series, builder intelligence). |
|
| Maximum characters in one tool result before lists are shortened (see Size cap). Raising it can make results too large for some MCP clients. |
Not covered
Not covered in strict mode (available in direct mode)
These appear on flowscan.xyz but are not served by Flowscan's servers. The Flowscan page fetches them in your browser directly from Hyperliquid hosts (rpc.hyperliquid.xyz, api.hyperliquid.xyz, api-ui.hyperliquid.xyz, api.hyperunit.xyz). In strict mode the server only talks to www.flowscan.xyz, so it cannot return them. With FLOWSCAN_HYPERLIQUID_DIRECT=1 they are served by the tool in brackets:
Block details,
/block/{height}(flowscan_block)Transaction details,
/tx/{hash}(flowscan_transaction)The homepage live block and transaction feed (
flowscan_live_feed)Live market prices such as HYPE/USD or BTC, funding and 24h volume (
flowscan_prices), candles (flowscan_candles), order books (flowscan_order_book) and recent trades (flowscan_recent_trades)The spot token directory and perp DEX market lists (
flowscan_spot_tokens,flowscan_perp_dexs)Validator APR, uptime and recent blocks on
/validators(flowscan_validator_summaries)Borrow/lend supply and borrow APYs (
flowscan_borrow_lend_reserves)On the address page: the portfolio chart (
flowscan_address_portfolio), the HyperEVM balance (flowscan_address_evm_balance) and Unit bridge operations (flowscan_address_unit_operations)
Some prices are available in strict mode because Flowscan serves them: entry and liquidation prices in position data, tokenized-stock marks (flowscan_spot_stocks), HIP-4 outcome prices and candles (flowscan_hip4_*), weekend TradFi closes (flowscan_weekend_prices) and Binance last prices for RWA symbols (flowscan_hip3_binance_comparison). Because the HYPE price is not available in strict mode, priority gas is reported in HYPE, not USD.
Not covered in either mode
Flowscan's hard-coded address label book (the names the site shows for known addresses).
Live streaming updates. The WebSocket tools return a snapshot (or what arrived during a few seconds), not a continuous stream.
Testnet. Flowscan only shows Hyperliquid mainnet, so every result is mainnet.
Any write action. All tools are read-only; nothing places orders or moves funds.
Dates and windows
All days are UTC.
days: Nmeans the last N complete UTC days, ending yesterday, in the revenue series tools (flowscan_revenue_hypercore_fees,_deployer_fees,_priority_gas) andflowscan_builder_revenue. Theflowscan_revenue_summarywindows, theflowscan_builders_daily_revenuedefault range and theflowscan_builder_dashboardwindows also end yesterday. Today's partial row is only added to the revenue series withincludeToday: true(or an explicit range that reaches today), and is flaggedpartial: true.The HIP-3 series (
flowscan_hip3_daily,flowscan_hip3_dex) end at Flowscan's latest date, which can be today;lastDayPartialand the row'spartialflag say so.Builder date ranges are checked before any request: a start date in the future, or after the end date, is an error, and an end date of today or later is clamped to yesterday with a note.
Results state the range they cover (
rangeTotals,range,windows[].from/to,coveredRange). Quote it with the figure.
Data freshness
Data is as fresh as Flowscan's own backend, plus this server's cache:
Perp positioning snapshot (
flowscan_perp_*,flowscan_address_perp_positions): refreshed by Flowscan every few minutes. The perp tools returnsnapshotIsoandsnapshotAgeSeconds.Address tools: live account state as Flowscan serves it at request time.
Revenue series: one row per UTC day, complete days by default (see Dates and windows);
flowscan_revenue_summaryreports the partial current day separately.HIP-3 daily series:
lastDayPartialis true when the last date is today (UTC).Builder revenue and dashboard: daily, ending yesterday (UTC). The dashboard routes only have data from mid-2026 on.
Peers: an hourly network crawl.
meta.crawledAtsays when.Builder Intelligence: roughly daily.
HIP-3, HIP-4 and builder payloads carry their own
generated_at/generatedAtwhere Flowscan provides one.
This server caches Flowscan responses in memory for 20 seconds (60 seconds for the HIP-4 market list, 5 minutes for the large payloads listed under FLOWSCAN_LONG_CACHE_TTL_MS). In direct mode, upstream responses are cached briefly (prices 5 s, metadata 60 s, blocks/txs 30 s; see Two modes), and the WebSocket tools always open a fresh connection. Restarting the server clears the caches.
Evaluation
The tools and the skill were tested with a model-in-the-loop eval: 220 natural-language prompts (revenue, builders, addresses, staking, HIP-3, HIP-4, spot stocks, weekend trading, perps, not-served, out-of-scope and adversarial requests) answered by a Sonnet agent in Claude Code that had only this server's tools and the skill, then graded by an Opus judge against a rubric, the tool results and directly computed ground truth. Before this round of fixes it scored 197 PASS (89.5%), 20 PARTIAL and 3 FAIL, and all 362 outbound requests went to www.flowscan.xyz. The failures drove the changes above: the lower result cap, server-side totals, _fieldsNotFound, ISO timestamps on rows, dated HIP-3 rows, filteredSideSummary/marketSummary, spot-stock tickers in the tool description, and the skill's rules on arithmetic, made-up numbers and other hosts.
Report of the first run, with failure analysis: docs/eval-2026-10-02.md
Harness, prompts and how to re-run it: scripts/eval/README.md
Development
npm install # also builds, via the prepare script
npm run typecheck # tsc --noEmit
npm run build # compile src/ to dist/
npm test # offline unit tests, no network
npm run smoke # live smoke test against www.flowscan.xyz (uses dist/, so build first)
npx tsx scripts/qa/scenarios.ts # live QA scenarios, run from src/
FLOWSCAN_HYPERLIQUID_DIRECT=1 npm run smoke # smoke test including the 14 direct-mode tools
npx tsx scripts/qa/scenarios.ts --upstream # direct-mode QA scenarios (101-106)
npm run dev # run the server from source with tsxnpm run smoke and the QA scenarios hit the real site, so they need network access and can fail when Flowscan changes a route. CI runs typecheck, build and unit tests on Node 20 and 22; the live checks only run when the workflow is started by hand. See CONTRIBUTING.md for how routes were found and how to add a tool.
Layout:
src/index.ts: stdio entry pointsrc/server.ts: creates the MCP server and registers tool groupssrc/client.ts: the www.flowscan.xyz client (host guard, timeouts, retries, cache, concurrency limit)src/upstream.ts: the direct-mode client (mode switch, host allowlist, HTTPS and WebSocket, concurrency 2, caches, 429 handling)src/hyperliquid.ts: the upstream request bodies, each the one Flowscan's own JavaScript sendssrc/http.ts: shared fetch, retry, cache and semaphore helperssrc/dex.ts: HIP-3 DEX display name to on-chain prefix tablesrc/shape.ts:fields/limit/offset, envelope, truncation, errorssrc/coverage.ts: page to tool map, used byflowscan_coveragesrc/tools/*.ts: one file per Flowscan page area, plus shared resolvers (builderDirectory.ts,validators.ts); the direct-mode tools are inexplorer.ts,markets.tsandaccountDirect.ts, registered bydirect.tstest/: offline unit tests (npm test)scripts/smoke.ts: live smoke test that calls every toolscripts/qa/: live agent-style scenario harness (seescripts/qa/README.md)scripts/eval/: model-in-the-loop eval with a real agent and a judge (seescripts/eval/README.md)
License
MIT. See LICENSE.
This project is not affiliated with Flowscan or Hyperliquid.
Available Tools
44 toolsflowscan_address_extrasAddress extras: approved builders, borrow/lend, rate limit, TWAP fillsBRead-only
Smaller address-page widgets. kind: 'approvedBuilders' (builder codes the user approved with max fee), 'borrowLend' (HyperCore native borrow/lend state per token, health and health factor), 'rateLimit' (API request allowance vs cumulative volume), 'twapSliceFills' (fills generated by the user's TWAP orders).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Which widget to return. | |
| limit | No | Max list items (default per tool). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| offset | No | List items to skip. | |
| address | Yes | Account address (0x + 40 hex). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds real value by explaining what each kind returns (fee caps, health factor, request allowance, TWAP fills), but says nothing about defaults for limit/offset, pagination behavior, or rate-limit implications of the rateLimit kind.
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-loaded with the kind list and each value's meaning in a single dense sentence, with no filler. It is appropriately sized for a four-mode tool, though the opening 'Smaller address-page widgets' is slightly vague framing rather than an earned statement.
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 must carry the return-shape burden, and it does by naming what each of the four kinds returns. It is nearly complete, missing only pagination/default behavior for limit/offset on the list-style kinds.
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 the baseline is 3. The description does add meaning beyond the schema's terse 'Which widget to return' by defining each enum value's payload, but contributes nothing for limit, offset, fields, or address beyond what the schema already documents.
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 identifies the resource ('smaller address-page widgets') and enumerates the four exact kinds with what each returns, so an agent knows precisely what data comes back. However, it uses no verb (list/get/return) and never differentiates this multi-widget tool from the many sibling address tools (flowscan_address_summary, flowscan_address_fills, flowscan_address_staking), so routing among them is left to inference.
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?
There is no explicit when-to-use or when-not-to-use guidance. 'Smaller address-page widgets' weakly implies a secondary/complementary role versus the address summary tools, but the description never states that the four kinds here are the ones not covered elsewhere, nor names an alternative for any of them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_address_fillsAddress trade fillsARead-only
Address 'Trades' tab: fills newest first, 50/page (coin, px, sz, side, direction, closed PnL, fee, hash, time + timeIso). totals (count, closedPnlUsdc, fees, volumeUsd = px*sz, byCoin) cover ALL matched fills in coveredRange: quote them, never add rows. No startTime: the latest ~2000 fills. With startTime[/endTime]: pages past the 2000-row cap are followed (maxPages); if still capped, continue from nextStartTime.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | Filter by coin symbol substring. | |
| limit | No | Max list items (default per tool). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| offset | No | List items to skip. | |
| address | Yes | Account address (0x + 40 hex). | |
| endTime | No | Unix ms (optional, with startTime). | |
| maxPages | No | Pages to follow past the 2000-row cap (default 5). | |
| startTime | No | Unix ms. If set, uses the time-range query. | |
| aggregateByTime | No | Merge partial fills (default true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint/openWorldHint already covering safety, the description adds substantial behavioral detail beyond annotations: 50/page default, a ~2000-row cap, maxPages follow-through, the `capped`/nextStartTime continuation rule, and the key insight that `totals` aggregates ALL matched fills in coveredRange rather than being a per-row sum.
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?
Extremely dense and front-loaded, leading with what the tool returns before the pagination rules. The telegraphic phrasing (e.g. 'startTime[/endTime]') is compact but slightly compressed, costing a touch of readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-shape burden itself, listing the row fields and the `totals` sub-structure (count, closedPnlUsdc, fees, volumeUsd, byCoin) plus the pagination edge cases. Nothing an agent needs to call it correctly is missing.
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 baseline is 3, but the description meaningfully extends it: startTime/endTime trigger a different query path, maxPages controls pages past the 2000-row cap (default 5), and aggregateByTime merges partial fills. It adds semantics 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 verb and resource ('Address Trades tab: fills') plus the ordering and page size, and enumerates the returned row columns. An agent can distinguish this from flowscan_address_orders or flowscan_address_ledger without opening the schema.
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?
Gives explicit conditional behavior: no startTime returns the latest ~2000 fills, while startTime/endTime switches to the time-range query and follows pages past the cap. It also tells the agent to quote `totals` and never sum rows. It stops short of naming sibling alternatives, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_address_ledgerAddress funding payments or ledger updatesARead-only
Address 'Funding' / 'Ledger' tabs, newest first, rows with timeIso. kind='ledger' (default, 50/page, since 30 days ago): deposits, withdrawals, sends, transfers, vault/staking moves; totals.byType {count, sumUsdc, inUsdc, outUsdc}. kind='funding' (100/page, last 7 days): hourly payments; totals {netUsdc, paidUsdc, receivedUsdc, byCoin}. Totals cover ALL matched rows in coveredRange: quote them, never add rows. Pages past the 2000-row cap are followed (maxPages); if still capped, continue from nextStartTime.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | Filter by coin (funding) or token (ledger) substring; applied before totals. | |
| kind | No | Default 'ledger'. | |
| limit | No | Max list items (default per tool). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| offset | No | List items to skip. | |
| address | Yes | Account address (0x + 40 hex). | |
| endTime | No | Unix ms. | |
| maxPages | No | Pages to follow past the 2000-row cap (default 5). | |
| startTime | No | Unix ms (default now-30d for ledger, now-7d for funding). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, but the description adds meaningful behavior: page sizes (50/page ledger, 100/page funding), the 2000-row cap, maxPages follow-through, and nextStartTime continuation. Crucially it warns that totals cover ALL matched rows and must be quoted rather than re-summed, preventing an aggregation error. Auth/rate-limit context is absent, so it falls short of a 5.
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?
It is front-loaded with the tab scope and default kind, then layers pagination and totals semantics efficiently in a dense telegraphic style. The heavy abbreviations (timeIso, coveredRange, nextStartTime) are compact but assume familiarity, slightly reducing readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return burden well by naming the totals fields (byType {count, sumUsdc, inUsdc, outUsdc} for ledger, {netUsdc, paidUsdc, receivedUsdc, byCoin} for funding). Combined with pagination caps, continuation logic, and the totals-must-be-quoted rule, an agent has what it needs to call and interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all nine parameters, including kind's default, startTime's per-kind defaults, and maxPages' default of 5. The description largely restates those same defaults rather than adding new syntactic or format meaning, so the baseline 3 applies.
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 names the specific resource ('Funding' / 'Ledger' tabs) and the row shape (timeIso, newest first), so the agent knows this returns address funding/ledger activity. It doesn't explicitly differentiate from close siblings like flowscan_address_fills, flowscan_address_orders, or flowscan_address_extras, leaving the agent to infer the boundary from the tab names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives usable context for the internal choice: kind='ledger' (default) covers deposits/withdrawals/sends/transfers/vault-staking moves, while kind='funding' covers hourly payments, with distinct default windows. However, there is no guidance on when to prefer this tool over any sibling (fills, orders, staking, extras), so routing to alternatives is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_address_ordersAddress open or historical ordersARead-only
Address 'Open Orders' / 'Order History'. kind='open' (default): all resting orders on every DEX (coin, side B/A, limit price, size, oid, time). 'openDetailed': main-DEX orders with trigger/TP-SL/reduce-only/type/TIF (upstream max 100, capped then). 'historical': the newest ~2000 orders with final status, newest first; countsByStatus (filled/canceled/...) covers all of them, coveredRange shows their time span (seconds for busy accounts). Returns count of matching orders; pages default to 100 (open) / 50 rows. Times have ISO twins.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | Filter by coin symbol substring (e.g. 'BTC', 'xyz:'). | |
| kind | No | Default 'open'. | |
| limit | No | Max list items (default per tool). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| offset | No | List items to skip. | |
| address | Yes | Account address (0x + 40 hex). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the readOnly/openWorld annotations: upstream cap of 100 for openDetailed with a 'capped' flag, historical limited to newest ~2000 with countsByStatus and coveredRange semantics, and page-size defaults (100 open / 50 rows). This is exactly the operational behavior an agent needs and is not derivable from the schema.
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?
Information-dense with zero filler; the mode breakdown is front-loaded after a one-line purpose statement. Jargon ('oid', 'TIF', 'coveredRange') assumes domain familiarity, 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?
With no output schema, the description carries the return burden well, disclosing count, countsByStatus, coveredRange, per-mode row shape, and ISO time twins. An agent has enough to call it correctly and interpret the response.
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 baseline would be 3; the description goes further by explaining kind defaults, per-kind paging defaults, and the coin-substring filter intent. It adds real meaning over the raw schema without fully restating every parameter.
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 the specific resource ('Open Orders' / 'Order History') and enumerates the three retrieval modes with the fields each returns (coin, side, price, size, oid for open; trigger/TP-SL/reduce-only for openDetailed). It clearly reads as an order-listing tool, distinct from sibling fill/position tools, though it never names a sibling explicitly.
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?
Gives effective selection guidance by labeling kind='open' as the default and describing the distinct scope of each mode, so an agent can pick the right kind from the task. It lacks explicit when-not/alternative-tool steering, but the mode semantics are strong enough to imply usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_address_perp_positionsOpen perp positions for an address (snapshot)ARead-only
Homepage perp snapshot address lookup: an account's open perp positions across all markets incl. HIP-3 (market, side, signed size, notional, entry, leverage, liquidation price, funding PnL, all-time PnL) from the latest snapshot (refreshes every few minutes), with totalNotional and totalPositions. Sorted by notional desc. For live margin/account state use flowscan_address_summary.
| Name | Required | Description | Default |
|---|---|---|---|
| side | No | Only long or only short positions. | |
| limit | No | Max list items (default per tool). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| market | No | Filter by market symbol substring (e.g. 'BTC', 'xyz:'). | |
| offset | No | List items to skip. | |
| address | Yes | Account address (0x + 40 hex). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, but the description adds genuinely useful behavior the annotations cannot: the data is a snapshot that 'refreshes every few minutes' (staleness), it returns totalNotional/totalPositions aggregates, and results are sorted by notional desc. That staleness caveat is the key operational trait for this tool.
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?
One dense sentence carries the scope, field list, freshness, sort and totals, followed by a short routing sentence — front-loaded with the tool's identity and no filler. The parenthetical field list is long but earns its place given there is no output 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?
With no output schema, the description does the heavy lifting by enumerating the returned position fields and aggregate totals, plus refresh cadence and sort order. Filter-parameter semantics are left entirely to the schema, which is acceptable at 100% coverage, but a brief note on pagination/limit interplay would round it out.
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 side, limit, fields, market, offset and address are all self-documented in the schema. The description adds no filter syntax or semantics beyond the schema (the 'incl. HIP-3' note describes return scope, not parameters), so the baseline 3 applies.
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?
Names a specific verb+resource ('open perp positions' for an address) and immediately scopes it as a homepage snapshot lookup across all markets incl. HIP-3. The parenthetical enumeration of returned fields makes it clearly distinguishable from siblings like flowscan_address_summary and flowscan_address_orders.
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 routes the agent: 'For live margin/account state use flowscan_address_summary,' which is a concrete alternative with a selecting condition. It does not, however, distinguish itself from the closely-named sibling flowscan_perp_positions (market-wide rather than address-scoped), leaving one plausible confusion unresolved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_address_stakingAddress staking delegations & historyBRead-only
Address page 'Staking' section: totalDelegatedHype, current delegations per validator (validator address and name, commission_bps, is_jailed, amountHype, lock-up end) and the staking history (delegate/undelegate, deposits/withdrawals to staking, newest first).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| address | Yes | Account address (0x + 40 hex). | |
| historyLimit | No | Max history rows (default 50). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=true). The description adds a useful behavioral detail, that history is returned 'newest first', plus the exact composition of the response, but says nothing about pagination behavior or the historyLimit cap's practical effect.
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 that immediately places the tool on the address page's Staking section, then lists contents. It is dense but every clause carries information; only the parenthetical field list is slightly heavy.
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 carries the return-value burden and largely meets it by enumerating the returned fields and history event types. It leaves the 'fields' projection and pagination semantics unaddressed, but the core picture is complete enough to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so address, fields, and historyLimit are already documented in the schema and the description need not repeat them. It adds no param-specific syntax or defaults beyond what the schema provides, which is the expected baseline.
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 (address 'Staking' section) and enumerates the exact contents returned: totalDelegatedHype, per-validator delegations, and staking history. It distinguishes an address-scoped view from chain-wide siblings like flowscan_staking_overview, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Address page Staking section' framing implies when this applies, but there is no explicit when-to-use, when-not-to-use, or routing against siblings such as flowscan_staking_overview or flowscan_staking_events. An agent must infer the selection condition on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_address_summaryAddress overview (role, PnL summary, perp state, spot balances)ARead-only
Overview of an /address page: role (user/vault/subAccount/agent/missing), lifetime PnL summary (PnL, win rate, trades, hold time, volume, fees, funding, days active, tradedPairs as count + first 30), live perp state (account value, notional, margin, withdrawable, positions with size/entry/leverage/liquidation/uPnL/ROE/funding, largest first, capped by positionsLimit) and non-zero spot balances. Perp state is the main DEX unless dex names a HIP-3 DEX (prefix or display name; unknown names are rejected).
| Name | Required | Description | Default |
|---|---|---|---|
| dex | No | HIP-3 DEX for perpState (XYZ=xyz, FLX=flx, Hyena=hyna, KM=mkts, VNTL=vntl, Dreamcash=cash, Paragon=para, Entropy=io). Omit for the main DEX. | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| address | Yes | Account address (0x + 40 hex). | |
| include | No | Which sections to fetch (default all four). | |
| balancesLimit | No | Max spot balances returned (default 50). | |
| positionsLimit | No | Max open positions returned in perpState (default 50, largest first). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnly/openWorld annotations cover the safety profile, but the description adds useful behavioral context beyond them: default section fetching, position/balance caps, largest-first ordering, and rejection of unknown dex names. It does not mention rate limits or response envelope behavior, but it is informative for a read-only composite tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a dense list of returned sections, followed by a short dex caveat. It is efficient and has no filler, though the long run-on enumeration is slightly hard to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry the return-value burden. It names role values, PnL summary fields, perp-position fields, and spot-balance behavior, which is enough for an agent to call the tool correctly, though it does not describe the overall response envelope.
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 the baseline is 3. The description adds meaningful dex semantics not fully captured in the schema: prefix or display-name matching and rejection of unknown names, plus the main-DEX default when dex is omitted.
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 clear resource (/address page) and enumerates the four sections it aggregates (role, PnL summary, perp state, spot balances). This scope clearly separates it from narrower siblings such as flowscan_address_perp_positions or flowscan_address_orders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to use this overview versus the other address-specific tools, nor does it set exclusions or prerequisites. Usage is only implied by the title and the word 'overview'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_address_vaults_subaccountsAddress vault equities & sub-accountsBRead-only
Address 'Vaults' and 'Sub-accounts': equity held in each vault (vault, equity, lock-up) and sub-accounts (name, address, account value, notional, withdrawable, open positions, non-zero spot balances).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| address | Yes | Account address (0x + 40 hex). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds what categories of data are returned, but says nothing about pagination, rate limits, or handling of addresses with no vaults/sub-accounts.
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 dense sentence that front-loads the resource and then lists the returned fields. Efficient with no filler, though the parenthetical enumeration is heavy.
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 carries the return-value burden and does so by enumerating vault (vault, equity, lock-up) and sub-account fields. It is largely complete for a read tool whose annotations cover the safety profile, though behavioral details remain thin.
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 both parameters (address and fields) are fully documented in the schema. The description enumerates returned fields rather than adding meaning to the parameters, so the baseline 3 is appropriate.
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 names a specific resource set (vaults and sub-accounts) scoped to an address and enumerates the data returned, so an agent can tell what it retrieves. However, the verb 'Address' is awkward and it does not differentiate itself from the many sibling flowscan_address_* 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?
There is no statement of when to use this tool versus alternatives such as flowscan_address_summary or flowscan_address_staking. No prerequisites or exclusions are given, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_builder_dashboardBuilder detail dashboard (stats, daily series, volume by asset)ARead-only
The /builders/{id} dashboard for one builder over a FIXED window (7d/30d/90d/all, ending yesterday UTC): stats (volume, revenue, fills, unique/new traders, volume per trader, share of Hyperliquid and builder volume, revenue run-rate), daily series (last 90 days unless days) and volume/revenue by asset. USD. builder: 0x address, 'id:' or a name. For arbitrary ranges use flowscan_builder_revenue.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Keep only the most recent N days of the daily series (default 90). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| window | No | Default 30d. | |
| builder | Yes | 0x address (preferred), 'id:<id>' or a name (ambiguous -> candidates). | |
| section | No | Default all. | |
| assetsLimit | No | Max assets in volumeByAsset (default 40, by volume). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the description focuses on adding value: the fixed window anchored to yesterday UTC, USD denomination, and the default 90-day daily series. It does not mention pagination or return shape, but with annotations covering safety the added window and currency context is meaningful.
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 resource and the window constraint, then lists outputs, then the parameter hint, then the sibling routing. Dense and mostly waste-free, though the long output enumeration makes it slightly heavy.
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 carries the return-value burden and does describe the three returned groupings. It is complete enough to call correctly, though finer details of the stats payload are only listed by name.
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 (including defaults and accepted builder formats) are already documented in the schema. The description restates the window options and builder formats but adds no format or syntax detail beyond what the schema provides, matching the baseline for full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (the /builders/{id} dashboard) and enumerates exactly what it returns: stats, daily series, and volume/revenue by asset. It explicitly names the sibling flowscan_builder_revenue as the tool for arbitrary ranges, so an agent can distinguish it without opening either schema.
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?
Gives clear context (fixed window 7d/30d/90d/all ending yesterday UTC) and routes arbitrary-range needs to flowscan_builder_revenue, which is an explicit alternative. It does not spell out when NOT to use it beyond that single exclusion, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_builder_intelligence_detailBuilder Intelligence: deep-dive for one builderARead-only
A /builder-intelligence builder report: user status (active/dormant/cooling-off/switched/moved-on), revenue, cohorts, lifecycle, retention, daily activity, top users, heatmap, daily revenue. Payload is ~11 MB, so pick sections (default metadata, key_metrics, user_status_metrics, revenue_metrics). Long lists are paged with limit/offset (50 top-level, 20 nested) and address lists become {count, sample}.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max list items (default per tool). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| offset | No | List items to skip. | |
| endDate | No | YYYY-MM-DD UTC, inclusive. | |
| sections | No | Report sections to return (default metadata, key_metrics, user_status_metrics, revenue_metrics). | |
| builderId | Yes | Builder id from flowscan_builder_intelligence_list (e.g. 'phantom', 'pvp'). | |
| startDate | No | YYYY-MM-DD UTC, inclusive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=true, so this description earns credit on top of that by disclosing the ~11 MB payload size, the paging behavior (50 top-level, 20 nested), and that address lists are reshaped to {count, sample}. That is meaningful behavioral context an agent needs to avoid blowing up its context window.
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 sentence order is sensible: what the report contains, then the size/sections caveat, then paging and list reshaping. It is dense but mostly earns its words; the long enumeration of report contents in sentence one could be trimmed since `sections` already lists them.
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 read-only report tool with no output schema, the description covers the important gaps: what comes back, how large it is, how to shrink it, and how lists are paged/reshaped. Safety is covered by annotations. An agent has enough to call it correctly without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage the baseline is 3, but the description adds value beyond the schema: it names example builderId values ('phantom', 'pvp'), confirms the default section set, and quantifies paging as 50 top-level / 20 nested. These details are not fully present in the schema text.
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 (a /builder-intelligence report for one builder) and enumerates its content: user status, revenue, cohorts, lifecycle, retention, daily activity, top users, heatmap. It also points to the sibling flowscan_builder_intelligence_list as the source of builderId, helping separate it from list/summary variants. The purpose is clear, though the opening sentence is more a content dump than a crisp verb+resource statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives operational guidance (payload is ~11 MB, so narrow with `sections`; results are paged) and notes where builderId comes from. It does not, however, say when to use this tool versus flowscan_builder_intelligence_summary or the dashboard, leaving that routing choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_builder_intelligence_listBuilder Intelligence: builders & categoriesARead-only
The /builder-intelligence index: ~120 analysed builders (id, name, category, total/active users, all-time revenue/volume USD, 7d new users) and categories. Ids feed flowscan_builder_intelligence_detail, category ids flowscan_builder_intelligence_summary. Prefer this for user-status/retention questions. Its '7d new users' comes from a different dataset than the leaderboard's and user_series'; say which you quote.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max list items (default per tool). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| offset | No | List items to skip. | |
| search | No | Builder id/name substring. | |
| sortBy | No | Default total_revenue desc. | |
| category | No | Filter by category id/name substring. | |
| includeCategories | No | Also return the categories list (default true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds real value beyond that: it warns that '7d new users' comes from a different dataset than the leaderboard's and user_series', and instructs the agent to state which source it quotes — a data-provenance caveat that prevents incorrect cross-tool comparisons.
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 dense sentences, front-loaded with the resource and its returned fields before the routing and provenance notes. No filler; each sentence carries distinct 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?
With no output schema, the description compensates by listing the returned fields and the categories list, and it covers chaining to detail/summary plus the cross-dataset caveat. Pagination and filtering are fully documented in the schema, so nothing an agent needs to call this correctly is missing.
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 the schema already documents limit, fields, offset, search, sortBy, category and includeCategories, including the total_revenue default and the enum. The description adds only the indirect point that 'ids feed detail' and 'category ids feed summary', which is chaining rather than parameter semantics. Baseline 3 applies.
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 the exact resource (the /builder-intelligence index) and enumerates the fields returned for each builder (id, name, category, users, revenue/volume, 7d new users) plus categories. It is clearly distinguishable from siblings flowscan_builder_intelligence_detail and flowscan_builder_intelligence_summary, which it explicitly names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly steers the agent: 'Prefer this for user-status/retention questions,' and explains that returned ids feed detail while category ids feed summary, giving concrete chaining guidance. It does not, however, state when this tool should NOT be used versus the many other builder siblings (leaderboard, dashboard, lookup).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_builder_intelligence_summaryBuilder Intelligence: category or overall summaryARead-only
The /builder-intelligence aggregate view for a category (e.g. wallet, copytrading, desktop_trading, mobile_trading) or 'overall': metadata (builders included and their weights), totals (users, active users, 7d new users, all-time revenue, fees 24h/7d/30d/90d, average daily revenue, week-1/4 retention) and user-weighted averages (key metrics, user status, revenue by status, lifecycle, retention, equity/fee cohorts). Cohort member address lists are reduced to {count, sample}.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| endDate | No | YYYY-MM-DD UTC, inclusive. | |
| category | No | Category id from flowscan_builder_intelligence_list, or 'overall' (default). | |
| startDate | No | YYYY-MM-DD UTC, inclusive. | |
| includeExcludedBuilders | No | Keep metadata.builders_excluded (can be >1000 entries; default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/open-world safety profile, so the bar is lower, and the description adds real behavioral context beyond them: cohort member address lists are reduced to {count, sample}, which tells the agent output is truncated rather than complete. It still omits pagination, caching or auth behavior, but the truncation disclosure is a meaningful addition.
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?
It is essentially one front-loaded sentence that leads with the resource and scope before enumerating returned data. The metric enumeration is dense but each item maps to actual returned content, so little is wasted, though the long list makes it heavy to scan.
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 carries the burden of explaining return values, and it does so thoroughly (metadata, totals, weighted averages, cohort reduction). Combined with the read-only annotations and fully documented schema, an agent has enough to call it correctly, with only usage routing left implicit.
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 the baseline is 3 and the schema already documents each parameter. The description adds meaning by giving concrete category values (wallet, copytrading, desktop_trading, mobile_trading) and the 'overall' default, which clarifies the category parameter beyond the schema's terse wording.
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 names the specific resource and its scope: 'the /builder-intelligence aggregate view for a category ... or overall', which is a clear verb+resource and distinguishes it from the sibling list/detail tools by labeling it the aggregate view. It stops short of explicitly contrasting itself with flowscan_builder_intelligence_detail, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the 'aggregate view' framing and the default 'overall' suggest when to reach for it, and the schema notes the category id comes from flowscan_builder_intelligence_list. There is no explicit when-to-use / when-not-to-use statement or a named alternative such as detail for per-builder drill-down.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_builder_lookupFind a builder's id/address by nameARead-only
Resolve a builder name to its id/address. Names can be ambiguous (e.g. two 'fomo' builders); call this first, then pass the exact id/address to flowscan_builder_revenue or flowscan_builder_dashboard (as address or 'id:'). If multiple strong matches exist, show them to the user. Matches id, name and address (case-insensitive); exact matches first, then substrings, by all-time revenue. Each match: id, name, category, address, revenue and volume USD for 1d/7d/30d/90d/all_time, total_users.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max matches returned (default 20). | |
| query | Yes | Name, id or address (substring ok), e.g. 'fomo'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds real behavioral detail beyond that: case-insensitive matching across id/name/address, exact-then-substring ordering, and revenue-based ranking. It stops short of describing error behavior or empty-result handling, so not a 5.
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-loaded with the purpose, then the workflow, then matching rules, then the return shape. Dense but every sentence carries information; the field enumeration is slightly list-like but earns its place given no output 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?
No output schema exists, and the description compensates by enumerating returned fields (id, name, category, address, revenue/volume windows, total_users). Combined with the matching and routing guidance, an agent has everything needed to call and interpret this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema documents both parameters (baseline 3). The description still adds semantics the schema lacks: what `query` matches against (id, name, address), the case-insensitivity, and the substring allowance, which materially informs query construction.
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 precise verb+resource: resolving a builder name to id/address. It also explicitly separates itself from siblings by naming flowscan_builder_revenue and flowscan_builder_dashboard as downstream consumers, so an agent can place it without opening a schema.
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?
Gives explicit ordering ('call this first, then pass the exact id/address to ...'), names the two alternative tools, and gives a decision rule for ambiguity ('if multiple strong matches exist, show them to the user'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_builder_revenueOne builder's revenue over any date range (e.g. last 45 days)ARead-only
Total and daily revenue (USD) of ONE builder over any range ('past 45 days'): days (complete UTC days ending yesterday, default 30) or startDate/endDate (end clamped to yesterday; future start = error). builder: 0x address (preferred), 'id:' or a name; ambiguous names return candidates (ask the user). Sums /api/builders/all-daily-revenue, cross-checked with the dashboard series when the address is known (both totals + covered dates, volume/fills/traders). Daily rows newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Days ending yesterday UTC (default 30). | |
| limit | No | Max daily rows returned (default 60, newest first). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| offset | No | List items to skip. | |
| builder | Yes | 0x address (preferred), 'id:<id>' or a name. | |
| endDate | No | YYYY-MM-DD (inclusive, default yesterday). | |
| startDate | No | YYYY-MM-DD (inclusive). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint; the description adds meaningful behavior beyond that: end dates are clamped to yesterday, future starts error, ambiguous names return candidate lists, results are cross-checked against the dashboard series, and rows come newest first. It stops short of describing pagination or rate-limit behavior, so not a full 5.
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 dense paragraph, front-loaded with the resource and its scope before the parameter rules. Nearly every clause carries information (defaults, clamps, error cases, data source, ordering), though the packed phrasing borders on overload.
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 and seven parameters, the description responsibly describes the return shape (total plus daily rows, newest first) and the upstream source. It omits list-control semantics (limit/offset/fields) and the cross-check output fields, but those are secondary for calling the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 100%, so baseline is 3. The description adds real value on `builder` (0x address preferred, id: or name, ambiguity resolution) and reinforces the `days` default/ending rules. The list-control params (limit, offset, fields) are left entirely to 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 and resource: total and daily revenue (USD) of ONE builder over any range. The explicit 'ONE builder' scope distinguishes it from sibling aggregate tools like flowscan_builders_leaderboard and flowscan_builders_daily_revenue without opening any schema.
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?
Gives clear input-selection guidance: use `days` (complete UTC days ending yesterday, default 30) or startDate/endDate, and notes future starts error. It also tells the agent to ask the user when a name is ambiguous. It does not, however, state when to prefer this tool over siblings such as flowscan_builder_dashboard or flowscan_builders_user_series.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_builders_daily_revenueDaily revenue per builder (date range, all builders)ARead-only
The /builders daily revenue chart: for each UTC day in the range, builder revenue (USD) keyed by builder id (slug like 'phantom' for well-known builders, 0x address for the rest), plus range totals per builder and the grand total. Defaults to the last 30 days ending yesterday, like the site. By default keeps the top 20 builders by range revenue. For one builder's total over a range use flowscan_builder_revenue instead.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Top N builders by range revenue (default 20). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| builder | No | Id or 0x-address substring ('phantom', '0x2a2b'); matchedKeys are listed. | |
| endDate | No | YYYY-MM-DD UTC, inclusive (default and maximum: yesterday). | |
| startDate | No | YYYY-MM-DD UTC, inclusive (default 30 days before endDate). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint, openWorldHint), and the description adds real behavioral context beyond them: default window ending yesterday, default top-20 cap, and the id-keying convention (slug for well-known builders, 0x address otherwise). It does not mention rate limits, pagination, or behavior when a builder filter matches nothing beyond what the schema hints at.
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?
Four sentences, front-loaded with the resource and output shape, then defaults, then the sibling redirect. Every sentence carries information an agent needs to call it correctly.
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, but the description compensates by describing the return payload precisely: per-UTC-day revenue keyed by builder id, range totals per builder, and a grand total. Combined with annotations and full schema coverage, an agent has everything needed to invoke and interpret the result.
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, but the description adds meaning the schema does not: builder keys are slugs for well-known builders and 0x addresses for the rest, and the returned structure is keyed by that id. It restates the top-20 and date defaults that the schema already documents, which limits it to a modest bump above baseline.
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 ('daily revenue chart' per builder over a UTC date range) and immediately pins the output shape (per-day, keyed by builder id). It explicitly contrasts itself with the sibling flowscan_builder_revenue, so an agent can route between them without opening a schema.
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?
Gives the when-to-use rule explicitly: 'For one builder's total over a range use flowscan_builder_revenue instead.' It also documents defaults (last 30 days ending yesterday, top 20 builders) that determine when this tool is the right call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_builders_leaderboardBuilders leaderboard (revenue, volume, users by window)ARead-only
The /builders 'Builder Arena': ~1800 builders ranked by one metric over a FIXED window (1d/7d/30d/90d/all_time): revenue, volume (USD), new_users, total_users or avg_revenue_per_user_all_time (last two all-time only). Compact rows (rank, id, name, category, value, that metric's windows, all-time revenue, users); full=true for all metrics. For arbitrary ranges like 'last 45 days' use flowscan_builder_revenue; flowscan_hip3_builders ranks by HIP-3 volume only.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | Return every metric and window per builder (default false). | |
| limit | No | Max list items (default per tool). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| metric | No | Sort metric (default revenue). | |
| offset | No | List items to skip. | |
| search | No | Filter by builder id/name substring. | |
| window | No | Default 7d (all-time-only metrics ignore it). | |
| category | No | Category substring (wallet, copytrading, ...). | |
| minUsers | No | Min all-time users (default 0); useful for avg_revenue_per_user_all_time. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and open-world nature are covered. The description adds useful context beyond annotations — approximate scale (~1800 builders), the fixed-window limitation, and the shape of returned rows (rank, id, name, category, value, windows, all-time revenue, users) plus full=true behavior. It stops short of noting pagination behavior, but the return-shape disclosure is real added value.
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 resource and ranking model before the routing alternatives; every clause carries information. It is dense and parenthetical-heavy, but there is little true filler, so it stays efficient without being wasteful.
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 compensates by describing the returned row fields and the full=true variant, and it resolves the main ambiguity (fixed vs arbitrary windows) by pointing to the correct sibling. Coverage of pagination and default limits is left to the schema, which documents it, so completeness is strong though not exhaustive.
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, but the description adds real semantics: the window set is FIXED (1d/7d/30d/90d/all_time), new_users/total_users/avg_revenue_per_user_all_time are all-time only, and full=true returns all metrics. This clarifies cross-parameter behavior the schema cannot express on its own.
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 and operation ('Builder Arena' leaderboard of ~1800 builders ranked by one metric) plus scope constraints (fixed window, list of metrics). It explicitly distinguishes itself from the two most confusion-prone siblings by name. An agent can identify what this returns without opening the schema.
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?
Gives explicit routing rules: arbitrary ranges like 'last 45 days' go to flowscan_builder_revenue, and flowscan_hip3_builders is for HIP-3 volume only. It also states the fixed-window constraint that determines when this tool is the right choice. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_builders_summaryBuilders all-time summary by categoryARead-only
The /builders page headline totals: all-time builder revenue (USD), volume (USD), users and avg revenue per user, overall and per builder category (with builder counts), plus the per-builder all-time list (paged with limit/offset, default 50).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max list items (default per tool). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| offset | No | List items to skip. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=true, so the safety profile is already covered. With no output schema, the description usefully discloses the return shape (headline totals, per-category breakdown with builder counts, per-builder list with paging). It does not cover rate limits or data freshness, so it is not a 5.
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 dense sentence that front-loads the headline totals and then the per-category and per-builder detail. It is efficient and complete, though the run-on structure makes it slightly harder to scan than a short multi-sentence version.
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 read-only, three-optional-parameter tool with no output schema, the description covers both the aggregates returned and the paging behavior, which is enough to call it correctly. It omits any guidance on data freshness or category semantics but is otherwise adequate.
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, but the description adds real value by stating that the per-builder list is paged with limit/offset and that the default is 50 — a default the schema itself only calls 'default per tool'. The fields parameter is not explained in the description, keeping this from a 5.
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 precisely states the resource and scope: all-time builder headline totals (revenue, volume, users, avg revenue/user), overall and per category, plus the per-builder list. The 'all-time' framing implicitly distinguishes it from sibling time-series tools like builders_daily_revenue, but it never names an alternative explicitly, so it falls short of a 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 only implied by the 'all-time' scope and 'headline totals' wording. There is no explicit when-to-use, when-not-to-use, or routing among the many sibling builder tools (leaderboard, daily revenue, dashboard, user series), leaving the agent to infer selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_builders_user_seriesDaily traders & new traders per builderARead-only
The /builders user-growth chart: daily count of active traders and new traders across all builders and per builder since 2025-07-27. Prefer this for daily active/new trader time series; for windowed totals use flowscan_builders_leaderboard (its new_users.7d is a separate dataset and can differ).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Most recent N days (default 30). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| metric | No | Default both. | |
| builder | No | Builder id or address substring; omit for the aggregate series only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint, openWorldHint), and the description adds real behavioral context the annotations lack: the data begins 2025-07-27 and new_users.7d from the leaderboard is a separate dataset that can differ. It doesn't discuss pagination or return shape, keeping it just short of a 5.
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 tightly written sentences, front-loaded with the core purpose and follow by the routing caveat and dataset caveat. Every clause carries information; no 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?
For a read-only time-series tool, the description supplies scope, start date, and a data-consistency caveat, which is enough to call it correctly even without an output schema. Return format details are the only thing not covered.
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 the schema already documents all four parameters with defaults and enums. The description implies the builder and time dimensions but adds no syntax or format detail beyond the schema, so the baseline 3 applies.
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 (daily count) and resource (active/new traders per builder), plus the scope (all builders and per builder) and start date. It clearly distinguishes itself from flowscan_builders_leaderboard without the agent needing to open either schema.
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 says to prefer this for daily active/new trader time series and names the alternative (flowscan_builders_leaderboard) for windowed totals. Both the when-to-use and the routing condition are stated directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_coverageWhat Flowscan shows and which tool to useARead-only
Start here when unsure. Returns the map of flowscan.xyz pages -> tools, what Flowscan does NOT serve (block/tx lookups, prices), the mainnet-only rule and output-shaping conventions. Optionally filter by a keyword (e.g. 'revenue', 'address', 'hip-3'): matching pages plus matching notServed items, with servedByThisServer=false when only notServed matches. Also lists HIP-3 dex display names vs on-chain prefixes.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Keyword to filter pages/tools by. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly and closed-world semantics, and the description adds genuinely useful behavior: the mainnet-only rule, output-shaping conventions, and the servedByThisServer=false flag when only notServed items match. It stops short of return-format or rate-limit detail, but the added context is well beyond the annotation baseline.
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 imperative 'Start here when unsure' is front-loaded, and each subsequent clause adds distinct information. It is dense but every sentence earns its place; a slight run-on in the notServed/servedByThisServer clause keeps it from being a model of tightness.
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 carries the burden of explaining returns, and it does so by detailing the page->tool mapping, the notServed list, and the servedByThisServer flag. Combined with the mainnet-only rule, this is complete for an agent to use it correctly, though pagination/size behavior is unspecified.
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, but the description goes further by showing example keywords ('revenue', 'address', 'hip-3') and explaining the filter's dual behavior (matching pages plus matching notServed items), which the schema 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?
The description states a precise role: a coverage map from flowscan.xyz pages to tools, plus what is NOT served. It is clearly distinguishable from the 40+ data-retrieval siblings because it is the router/discovery entry point, not a data 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?
'Start here when unsure' gives an explicit when-to-use condition, and enumerating what Flowscan does NOT serve (block/tx lookups, prices) provides when-not guidance that steers the agent away from futile calls. This is exactly the routing guidance a discovery tool needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_hip3_binance_comparisonHIP-3 RWA markets vs Binance futures (OI & volume)ARead-only
HIP-3 page Binance comparison: ~240 real-world-asset symbols (equities incl. HK/KR/CN, commodities, indices, FX, pre-market) with Binance USDT-M symbol, open interest (USD), 24h volume (USD) and last price. With symbol: Binance row, daily Binance OI/volume history and the HIP-3 side per DEX (OI, DAU, volume, spread, slippage). Prefer this when comparing HIP-3 with Binance.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | History length for single-symbol lookups (default 30). | |
| limit | No | Max list items (default per tool). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| offset | No | List items to skip. | |
| sortBy | No | Default oi desc. | |
| symbol | No | Canonical symbol ('GOLD', 'TSLA'). | |
| underlyingType | No | Exact type filter: EQUITY, HK_EQUITY, KR_EQUITY, CN_EQUITY, COMMODITY, INDEX, FX, PREMARKET. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds real behavioral context beyond that: it discloses the two distinct operating modes (bare list of ~240 symbols vs. single-symbol lookup returning Binance row, daily OI/volume history, and per-DEX HIP-3 side), which materially changes what an agent gets back. It omits pagination/limit behavior, but that is minor against the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the list-mode scope before the symbol-mode behavior. It is information-rich with no filler, though the first sentence is heavily packed with parenthetical enumerations that slightly slow parsing.
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 7 optional parameters and no output schema, the description does the important work of describing both result shapes and the asset universe. It leaves the paging/sorting/filter parameters entirely to the schema, which is acceptable given their full descriptions, but a brief note on default paging behavior would have closed the remaining 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 description coverage is 100%, so the baseline is 3. The description goes beyond the schema by explaining the semantic effect of `symbol` (Binance row + daily Binance OI/volume history + per-DEX HIP-3 metrics) and by characterizing the symbol universe the list mode covers, which 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?
The description names a specific resource (HIP-3 real-world-asset markets compared against Binance USDT-M futures) and enumerates the payload (Binance symbol mapping, OI in USD, 24h volume, last price). It also distinguishes itself from the other HIP-3 siblings by scoping the tool to the Binance comparison, so an agent can tell it apart from flowscan_hip3_markets or flowscan_hip3_overview without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing sentence 'Prefer this when comparing HIP-3 with Binance' gives an explicit selection condition. It does not name the alternative tools (e.g. flowscan_hip3_markets) or state when NOT to use this one, so it falls short of full when/when-not/alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_hip3_buildersBuilder-routed volume on HIP-3 DEXsARead-only
HIP-3 'Builders' section: share of HIP-3 volume routed via builder codes (all-time/30d/90d), per-DEX builder volume with top builders, and 800+ builders ranked by HIP-3 volume only (address, name, total/30d/90d volume, shares). dex ranks by one DEX. For revenue/users across Hyperliquid use flowscan_builders_leaderboard.
| Name | Required | Description | Default |
|---|---|---|---|
| dex | No | Rank by volume on this DEX only. | |
| limit | No | Max list items (default per tool). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| offset | No | List items to skip. | |
| search | No | Filter builders by name/address substring. | |
| window | No | Ranking window (default total = all-time). | |
| includePerDex | No | Keep each builder's per_dex breakdown (default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds scope context ('HIP-3 volume only', ranking window, 800+ rows, per-DEX toggle) but says nothing about rate limits, refresh cadence, or error behavior beyond what structured fields provide.
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 data scope and closing with the sibling routing hint. It is dense but every clause carries information, with no 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?
With no output schema, the description carries the burden of describing returns, and it does so: builder shares, per-DEX breakdown with top builders, and the ranked builder fields. This is adequate for a read-only metrics tool, though pagination/return-shape nuances are left to the schema.
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 the schema already documents all seven parameters, establishing a baseline of 3. The description hints at `dex` (rank by one DEX) and `window` (all-time/30d/90d), which largely restates schema content rather than extending it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and scope: builder-code routed share of HIP-3 volume, per-DEX builder volume, and a ranked list of 800+ builders. It distinguishes the tool from flowscan_builders_leaderboard by explicitly scoping itself to 'HIP-3 volume only'. The lack of a crisp leading verb keeps it just short of a clean 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?
It names an alternative and its selecting condition ('For revenue/users across Hyperliquid use flowscan_builders_leaderboard') and clarifies what `dex` does. It gives clear context but stops at one alternative, without covering when-not to use relative to other builders_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_hip3_dailyHIP-3 daily time series (volume, trades, traders, new users, OI)ARead-only
HIP-3 page charts: daily values per DEX as dated rows [{date, XYZ: v, KM: v, ...}] (raw=true for positional {dates, series}). metric: volume, trades, traders, new_users, oi, oi_by_market (top markets), collateral_traders, collateral_oi. Returns the last N days (default 30); lastDayPartial flags when the last date is the current, still-accumulating UTC day. dex takes a display name or on-chain prefix.
| Name | Required | Description | Default |
|---|---|---|---|
| dex | No | Only this DEX (display name like 'XYZ'/'KM' or on-chain prefix like 'mkts'). | |
| raw | No | Positional {dates, series} instead of rows. | |
| days | No | Default 30. | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| metric | No | Default volume. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral detail beyond the readOnly/openWorld annotations: it discloses the return shape (dated rows by DEX, or positional for raw=true), the default day window, and the lastDayPartial accumulation flag. It still doesn't mention pagination limits or auth requirements, but the annotations already cover the safety profile.
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 tool's purpose and output shape in a compact sentence, then batches parameter notes efficiently. Slightly dense parentheticals cost a point but no sentence 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 read-only chart tool with no output schema, the description covers purpose, output format, default behavior, the partial-day flag, and all parameters. It is complete enough for correct invocation; only explicit sibling/alternative routing is missing.
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 schema already documents all five parameters, including the enum and format examples. The description adds only marginal clarification (dex accepts display name or on-chain prefix, metric enum values, days default). Baseline 3 is correct when the schema does the heavy lifting.
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: 'HIP-3 page charts: daily values per DEX'. It enumerates the exact metrics (volume, trades, traders, new_users, oi, oi_by_market, collateral_traders, collateral_oi), which distinguishes it from the broader daily/overview siblings. An agent can tell at a glance this is the HIP-3 daily time-series 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?
Usage is primarily implied through the metric enumeration and the 'last N days' behavior, but there is no explicit when-to-use vs when-not-to-use guidance, nor mention of which sibling to choose for different HIP-3 needs. It is adequate but leaves routing to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_hip3_dexOne HIP-3 DEX: totals, markets, daily totalsARead-only
HIP-3 per-DEX tab: collateral, total volume/trades/traders/OI, every market with all-time volume, traders and current two-sided OI (sorted by volume), and dated daily-total rows for the last N days (today flagged partial). dex: display name or prefix ('mkts' = KM). Prefer this for one DEX's market list.
| Name | Required | Description | Default |
|---|---|---|---|
| dex | Yes | DEX display name ('KM') or prefix ('mkts'). | |
| days | No | Daily totals lookback (default 30). | |
| limit | No | Max list items (default per tool). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| offset | No | List items to skip. | |
| search | No | Filter markets by symbol substring. | |
| includeMarketDaily | No | Include each market's own daily series (large; default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint, openWorldHint), so the description is free to add data semantics: today's daily row is flagged partial, market OI is two-sided and volume-sorted, and includeMarketDaily is large/off by default. Those are real behavioral traits an agent needs to interpret results correctly, though nothing is said about rate limits or failure modes.
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 returned payload, then the parameter hint, then the routing preference. No filler; the densest information (what you get back) comes first.
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 carries the burden of describing the return shape, and it does so concretely (totals, market list, daily rows) for a 7-parameter tool. Minor gaps remain: ordering/pagination behavior for the market list and what happens when `dex` matches nothing are unspecified.
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 each parameter already carries a description, so the schema does the heavy lifting. The description only restates the `dex` alias mapping and the 'last N days' framing of `days`, adding no format or constraint detail beyond the schema. Baseline 3 applies.
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 enumerates the exact payload: collateral, total volume/trades/traders/OI, per-market all-time volume and two-sided OI, plus dated daily-total rows. It carves out a scope ('one DEX') that distinguishes it from the aggregate hip3_overview/hip3_markets siblings, though it never names those siblings explicitly.
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?
'Prefer this for one DEX's market list' states a clear selection condition and implies a multi-DEX alternative exists, which is useful routing guidance. It stops short of naming the alternative tool or stating when-not to use it (e.g. when comparing DEXes).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_hip3_marketsHIP-3 markets list & cross-DEX market comparisonARead-only
HIP-3 market tables. Without symbol: all HIP-3 markets (dex, symbol, canonical, asset class) filterable by dex/assetClass/search. With symbol ('TSLA', 'GOLD'): per listing DEX the OI, DAU, volume, spread, slippage (1k-1m), plus OI/DAU history trimmed to days. Prefer this to compare one underlying across HIP-3 DEXs; live positioning is in flowscan_perp_markets ('xyz:TSLA'), Binance in flowscan_hip3_binance_comparison.
| Name | Required | Description | Default |
|---|---|---|---|
| dex | No | HIP-3 DEX (display name or prefix). | |
| days | No | Comparison history length (default 30). | |
| limit | No | Max list items (default per tool). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| offset | No | List items to skip. | |
| search | No | Symbol substring. | |
| symbol | No | Canonical underlying symbol for a cross-DEX comparison. | |
| assetClass | No | Asset class filter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint and openWorldHint, so the safety bar is low. The description adds substantive behavioral detail the annotations cannot convey: what each branch returns (market table columns vs per-DEX OI/DAU/volume/spread/slippage plus trimmed history), and how `days` bounds comparison history. It omits pagination/rate-limit behavior, so not a 5.
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 dense sentences, front-loaded with the resource then the mode split then the routing hint; the parenthetical field lists are information-dense rather than padding. Slightly packed, but essentially every clause carries signal.
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 properly compensates by enumerating the returned fields for both modes. Combined with the 100%-covered schema and safety annotations, an agent has enough to call it correctly; only edge details (empty-result handling, pagination interplay with limit/offset) are left implicit.
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 the baseline is 3, but the description goes beyond it: it gives concrete `symbol` examples ('TSLA', 'GOLD'), explains that the value is a canonical underlying, and clarifies the mode-switching semantics of `symbol` plus the trimming role of `days`. The dex/assetClass/search filters are mentioned as available filters.
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 the resource (HIP-3 market tables) and immediately splits into two explicitly-scoped modes based on `symbol` absence/presence, naming the exact columns returned in each. An agent can distinguish it from flowscan_hip3_dex, flowscan_hip4_markets, and flowscan_perp_markets without inspecting any schema.
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 routes the agent: 'Prefer this to compare one underlying across HIP-3 DEXs', and names flowscan_perp_markets ('xyz:TSLA') for live positioning and flowscan_hip3_binance_comparison for Binance data. This is a textbook when-to-use-this-vs-alternatives statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_hip3_overviewHIP-3 perp DEXs overview & market shareARead-only
The /hip-3 headline: HIP-3 totals (volume all-time/30d/90d, trades, traders, new users, OI), per-DEX and per-collateral market share, collateral per DEX, builder-routed share (top 3 per DEX), and dexAliases (display name -> on-chain prefix, e.g. KM=mkts, Paragon=para, Entropy=io). OI is two-sided (long + short). Prefer this for DEX-level totals and share.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds data-shape semantics ('OI is two-sided (long + short)') and the dexAliases mapping, but says nothing about pagination, freshness, rate limits, or auth needs. With annotations carrying the safety profile, this is an adequate but not rich behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence followed by two short clarifiers, with the headline purpose front-loaded and the routing hint at the end. Efficient, though the parenthetical enumeration is long.
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 carries the burden of explaining returns, and it does so thoroughly by listing every field group returned. What remains missing is any behavioral or timing context, but for a read-only aggregate endpoint this is close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single `fields` parameter, so the schema fully documents projection paths and the _fieldsNotFound behavior. The description never mentions the fields parameter, so baseline 3 is appropriate when the schema does the work.
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 states a specific resource and enumerates exactly what the overview contains (all-time/30d/90d volume, trades, traders, OI, per-DEX and per-collateral market share, builder-routed share, dexAliases). It signals scope ('DEX-level totals and share') but does not name a sibling tool to contrast against, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing line 'Prefer this for DEX-level totals and share' gives a clear selection condition against the per-market/per-day siblings. It does not, however, name an alternative tool or state when not to use it, so routing is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_hip4_labelsHIP-4 asset id -> human labelARead-only
Resolve HIP-4 outcome asset ids like '#14730' (YES) / '#14731' (NO) to readable labels such as 'Arsenal · Yes', as the address page does for HIP-4 spot balances. Returns {labels: {assetId: label}}.
| Name | Required | Description | Default |
|---|---|---|---|
| assets | Yes | Asset ids, e.g. ['#14730','#14731'] or numeric strings. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds value by disclosing the return shape ({labels: {assetId: label}}), which is important because no output schema exists. It does not mention the 100-item cap or error behavior, but that is minor.
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-loaded single sentence giving purpose and examples, followed by the return shape in one clause. No filler; every part earns its place.
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 simple one-parameter lookup with no output schema, the description supplies the input semantics, output shape, and a reference point for usage — everything an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning about id semantics — that ids like '#14730'/'#14731' encode YES/NO outcomes — which goes beyond the schema's bare format examples.
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 ('resolve') and resource (HIP-4 outcome asset ids -> readable labels) with concrete input/output examples ('#14730' (YES) -> 'Arsenal · Yes'). An agent can clearly distinguish it from siblings like flowscan_hip4_markets or flowscan_hip4_outcome.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (mapping ids to human labels, mirroring the address page's treatment of HIP-4 spot balances) but gives no explicit when/when-not guidance or alternatives. No routing away from sibling tools is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_hip4_marketsHIP-4 prediction markets (questions, active & settled outcomes)ARead-only
The /hip-4 page: HIP-4 prediction markets. section='active' (default): slim rows (outcomeId, name, marketType, asset ids, underlying/target/expiry, yesMark/noMark = implied probability, yesChange24h, volume24h, totalVolume, deployer, question) sorted by sortBy (default volume24h desc). 'settled': resolved outcomes with settleFraction and trade stats. 'questions': question groups. 'all': all three. full=true for descriptions. Candles: flowscan_hip4_outcome.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | Full rows instead of slim rows. | |
| limit | No | Max list items (default per tool). | |
| order | No | Default desc. | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| offset | No | List items to skip. | |
| search | No | Substring over name, description, category, underlying, type, deployer, question (e.g. 'Premier League'). | |
| sortBy | No | Default volume24h. | |
| section | No | Default active. | |
| category | No | Category substring (e.g. 'NFL'). | |
| settledLimit | No | Settled outcomes to fetch (default 100). | |
| includeContexts | No | With full: raw spot contexts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, openWorldHint), so the bar is lower, and the description adds real behavioral context: it discloses the slim-row field set, the default sort (volume24h desc), the meaning of yesMark/noMark as implied probability, and that full=true returns descriptions. It omits any pagination or rate-limit caveat, keeping it from a 5.
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 page and its sections are front-loaded, and every clause carries information (section semantics, defaults, sibling pointer). It is dense and parenthetical, though, reading as one long run-on rather than cleanly separated points, which costs it a point.
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 tool with no output schema, the description compensates well by enumerating the returned row fields and explaining defaults and section behavior. It is nearly complete, missing only explicit mention of limit/offset paging interaction and category filtering semantics.
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 a 3 is the baseline, but the description adds genuine meaning beyond the schema: section semantics, the sortBy default, the yesMark implied-probability interpretation, and settledLimit behavior. The fields/search parameters are left to the schema, which already documents them adequately.
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 ('HIP-4 prediction markets' with an enumerated set of sections) and explicitly routes the candle use-case to the sibling flowscan_hip4_outcome. An agent can distinguish it from flowscan_hip3_markets and flowscan_hip4_outcome without opening any schema.
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?
Gives clear context for each section ('active' default, 'settled' with settleFraction, 'questions', 'all') and names the alternative tool for candles. It does not, however, state exclusions or contrast itself against the other market-listing siblings (hip3_markets, perp_markets), so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_hip4_outcomeHIP-4 outcome detail with YES/NO candlesARead-only
HIP-4 page outcome drill-down: candles for the YES and NO assets of one outcome over the last N days (compact rows [openTime ms, open, high, low, close, volume, trades]), plus per-side trade stats and, for settled outcomes (settled=true), the settled outcome record. Settled outcomes typically have no candles. Only outcomeId is required (asset ids default to '#0' YES / '#1' NO). Get outcomeId from flowscan_hip4_markets.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback days (default 7). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| settled | No | Set true for settled outcomes (site passes mode=settled). | |
| interval | No | Candle interval (default '1h', as the site uses). | |
| noAssetId | No | Default '#<outcomeId>1' (e.g. '#14731'); a missing '#' is added. | |
| outcomeId | Yes | Outcome id from flowscan_hip4_markets. | |
| yesAssetId | No | Default '#<outcomeId>0' (e.g. '#14730'); a missing '#' is added. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld, so the bar is lower, and the description adds real behavioral context beyond them: the compact candle row layout, per-side trade stats, the settled-record branch, and the caveat that settled outcomes usually return no candles. It does not mention pagination or rate limits, 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?
The payload description is front-loaded followed by the settled caveat and the id-sourcing note; three sentences, each carrying weight. Slightly dense with parenthetical asides, but no 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?
With no output schema, the description carries the return-value burden and does it: it defines the row shape, the trade stats, and the settled record, plus defaults and the settled-mode caveat. An agent has everything needed to call it and interpret the result.
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 the schema already documents every parameter and the baseline is 3. The description reinforces the YES/NO meaning of asset ids and the settled branch, but that mapping is largely already present in the schema descriptions, so it adds only marginal value.
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 (drill-down of one HIP-4 outcome into YES/NO candles) and enumerates the payload: candles, per-side trade stats, and the settled record. It explicitly names flowscan_hip4_markets as the source of outcomeId, so an agent can distinguish it from that sibling without opening a schema.
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?
Gives clear usage context: only outcomeId is required, asset ids default, and settled outcomes 'typically have no candles' with settled=true. It routes the agent to flowscan_hip4_markets for the required id. It stops short of explicit when-not guidance (e.g., when to prefer a market-level tool), so a 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_peersHyperliquid gossip-network peersARead-only
The /peers gossip-network crawl (~600 nodes). Default: meta (crawl time, counts, reachability, states), footprint (top countries/ASNs) and sentries (validator sentries with operator, state, peers served). section='nodes' (IP id, role, operator, state, tier, hops, parent, feeders, geo, ASN; filterable), 'edges' (feed links) or 'all' are paged.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | Filter nodes by role. | |
| limit | No | Max list items (default per tool). | |
| state | No | Filter nodes by crawl state. | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| nodeId | No | Return a single node by id (IP) plus its edges. | |
| offset | No | List items to skip. | |
| country | No | Exact ISO code ('US') or country name ('Japan'). | |
| section | No | Default summary. nodes (default 50) / edges / all (nodes 30, edges 100) are paged. | |
| operator | No | Filter nodes/sentries by operator name substring. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=true), lowering the bar, but the description adds real context: crawl size (~600 nodes), the default response shape, and that nodes/edges/all are paged. It does not mention rate limits or auth, but for a read-only crawl this is solid disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the resource and information-dense with little filler. The parenthetical packing makes it slightly run-on, but every clause carries usable detail.
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 carries the return-value burden and does so reasonably by describing the default sections and node fields. Given 9 optional params and open-world data, an agent has enough to call it, though pagination mechanics remain unspecified.
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 baseline is 3, but the description adds meaning beyond the schema by documenting what the section values yield (nodes default 50; all = nodes 30, edges 100) and listing the node fields (IP id, role, operator, state, tier, hops, parent, feeders, geo, ASN), helping the agent choose filters.
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 names the specific resource (the /peers gossip-network crawl, ~600 nodes) so an agent immediately knows it returns peer/network topology rather than address or revenue data. It is clear but does not explicitly contrast against siblings, which is fine since no sibling overlaps this domain.
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 the default output (meta, footprint, sentries) and that nodes/edges/all are paged, which guides section selection. However, it gives no when-to-use vs when-not-to-use guidance or explicit alternatives, leaving usage implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_perp_marketsPerp positioning snapshot per marketARead-only
Homepage perp snapshot for every perp market (~330 incl. HIP-3 like 'xyz:TSLA'): long/short counts and notional, ratios, open interest, avg entry, median leverage, unique addresses, snapshotIso/snapshotAgeSeconds (refreshes every few minutes). openInterest is Flowscan's two-sided figure: long + short notional (2x the one-sided OI some UIs show). Prefer this for live OI/positioning; hip3_markets/hip3_dex give HIP-3 history, hip3_binance_comparison the Binance side.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max list items (default per tool). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| market | No | Filter by market symbol substring (e.g. 'BTC', 'xyz:'). | |
| offset | No | List items to skip. | |
| sortBy | No | Sort key (default openInterest desc). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered; the description adds genuinely non-obvious context the annotations cannot carry: a refresh cadence ('every few minutes'), snapshotIso/snapshotAgeSeconds freshness fields, and the crucial definition that openInterest is two-sided (2x the one-sided figure some UIs show). It does not mention auth requirements or rate limits, which keeps it short of a 5.
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 what the tool returns; the OI-definition caveat and the sibling routing sentence each earn their place. Slightly dense in the first sentence's field enumeration, but no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-value burden and does so by naming the key fields (long/short counts and notional, ratios, OI, avg entry, median leverage, unique addresses, snapshot timestamps). Combined with the routing guidance and the OI semantics note, an agent has everything needed to call and interpret this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (limit, fields, market, offset, sortBy all documented with defaults like 'openInterest desc'), so the baseline is 3. The description hints at the market-filter use case via the HIP-3 symbol example but adds no syntax or format detail 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 and resource ('Homepage perp snapshot for every perp market') and quantifies scope (~330 markets, including HIP-3 symbols like 'xyz:TSLA'). It explicitly distinguishes itself from siblings flowscan_perp_positions and the hip3_* tools, so an agent can select it without opening any schema.
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?
Gives an explicit preference rule ('Prefer this for live OI/positioning') and names the alternatives with their distinct domains: hip3_markets/hip3_dex for HIP-3 history, hip3_binance_comparison for the Binance side. Both when-to-use and when-to-look-elsewhere are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_perp_positionsLargest open perp positions in a marketARead-only
Perp snapshot drill-down: open positions in one market, largest first (address, signed size, notional, side, entry, leverage, liq price, account value, funding/all-time PnL), with snapshotIso/snapshotAgeSeconds, marketSummary (whole market, unfiltered; OI = long + short notional) and filteredSideSummary (over the filtered rows only, with filter). Market is case-insensitive; bare 'TSLA' resolves to 'xyz:TSLA' when unique.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | No | Sort direction (default desc). | |
| page | No | 1-based page (see totalPages). | |
| side | No | Only long or only short positions. | |
| sort | No | Sort by notional (default) or size. | |
| limit | No | Positions per page (default 50, max 200). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| markPx | No | Mark price used by the server for return filters. | |
| market | Yes | Market, e.g. 'BTC', 'xyz:TSLA'. | |
| maxLiq | No | Max liquidation price. | |
| minLiq | No | Min liquidation price. | |
| maxSize | No | Max absolute size (coins). | |
| minSize | No | Min absolute size (coins). | |
| maxEntry | No | Max entry price. | |
| minEntry | No | Min entry price. | |
| maxReturn | No | Max unrealized return (requires markPx). | |
| minReturn | No | Min unrealized return (requires markPx). | |
| maxNotional | No | Max notional (USD). | |
| minNotional | No | Min notional (USD). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint, so the description usefully adds that the snapshot carries snapshotIso/snapshotAgeSeconds, that marketSummary is whole-market and unfiltered with OI = long + short notional, and that filteredSideSummary covers only the filtered rows. This is real disclosure of return semantics; it stops short of stating permissions, rate limits, or pagination/refresh behavior.
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 dense, front-loaded sentence that leads with what the tool is ('Perp snapshot drill-down') before enumerating return fields and summary semantics. It is a long run-on, but every clause carries information and nothing is padded.
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 18 parameters, no output schema, and only readOnly/openWorld annotations, the description does the heavy lifting: it enumerates returned fields, explains both summary blocks and the OI definition, and covers market resolution. Pagination and sort defaults are left to the schema, which is acceptable, but a note on output size or refresh cadence would round it out.
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, but the description adds genuine semantics the schema lacks: market matching is case-insensitive and a bare 'TSLA' resolves to 'xyz:TSLA' when unique, plus the meaning of the `filter` scope in filteredSideSummary. That resolves the practical ambiguity around the one required parameter.
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 states a specific resource and scope: 'open positions in one market, largest first', framed as a 'perp snapshot drill-down'. That is enough for an agent to know exactly what it returns, though it never names the adjacent siblings (flowscan_perp_markets, flowscan_address_perp_positions) to make the market-scoped vs address-scoped distinction explicit.
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 by 'drill-down' and 'one market', suggesting it follows a market-level tool, but there is no explicit when-to-use, when-not, or named alternative. An agent must infer that this is the per-market position list and not the per-address list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_revenue_deployer_feesDaily HIP-3 deployer fees by DEXARead-only
/revenue 'Deployer Fees': HIP-3 deployer fees per UTC day, oldest first: totalFee and byDex [{dex, totalFee}] with on-chain names ('xyz', 'para', 'io', 'mkts', 'hyna', 'cash', 'flx', 'vntl', 'km', 'hyperliquid'), plus rangeTotals (overall and per DEX). days = last N complete UTC days ending yesterday (default 90); includeToday adds today's partial row. USDC. Paid to deployers, so not part of Flowscan's headline protocol revenue.
| Name | Required | Description | Default |
|---|---|---|---|
| dex | No | One DEX: on-chain name ('xyz') or display name ('KM' = km + mkts). Rows then have dexTotalFee and allDexTotalFee. | |
| days | No | Last N complete UTC days (default 90). | |
| limit | No | Max list items (default per tool). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| offset | No | List items to skip. | |
| endDate | No | Last UTC day (inclusive). | |
| endTime | No | Range end, Unix ms. | |
| startDate | No | First UTC day (inclusive). | |
| startTime | No | Range start, Unix ms. | |
| includeToday | No | Append today's partial row. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuine behavioral context: rows are oldest first, values are USDC, default window is 90 complete UTC days ending yesterday, and includeToday appends a partial row. The note that these fees go to deployers and are excluded from headline protocol revenue is useful disambiguation.
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?
Dense but front-loaded: the endpoint path and core return shape come first, then defaults, units, and the revenue-scoping caveat. Every clause carries information, though the enumeration of all ten on-chain DEX names is somewhat list-heavy.
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 does the work of explaining the return shape (totalFee, byDex entries, rangeTotals overall and per DEX), units, and ordering. Combined with a fully documented input schema and read-only annotations, an agent has enough to call it correctly; only filtering/pagination behavior is left implicit.
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 the schema already documents all ten parameters. The description only reinforces `days` (default 90, complete UTC days ending yesterday) and `includeToday` (today's partial row) plus DEX naming; it says nothing about limit, offset, fields, or the start/end time variants. Baseline 3 is appropriate.
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 (HIP-3 deployer fees per UTC day) and even names the field set returned (totalFee, byDex, rangeTotals). This clearly differentiates it from sibling revenue tools like flowscan_revenue_hypercore_fees or flowscan_revenue_summary.
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 by the topic (deployer fees, not headline protocol revenue), but there is no explicit when-to-use guidance or naming of the alternative revenue tools the agent should pick instead. The closing clause hints at scoping but does not route to a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_revenue_hypercore_feesDaily HyperCore fee revenue (native vs HIP-3)ARead-only
/revenue 'Daily HyperCore Revenue' (and homepage 24h panel): one row per UTC day, oldest first: nativeHypercoreFee (non-HIP-3 markets) and hip3HypercoreFee (HIP-3 markets), USDC strings, plus rangeTotals. days = last N COMPLETE UTC days ending yesterday (default 90), like revenue_summary and the builder tools; includeToday appends today's partial row (partial: true). Or pass startDate/endDate or startTime/endTime (ms). History from 2026-03.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Last N complete UTC days (default 90). | |
| limit | No | Max list items (default per tool). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| offset | No | List items to skip. | |
| endDate | No | Last UTC day (inclusive). | |
| endTime | No | Range end, Unix ms. | |
| startDate | No | First UTC day (inclusive). | |
| startTime | No | Range start, Unix ms. | |
| includeToday | No | Append today's partial row. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint, so the description carries real weight and delivers: rows are per UTC day oldest-first, fees are USDC strings, rangeTotals is included, the `days` window ends yesterday rather than today, includeToday yields a partial:true row, and history begins 2026-03. That is rich, non-obvious behavioral 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?
Front-loads the resource identity and return shape before the parameter mechanics, and every sentence carries information. It is information-dense to the point of near-cramped phrasing (multiple parentheticals), which slightly reduces readability but wastes nothing.
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 compensates by naming the returned fields and their types, the row ordering, and the totals object. Combined with the time-window semantics and history start date, an agent has everything needed to call and interpret this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the 3 baseline applies, but the description exceeds it by giving the semantic edge cases: `days` counts COMPLETE UTC days ending yesterday, includeToday appends a partial current-day row, and time ranges may be passed as ms epoch via startTime/endTime. These interpretations are not derivable from the schema alone.
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 (daily fee revenue) and precisely what each row contains: nativeHypercoreFee for non-HIP-3 markets and hip3HypercoreFee for HIP-3 markets, plus rangeTotals. This cleanly distinguishes it from sibling revenue tools like revenue_priority_gas and revenue_deployer_fees, which it doesn't overlap with.
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?
Explains the two selection modes concretely: `days` for the last N complete UTC days, or explicit startDate/endDate / startTime/endTime. It also anchors expected behavior by naming revenue_summary and the builder tools. However it stops short of an explicit when-to-use-this-vs-those rule or a when-not condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_revenue_priority_gasDaily priority gas (write/read) with top usersARead-only
/revenue 'Daily Priority Gas' and 'Top Users': per UTC day, writePriority and readPriority {totalGas (HYPE), count} and, with includeTopUsers, the top 5 gas payers, plus rangeTotals. days = last N complete UTC days ending yesterday (default 90); includeToday adds today's partial row.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Last N complete UTC days (default 90). | |
| limit | No | Max list items (default per tool). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| offset | No | List items to skip. | |
| endDate | No | Last UTC day (inclusive). | |
| endTime | No | Range end, Unix ms. | |
| startDate | No | First UTC day (inclusive). | |
| startTime | No | Range start, Unix ms. | |
| includeToday | No | Append today's partial row. | |
| includeTopUsers | No | Include per-day topUsers lists (default false to keep output small). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds real behavioral context beyond that: rows end yesterday by default, includeToday appends a partial row, and includeTopUsers adds per-day top-5 lists (schema notes it defaults false to keep output small). No rate-limit or pagination disclosure, but the temporal/optional-output behavior is well conveyed.
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 core output content is front-loaded and the description is dense without obvious filler. It is a single long sentence with several nested clauses, which slightly taxes readability but 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?
With no output schema, the description compensates by naming the return shape (totalGas in HYPE, count, top-5 payers, rangeTotals). Combined with full schema coverage of the 10 parameters, an agent has enough to call it correctly; a brief note on pagination via limit/offset would round it out.
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 10 parameters are already documented in the schema. The description restates the days default and the includeToday semantics, adding only marginal meaning beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.
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 names a specific resource ('Daily Priority Gas'/'Top Users') and enumerates the returned metrics (writePriority/readPriority totalGas in HYPE, count, top 5 payers, rangeTotals). It is clearly scoped to priority-gas revenue, but it does not explicitly distinguish itself from sibling revenue tools like flowscan_revenue_summary or flowscan_revenue_hypercore_fees.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the temporal default (last 90 complete UTC days ending yesterday) and the effect of includeToday and includeTopUsers, which implies when to toggle them. However, it gives no explicit guidance on when to pick this tool over the other revenue siblings, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_revenue_summaryRevenue summary (last 1 / 7 / 30 complete days)ARead-only
Convenience aggregate of the /revenue page and the homepage '24h Revenue' card: sums native HyperCore fees (USDC), HIP-3 HyperCore fees (USDC), their sum totalUsdcExcludingGas, HIP-3 deployer fees (USDC, paid to deployers, not protocol revenue) and priority gas (HYPE) over the last 1, 7 and 30 complete UTC days, plus the current (partial) UTC day separately and an annualized run-rate from the trailing 7 complete days. Computed from the three /api/gossip/info series on flowscan.xyz.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description adds real behavioral context beyond them: the exact time windows (last 1/7/30 complete UTC days), the separate current partial day, the trailing-7-day annualized run-rate, and a clarifying note that deployer fees are paid to deployers, not protocol revenue. It also discloses the underlying data source (three /api/gossip/info series), which helps an agent trust staleness/coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the purpose and the source, with no promotional filler. It is somewhat long and packed, but every clause (metrics, windows, partial day, run-rate, source) 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?
With no output schema, the description does most of the work by enumerating the metrics and windows returned, giving an agent a good picture of the response. The only gap is the projection/fields mechanism, which the schema already covers, so the definition is largely complete for a read-only aggregate.
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 the single `fields` parameter and its _fieldsNotFound behavior are already documented in the schema. The description adds no parameter-level guidance, so the baseline of 3 applies.
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 states a specific verb (convenience aggregate) and resource scope (native HyperCore fees, HIP-3 HyperCore fees, deployer fees, priority gas over 1/7/30 days), and positions itself as the aggregate of the three component series that appear as siblings. It distinguishes itself functionally from the individual flowscan_revenue_* tools, though it does not name those siblings explicitly.
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?
Calling it a 'convenience aggregate' implies you use this when you want a combined overview rather than the individual fee series, but the description never states when to prefer this over flowscan_revenue_hypercore_fees / _deployer_fees / _priority_gas, nor any exclusions or prerequisites. Usage is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_spot_stocksTokenized stocks on Hyperliquid spot (xStocks, Dinari)ARead-only
The /spot-stocks page: tokenized stocks on Hyperliquid SPOT: NVDAX, SPYX, QQQX, SKHYX, MUX, SNDKX, SPCXX, TSLAX, AAPLX, CRCLX (xStocks) and SPCXD (Dinari). Per-token price, 24h/all-time volume, holders and liquidity ARE served. section='current' (default): summary + per-token stats. 'timeseries': daily volume/holders/traders/value per token (30 days default). 'liquidity': cumulative depth within 2/5/10/25 bps in tokens and USD. 'topHolders': largest holders.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | timeseries: last N days (default 30). liquidity: history days (default 1 with token). | |
| limit | No | Max list items (default per tool). | |
| token | No | Token/underlying substring ('NVDA'). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| offset | No | List items to skip. | |
| section | No | Default current. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes this as a safe read; the description adds useful context by enumerating what each section returns (volume, holders, liquidity depth, top holders). It stops short of disclosing pagination, rate limits, or auth requirements, so with annotations carrying the safety profile this is only modest added value.
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 resource and its section semantics; every sentence contributes. The long token enumeration is informative but slightly inflates the opening sentence.
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 read-only, no-output-schema tool with a fully documented schema, the description covers the resource, its tokens, and all four section behaviors adequately. Missing only return-format/pagination detail, which is minor here.
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 schema documents all six parameters. The description goes beyond it by explaining what each section value means and how days applies to timeseries vs liquidity, adding genuine semantic value over the raw enum.
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 (tokenized stocks on Hyperliquid spot) with concrete token examples and the four data views it serves. An agent can distinguish it from the perp/staking/revenue siblings, though the '/spot-stocks page' framing is slightly URL-flavored rather than task-oriented.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The section descriptions imply how each mode is used (current for summary, timeseries for daily metrics, etc.), but there is no explicit when-to-use/when-not or named alternative. Usage is left to inference from the section list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_stablecoin_marginStablecoin spot balances & perp marginCRead-only
Homepage 'Stablecoin Perp Margin': total stablecoin value on HyperCore split into spot balances and perp margin (with unique holders/traders), and per token (USDC, USDT, USDE, USDH) spot/perp balances, holders, average/median, total value and market share %. USD.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, and the description adds no behavioral context beyond that — no note on freshness, snapshot vs. time-series, auth needs, or how the HyperCore aggregation is scoped. With annotations covering the safety profile the bar is lower, but this adds essentially nothing behavioral.
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?
It is one dense, front-loaded fragment that crams parentheticals ('with unique holders/traders') and a trailing unit token ('USD.'), which reads awkwardly and buries the unit at the end. No wasted sentences, but structure is list-like rather than explanatory.
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 carries the burden of describing returns, and it does so reasonably: it enumerates the breakdown (total vs. per-token), the metrics (holders, average/median, market share), and the unit (USD). Only gaps are the absence of any usage context and of temporal granularity.
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% for the single optional 'fields' parameter, so the schema does the work. The description says nothing about path syntax or the _fieldsNotFound fallback, so the baseline 3 applies.
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 names a specific resource (stablecoin value on HyperCore split into spot balances and perp margin) and enumerates the dimensions returned (per-token balances, holders, average/median, market share). It is clear what the tool retrieves, though it never explicitly differentiates itself from sibling tools like flowscan_perp_positions or flowscan_address_summary.
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?
There is no statement of when to use this tool versus alternatives, no prerequisites, and no exclusions. The words 'Homepage' imply a dashboard role but do not route the agent to or away from any sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_staking_eventsValidator staking eventsARead-only
Staking page validator activity: most recent delegation/undelegation events for one validator, newest first (user, amount in HYPE, isUndelegate, tx hash, time ms + ISO). validator is an address or a validator name. The upstream currency field reads 'USDC' but staking amounts are HYPE.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of events (default 50, max 500). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| validator | Yes | Validator address or name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint, openWorldHint), so the description's added value is real: it discloses ordering (newest first), the return fields, and a valuable data caveat that the upstream `currency` field reads 'USDC' but staking amounts are actually HYPE. That caveat would otherwise cause misinterpretation of results.
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 core purpose and ordering before the currency caveat. Dense but every clause (fields returned, ordering, currency trap) earns its place; the field enumeration is slightly listy but useful given no output 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?
With no output schema, the description steps in to enumerate the returned fields (user, amount in HYPE, isUndelegate, tx hash, time ms + ISO), which is exactly what an agent needs. It also flags the currency mislabeling. Minor gap: no pagination/limit behavior beyond what the schema states.
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 the schema already documents limit, fields, and validator. The description only restates that `validator` accepts an address or name, adding nothing beyond the schema; baseline 3 is appropriate.
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 pairing: most recent delegation/undelegation events for one validator, with explicit ordering (newest first). It implicitly separates itself from sibling flowscan_validator_stakers and flowscan_staking_overview by scoping to events rather than stakers or aggregate stats, though it never names those siblings outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The framing 'Staking page validator activity' implies the context in which the tool applies, but there is no explicit when-to-use, when-not-to-use, or named alternative. An agent must infer that this is for per-validator event history versus the staker-list or overview siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_staking_overviewStaking overview & validator listARead-only
The /validators (Staking) page: total HYPE staked, delegator count, validator count, and every validator (~35) with name, address, commission (bps), total delegated HYPE, staker count and jailed flag (descriptions only with includeDescription). Filter by name/address, drop jailed validators, sort ascending or descending: e.g. sortBy=commission_bps, order=asc, excludeJailed=true finds the cheapest active validator.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max list items (default per tool). | |
| order | No | Sort direction (default desc, or asc for name). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| offset | No | List items to skip. | |
| search | No | Filter validators by name or address substring. | |
| sortBy | No | Sort key (default total_delegated). | |
| excludeJailed | No | Drop jailed validators (default false). | |
| includeDescription | No | Include each validator's free-text description (default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuine context beyond that: the scale (~35 validators) and the conditional behavior that descriptions are returned only when includeDescription is set, which tells the agent how output volume varies.
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-loaded with the resource and its return fields, then filters, then a single illustrative example; every clause carries information. It is a long, dense sentence, but nothing is redundant with the schema beyond brief field naming.
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, and the description compensates by enumerating both the page-level aggregates and the per-validator record shape. Combined with the filtering/sorting guidance and the schema's 100% parameter coverage, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage the baseline is 3, and the description goes further by tying parameters to intent: search filters by name/address, excludeJailed drops jailed validators, and the worked example combines sortBy, order and excludeJailed into a real query. It leaves limit/offset/fields unmentioned, but those are well covered by 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?
It names the exact resource ('The /validators (Staking) page') and enumerates the concrete aggregates and per-validator fields returned (total HYPE staked, delegator count, commission bps, jailed flag), which lets an agent distinguish it from staking_events and validator_stakers without opening a schema.
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 supplies a concrete usage scenario ('sortBy=commission_bps, order=asc, excludeJailed=true finds the cheapest active validator') and describes the available filtering/sorting operations, giving clear context for when this tool applies. It stops short of explicitly naming alternatives such as flowscan_validator_stakers, so no exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_validator_stakersValidator detail with its stakersARead-only
Staking page validator drill-down: one validator's summary (name, commission, total delegated, staker count, jailed) plus its delegators (stakers) as {address, amount HYPE}, largest first. validator is an address or a validator name (e.g. 'Hyper Foundation 2'). Large validators have thousands of stakers; use limit/offset or search.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max list items (default per tool). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| offset | No | List items to skip. | |
| search | No | Filter stakers by address substring. | |
| validator | Yes | Validator address or name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint and openWorldHint, and the description adds genuinely new behavior: results are returned 'largest first', the staker row shape is {address, amount HYPE}, and large validators can have thousands of stakers. This ordering, result-shape and scale information is beyond what the annotations provide.
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 dense sentences, front-loaded with the drill-down purpose and return shape before the pagination advice. Every clause carries information, though the field enumeration is slightly list-heavy.
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 carries the return-value burden and does most of it: summary fields, staker row format, ordering, and pagination strategy. The only gap is the concrete default for `limit` ('default per tool' is left opaque).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage the baseline is 3, but the description adds meaning: `validator` accepts an address OR a name, with a concrete example ('Hyper Foundation 2'), and it explains the role of search (address substring filtering) alongside limit/offset for paging.
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: a single validator's summary plus its delegator list, and enumerates the summary fields (name, commission, total delegated, staker count, jailed). The phrase 'validator drill-down' distinguishes it from flowscan_staking_overview without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Staking page validator drill-down' framing plus the warning that large validators have thousands of stakers, with the directive to 'use limit/offset or search', gives clear context for how to call it. It stops short of explicitly naming the sibling it supersedes (e.g. flowscan_staking_overview) or stating when-not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_weekend_coin_changesWeekend trading: one market's history across weekendsARead-only
Weekend page coin drill-down: one HIP-3 TradFi market's Friday-close -> Sunday-close move (pct and dollar) for every tracked weekend, newest first. Only DEX-prefixed TradFi markets have data; a bare symbol like 'TSLA' is resolved to 'xyz:TSLA' (crypto like 'BTC' has no weekend data). Timestamps come with ISO twins.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Market symbol, e.g. 'xyz:TSLA' or just 'TSLA'. | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safe-read (readOnlyHint) and open-world profile, and the description adds real value beyond them: newest-first ordering, symbol auto-resolution behavior, and ISO timestamp twins. It stops short of describing pagination or row limits, but the added behavioral context is substantive.
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 tight sentences with the core computation front-loaded, followed by scoping caveats and output notes. Dense but every sentence carries weight; 'ISO twins' is jargon but is the only slightly opaque phrasing.
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 carries the return-format burden and does so reasonably: pct and dollar values per tracked weekend, newest first, timestamps as ISO pairs. A short note on pagination or empty-result handling would round it out, but nothing essential for correct invocation is missing.
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 baseline is 3, but the description adds meaning the schema omits: the symbol-resolution rule ('TSLA' -> 'xyz:TSLA') and which symbols are valid. The `fields` parameter is covered by its own schema description rather than by the prose.
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?
Names a specific verb+resource+computation: one HIP-3 TradFi market's Friday-close -> Sunday-close move (pct and dollar) across every tracked weekend. This distinguishes it from siblings like flowscan_weekend_weeks (all markets) and flowscan_weekend_prices (price series), so an agent can route without opening schemas.
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?
Clearly states applicability constraints: only DEX-prefixed TradFi markets have data, bare symbols are auto-resolved ('TSLA' -> 'xyz:TSLA'), and crypto like 'BTC' yields nothing. Strong when-to-use context, but it never names an alternative sibling tool to use instead for crypto or non-weekend data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_weekend_positionsWeekend trading: positioning changes since Friday closeBRead-only
Weekend page positioning panel: per perp market (crypto and HIP-3 TradFi, ~330), long/short counts and notional at Friday close vs the latest snapshot, new/closed longs and shorts, net long/short changes, and optionally the top 5 address-level position changes per market.
| Name | Required | Description | Default |
|---|---|---|---|
| week | No | fridayCloseTs (ms) or a YYYY-MM-DD date in that weekend. Default: latest. | |
| limit | No | Max list items (default per tool). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| market | No | Filter markets by symbol substring. | |
| offset | No | List items to skip. | |
| sortBy | No | Sort markets (default currentLongNotional desc). | |
| includeTopAddressChanges | No | Include per-market topAddressChanges lists (default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe-read profile is covered. The description usefully adds the data scope (long/short counts and notional at two timestamps, new/closed positions, optional top-5 address changes), but says nothing about auth needs, latency, or pagination.
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 dense sentence that front-loads the panel scope and enumerates what it returns. It is information-rich and mostly earns its place, though it reads as a run-on that could be split for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by enumerating the fields returned per market, including the optional top address changes. Missing only default/pagination behavior, which the schema already covers.
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 the schema already documents all 7 parameters with types and defaults. The description only hints at includeTopAddressChanges ('optionally the top 5 address-level position changes per market'), which is marginal added meaning over 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: a 'positioning panel' showing long/short counts and notional per perp market between Friday close and the latest snapshot. The scope (~330 markets, crypto and HIP-3 TradFi) is concrete. It does not explicitly name the sibling weekend tools it differs from, so it stops short of a 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?
There is no when-to-use/when-not guidance and no reference to alternatives such as flowscan_weekend_prices or flowscan_weekend_coin_changes. The agent must infer from the name alone that this tool is for positioning rather than price/coin changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_weekend_pricesWeekend trading: Friday close vs current/Monday pricesARead-only
Weekend page price table: for HIP-3 TradFi perps (e.g. 'xyz:TSLA', 'xyz:GOLD'; stocks, indices, commodities, FX), the Friday-close prices, Sunday-close prices (once the weekend is over), live current prices (during an active weekend), and weekendChanges {pct, dollar} per market, plus status and price counts.
| Name | Required | Description | Default |
|---|---|---|---|
| week | No | fridayCloseTs (ms) or a YYYY-MM-DD date in that weekend. Default: latest. | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| market | No | Filter by market symbol substring, e.g. 'TSLA' or 'xyz:'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint, so the description carrying the stateful behavior adds real value: which price columns exist depends on whether a weekend is active or finished. It also discloses the weekendChanges {pct, dollar} shape and the presence of status/price counts, which the annotations do not cover.
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 dense sentence, but it front-loads the resource and then enumerates fields, so a reader gets the core identity immediately. No filler or repetition; the long parenthetical list is the only cost to readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned rows and fields, and annotations already cover the read-only/open-world safety profile. Given only three well-documented optional params, an agent has enough to call it correctly; the missing piece is guidance on when to choose it over siblings.
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 the week/fields/market semantics are already documented (fridayCloseTs or YYYY-MM-DD, path filtering with _fieldsNotFound, substring market match). The description adds no further parameter guidance beyond schema baseline, so 3 is appropriate.
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?
Names the resource precisely ('Weekend page price table' for HIP-3 TradFi perps) and enumerates the specific data columns returned: Friday-close, Sunday-close, live current, weekendChanges, status, counts. It is clearly distinguishable from flowscan_weekend_weeks or flowscan_weekend_positions, though the opening phrase 'Weekend page price table' is slightly jargon-y rather than a clean verb.
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?
No when-to-use statement, no prerequisite, and no alternative named. The temporal conditions ('once the weekend is over', 'during an active weekend') describe data availability rather than telling an agent when to pick this tool over sibling weekend tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flowscan_weekend_weeksWeekend trading: available weekends & scheduleARead-only
The /weekend-trading selector: tracked weekends, newest first (fridayCloseTs = week id, sundayCloseTs, ISO twins, status, avg % change, risers/fallers, market count, data availability). includeSchedule adds the next ~12 weekend/holiday sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max list items (default per tool). | |
| fields | No | Paths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound. | |
| offset | No | List items to skip. | |
| includeSchedule | No | Also return the upcoming session schedule (default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds real behavioral context beyond that: results are sorted 'newest first' and includeSchedule expands the payload with ~12 upcoming weekend/holiday sessions. It says nothing about pagination behavior or return size, which the limit/offset params imply exist.
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 selector role, then the optional schedule behavior. The parenthetical field list is dense but packs genuine information; very little waste overall.
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 and no nested objects, the description usefully compensates by enumerating the returned fields and status signals, and it explains the one non-obvious param (includeSchedule). Only pagination/ordering volume limits from limit/offset remain unaddressed, so it is close to complete for a read-only list 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?
Schema description coverage is 100%, so limit/offset/fields are already documented and baseline is 3. The description clarifies includeSchedule's effect ('adds the next ~12 weekend/holiday sessions'), a modest addition beyond the schema's terse 'Also return the upcoming session schedule', but it does not touch the other three params.
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?
Names a specific resource (tracked weekends) with a detailed enumeration of the columns returned (fridayCloseTs week id, sundayCloseTs, status, avg % change, market count), so the agent knows exactly what this list tool yields. It is distinguishable from weekend_prices/positions/coin_changes by being the week-level selector. It stops short of naming a sibling explicitly, so it does not earn a 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 only implied: it is 'the /weekend-trading selector' and 'newest first', and includeSchedule is flagged as an optional addition. There is no explicit statement of when to reach for this versus flowscan_weekend_prices or the other weekend siblings, and no exclusions or prerequisites.
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.
44 tool updates
v0.1.0- First observed
flowscan_address_extras - First observed
flowscan_address_fills - First observed
flowscan_address_ledger - First observed
flowscan_address_orders - First observed
flowscan_address_perp_positions - First observed
flowscan_address_staking - First observed
flowscan_address_summary - First observed
flowscan_address_vaults_subaccounts - First observed
flowscan_builder_dashboard - First observed
flowscan_builder_intelligence_detail - First observed
flowscan_builder_intelligence_list - First observed
flowscan_builder_intelligence_summary - First observed
flowscan_builder_lookup - First observed
flowscan_builder_revenue - First observed
flowscan_builders_daily_revenue - First observed
flowscan_builders_leaderboard - First observed
flowscan_builders_summary - First observed
flowscan_builders_user_series - First observed
flowscan_coverage - First observed
flowscan_hip3_binance_comparison - First observed
flowscan_hip3_builders - First observed
flowscan_hip3_daily - First observed
flowscan_hip3_dex - First observed
flowscan_hip3_markets - First observed
flowscan_hip3_overview - First observed
flowscan_hip4_labels - First observed
flowscan_hip4_markets - First observed
flowscan_hip4_outcome - First observed
flowscan_peers - First observed
flowscan_perp_markets - First observed
flowscan_perp_positions - First observed
flowscan_revenue_deployer_fees - First observed
flowscan_revenue_hypercore_fees - First observed
flowscan_revenue_priority_gas - First observed
flowscan_revenue_summary - First observed
flowscan_spot_stocks - First observed
flowscan_stablecoin_margin - First observed
flowscan_staking_events - First observed
flowscan_staking_overview - First observed
flowscan_validator_stakers - First observed
flowscan_weekend_coin_changes - First observed
flowscan_weekend_positions - First observed
flowscan_weekend_prices - First observed
flowscan_weekend_weeks
TDQS
Scored across 44 tools
Tools map to distinct pages/sections and descriptions frequently cross-reference each other (e.g. flowscan_perp_markets vs flowscan_hip3_markets, flowscan_builder_revenue vs flowscan_builders_leaderboard), which strongly reduces misselection. There is still overlap among the many HIP-3 and builder analytics tools, but explicit guidance makes boundaries mostly clear.
Names follow a predictable flowscan_ + snake_case convention with descriptive verb/noun groups. Minor inconsistency appears in singular/plural forms (flowscan_builders_leaderboard vs flowscan_builder_dashboard) and noun-only names like flowscan_coverage and flowscan_peers, but the pattern remains readable.
44 tools is very heavy for a single server, well beyond the typical 3-15 range, and many are narrow slices of individual pages or widget sections. The broad analytics scope partially explains it, but the selection burden is high and related tools could be consolidated.
The surface covers a wide range of Hyperliquid analytics: address detail, staking, revenue, HIP-3, HIP-4, builders, spot stocks, weekend data, peers and stablecoin margin. It also documents non-served areas (block/tx lookups, prices) via flowscan_coverage, leaving only minor potential gaps such as general crypto perp price history.
Maintenance
Related MCP Connectors
Read-only Hyperliquid data for AI agents: fills, candles, funding, liquidations, wallet analytics.
Read-only Hyperliquid analytics: orderflow, liquidation levels, whale positioning, funding.
Live Hyperliquid perps analytics for agents: funding, OI, whale prints, leaderboard, wallet risk.
Hyperliquid - 2 tools for perpetuals, options, and position data
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI agents to interact with Hyperliquid perpetual futures exchange for market analysis, account management, and risk-managed trading.51MIT
- 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
- AlicenseAqualityBmaintenanceRead-only Hyperliquid and cross-exchange market research for AI agents, providing structured tools for live market data without requiring authentication.940 npmMIT
- AlicenseNot gradedqualityBmaintenanceProvides live cryptocurrency prices, price history, and symbol listing tools for AI agents via the Hyperliquid API.83 PyPI1MIT