Skip to main content
Glama

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

FLOWSCAN_HYPERLIQUID_DIRECT=1 (or true) in the server's environment

Tools

44

58: the same 44 plus 14 Hyperliquid-direct tools

Hosts contacted

only https://www.flowscan.xyz

www.flowscan.xyz plus exactly api.hyperliquid.xyz, rpc.hyperliquid.xyz, api-ui.hyperliquid.xyz and api.hyperunit.xyz (HTTPS, and WSS to the two Hyperliquid WebSocket endpoints)

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:// or wss:// 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 hint with how long to wait. Other 4xx are not retried; 5xx, timeouts and network errors are retried up to twice.

  • flowscan_live_feed, flowscan_order_book and flowscan_recent_trades use WebSockets and need Node.js 22 or newer (global WebSocket). 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_mcp

2. From a local clone.

git clone https://github.com/joshavenue/flowscan_mcp
cd flowscan_mcp
npm install
npm run build
node dist/index.js

Then 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-mcp

Started 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.js

Client 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_mcp

To 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 = 120

Codex'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_mcp

or 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_mcp

Other 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-mcp

ChatGPT, 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/flowscan inside a project).

  • The MCP prompt flowscan_guide and the resource flowscan://guide, served by the server itself, for clients that support MCP prompts or resources (Claude Code: /mcp__flowscan__flowscan_guide). flowscan://coverage serves 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

flowscan_coverage

Map of Flowscan pages to tools, what is not served, HIP-3 DEX display names vs on-chain prefixes (hip3DexNames), the mainnet-only rule and output conventions. With topic, also notServedMatches and servedByThisServer (false when the topic only matches something this server cannot serve). No network call.

topic (keywords, e.g. revenue, hip-3, tx hash)

Homepage (/)

Tool

Returns

Key params

flowscan_stablecoin_margin

"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

flowscan_perp_markets

Perp positioning snapshot for every perp market (about 330, including HIP-3 markets like xyz:TSLA): long/short counts and notional, ratios, open interest, average entry, median leverage, unique addresses, snapshotIso/snapshotAgeSeconds.

market, sortBy (default openInterest), fields/limit/offset (default 60)

flowscan_perp_positions

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; total/totalPages, snapshotIso/snapshotAgeSeconds; marketSummary (whole market, unfiltered: long/short counts and notional, OI, median leverage, average entry) and filteredSideSummary (only the rows matching the filters, with the applied filter). A bare HIP-3 symbol (TSLA) resolves to xyz:TSLA when unique; otherwise the error lists candidates.

market (case-insensitive), side, sort (notional default, size), dir, minSize/maxSize, minNotional/maxNotional, minEntry/maxEntry, minLiq/maxLiq, minReturn/maxReturn, markPx, limit (default 50, max 200), page (1-based), fields

flowscan_address_perp_positions

One address's open perp positions across all markets (including HIP-3) from the latest snapshot, sorted by notional, with totalNotional and totalPositions.

address, market, side, fields/limit/offset (default 50)

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

flowscan_revenue_hypercore_fees

One row per UTC day, oldest first: nativeHypercoreFee (non-HIP-3 markets) and hip3HypercoreFee (HIP-3 markets), USDC, plus rangeTotals. History starts 2026-03. Today's row (only with includeToday, or an explicit range that reaches today) has partial: true.

days (last N complete UTC days ending yesterday, default 90), or startDate/endDate, or startTime/endTime (Unix ms), includeToday (append today's partial row), fields/limit/offset (default 400)

flowscan_revenue_deployer_fees

Daily HIP-3 deployer fees (totalFee) with byDex per on-chain DEX name, plus rangeTotals (overall and per DEX). With dex, rows also have dexTotalFee and allDexTotalFee. USDC. Paid to deployers, not protocol revenue.

days (last N complete UTC days ending yesterday, default 90), or startDate/endDate, or startTime/endTime (Unix ms), includeToday (append today's partial row), dex (on-chain name like xyz, or display name like KM), fields/limit/offset (default 400)

flowscan_revenue_priority_gas

Daily write/read priority gas (totalGas in HYPE, count), rangeTotals, optionally the top 5 gas-paying users per day.

days (last N complete UTC days ending yesterday, default 90), or startDate/endDate, or startTime/endTime (Unix ms), includeToday (append today's partial row), includeTopUsers (default false), fields/limit/offset (default 400)

flowscan_revenue_summary

For the last 1, 7 and 30 complete UTC days: native fees, HIP-3 fees, their sum totalUsdcExcludingGas, deployer fees (USDC) and priority gas (HYPE); the current partial day separately; annualized run-rate from the trailing 7 days; a note on how Flowscan's headline figure is built. Computed by this server from the three series above.

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

flowscan_address_summary

Account role (user/vault/subAccount/agent/missing), lifetime PnL summary (PnL, win rate, trades, hold time, volume, fees, funding, days active, tradedPairs as {count, first30}), live perp state (account value, notional, margin, withdrawable, positions with size, entry, leverage, liquidation, uPnL, ROE, funding; largest first) and non-zero spot balances.

address, include (any of role, pnlSummary, perpState, spotBalances; default all), dex (HIP-3 DEX for perp state, display name or prefix; unknown names are rejected; default main DEX), positionsLimit (default 50), balancesLimit (default 50), fields

flowscan_address_orders

open: resting orders on every DEX. openDetailed: main-DEX orders with trigger/TP-SL/reduce-only/TIF details (upstream max 100, then capped). historical: the newest ~2000 orders with final status, countsByStatus over all of them, and coveredRange/capped. Always count of matching orders; times have ISO twins.

address, kind (open default, openDetailed, historical), coin, fields/limit/offset (default 100 for open, 50 otherwise)

flowscan_address_fills

Fills, newest first: coin, price, size, side, direction, closed PnL, fee, tx hash, time and timeIso. totals over ALL matched fills in coveredRange (not just the page): count, closedPnlUsdc, feesUsdc, feesByToken, volumeUsd (px x sz), byCoin. Without startTime: the latest ~2000 fills. With startTime: follows pages past the upstream 2000-row cap (up to maxPages); if still capped, nextStartTime + capNote.

address, startTime, endTime (Unix ms), aggregateByTime (default true), coin (applied before totals), maxPages (default 5, max 10), fields/limit/offset (default 50)

flowscan_address_ledger

Newest first, rows with timeIso. ledger: deposits, withdrawals, sends, transfers, vault and staking moves; totals.byType {count, sumUsdc, inUsdc, outUsdc}. funding: hourly payments; totals {count, netUsdc, paidUsdc, receivedUsdc, byCoin} (netUsdc > 0 means received). Totals cover ALL matched rows in coveredRange. Same maxPages/capped/nextStartTime handling as fills.

address, kind (ledger default, funding), startTime (default 30 days ago for ledger, 7 days for funding), endTime, coin (applied before totals), maxPages (default 5, max 10), fields/limit/offset (default 50 for ledger, 100 for funding)

flowscan_address_staking

totalDelegatedHype, validatorCount, delegations {validator, validatorName, commission_bps, is_jailed, amountHype, lockedUntil, lockedUntilIso} and staking history, newest first.

address, historyLimit (default 50, max 500), fields

flowscan_address_vaults_subaccounts

Vault equities (vault, equity, lock-up) and sub-accounts (name, address, account value, notional, withdrawable, open positions, non-zero spot balances).

address, fields

flowscan_address_extras

Smaller widgets: approved builders (with max fee), HyperCore borrow/lend state and health, API rate limit, TWAP slice fills.

address, kind (approvedBuilders, borrowLend, rateLimit, twapSliceFills), fields/limit/offset (default 100 for lists)

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

flowscan_staking_overview

Total HYPE staked, delegator and validator counts, and every validator (about 35) with name, address, commission (bps), total delegated, staker count, jailed flag; sortedBy.

search, sortBy (total_delegated default, staker_count, commission_bps, name), order (desc default, asc default for name), excludeJailed, includeDescription (default false), fields/limit/offset (default 50)

flowscan_validator_stakers

One validator's summary plus its delegators {address, amount} (HYPE), largest first.

validator (0x address or name; an ambiguous name returns candidates), search, fields/limit/offset (default 100)

flowscan_staking_events

Recent delegation/undelegation events, newest first: user, amount (HYPE), isUndelegate, tx hash, time (ms and timeIso).

validator (address or name), limit (default 50, max 500), fields

Peers (/peers)

Tool

Returns

Key params

flowscan_peers

Crawl of the Hyperliquid gossip network (about 600 nodes). Default: meta (crawl time, counts, reachability, states), footprint (top countries, ASNs) and sentries. nodes, edges and all are paged (all returns nodesPaging/edgesPaging).

section (summary default, nodes, edges, all), country (exact ISO code like JP or exact name like Japan), state (syncing, full, unreachable, no_resp, other), role (hub, sentry, fringe, private, scraper), operator, nodeId, fields/limit/offset (default 50 nodes, 500 edges; 30 nodes and 100 edges with all)

HIP-3 perp DEXs (/hip-3)

Tool

Returns

Key params

flowscan_hip3_overview

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 dexAliases.

fields

flowscan_hip3_daily

Daily values per DEX for one metric as dated rows [{date, XYZ: v, KM: v, ...}] (today's row flagged partial), with lastDayPartial/partialNote. raw: true returns the positional {dates, series} form instead.

metric (volume default, trades, traders, new_users, oi, oi_by_market, collateral_traders, collateral_oi), dex (display name or prefix), days (default 30, may include today), raw, fields

flowscan_hip3_markets

All HIP-3 markets (dex, symbol, canonical underlying, asset class). With symbol: per listing DEX the OI, DAU, volume, spread, slippage, plus OI/DAU history trimmed to days.

symbol, dex, assetClass, search, days (default 30), fields/limit/offset (default 100)

flowscan_hip3_dex

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.

dex (display name or prefix, case-insensitive), days (default 30), includeMarketDaily, search, fields/limit/offset (default 50)

flowscan_hip3_builders

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.

search, window (total default, 30d, 90d), dex (rank by volume on one DEX), includePerDex, fields/limit/offset (default 50)

flowscan_hip3_binance_comparison

About 240 real-world-asset symbols with the matching Binance USDT-M futures: Binance OI, 24h volume, last price. With symbol: Binance daily history (trimmed to days) and the HIP-3 side per DEX (OI, DAU, volume, spread, slippage).

symbol, underlyingType (EQUITY, HK_EQUITY, KR_EQUITY, CN_EQUITY, COMMODITY, INDEX, FX, PREMARKET), sortBy (oi default, volume24h, lastPrice), days (default 30), fields/limit/offset (default 50)

HIP-4 outcome markets (/hip-4)

Tool

Returns

Key params

flowscan_hip4_markets

active: slim rows (outcomeId, name, market type, asset ids, underlying/target/expiry, yesMark/noMark = implied probability 0 to 1, yesChange24h, volume24h, totalVolume, deployer, question), sorted by sortBy. settled: resolved outcomes. questions: question groups. all: all three. full: true for complete rows (descriptions, prev-day prices).

section (active default, settled, questions, all), search, category, sortBy (volume24h default, totalVolume, yesMark, change24h), order (desc default, asc), full, includeContexts (with full: raw spot contexts), settledLimit (default 100), fields/limit/offset (default 20; 10 per list with all)

flowscan_hip4_outcome

YES and NO candles for one outcome ([openTime, open, high, low, close, volume, trades]), per-side trade stats, and the settlement record for settled outcomes.

outcomeId, yesAssetId/noAssetId (default #<outcomeId>0 / #<outcomeId>1; # is added if missing), interval (1m, 5m, 15m, 1h default, 4h, 1d), days (default 7, max 90), settled, fields

flowscan_hip4_labels

Readable labels for HIP-4 asset ids such as #14730.

assets (1 to 100 ids)

Spot stocks (/spot-stocks)

Tool

Returns

Key params

flowscan_spot_stocks

Tokenized stocks on Hyperliquid spot: xStocks NVDAX, SPYX, QQQX, SKHYX, MUX, SNDKX, SPCXX, TSLAX, AAPLX, CRCLX and Dinari SPCXD. current: summary and per-token price, 24h/all-time volume, holders, traders, value, depth. timeseries: daily volume/holders/traders/value per token. liquidity: cumulative depth within 2/5/10/25 bps of mid in tokens and USD (latestDepthUsd), with a sampled history when token or days is given. topHolders: largest holders per token.

section (current default, timeseries, liquidity, topHolders), token (ticker or underlying substring, e.g. MUX, NVDA), days (timeseries default 30; liquidity history default 1 with token), fields/limit/offset (top holders: default 25 per token with token, 10 without)

Weekend trading (/weekend-trading)

Tool

Returns

Key params

flowscan_weekend_weeks

Tracked weekends, newest first (fridayCloseTs is the week id, sundayCloseTs, ISO twins, status, average % change, risers/fallers), optionally the next ~12 weekend/holiday sessions.

includeSchedule, fields/limit/offset (default 26)

flowscan_weekend_prices

For HIP-3 TradFi perps (xyz:TSLA, xyz:GOLD, ...): Friday-close, Sunday-close (after the weekend) and live prices (during it), with % and dollar change.

week (fridayCloseTs in ms or a YYYY-MM-DD date in that weekend; default latest), market, fields

flowscan_weekend_positions

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.

week, market, sortBy, includeTopAddressChanges, fields/limit/offset (default 50)

flowscan_weekend_coin_changes

One HIP-3 TradFi market's Friday-to-Sunday move for every tracked weekend, with ISO timestamps. A bare symbol (TSLA) resolves to xyz:TSLA; crypto has no weekend data.

coin (e.g. xyz:TSLA or TSLA), fields

Builders (/builders, /builders/{id})

Tool

Returns

Key params

flowscan_builder_lookup

Resolves a builder name, id or address (substring) to candidates with id, name, category, address, revenue and volume per window, total users, and aliasIds where present. Exact matches first; ambiguous is true when more than one fits.

query, limit (default 20)

flowscan_builder_revenue

One builder's total and daily revenue (USD) over any range, cross-checked between /api/builders/all-daily-revenue and /api/dashboard/builder-daily-series (both totals with the dates each covers; perKeyTotals/usedKeys when revenue appears under several keys). An ambiguous name returns ambiguous: true with candidates. Dates are checked before any request: a future start or start after end is an error, and the end is clamped to yesterday (UTC).

builder (0x address preferred, id:<id>, or an unambiguous name), days (default 30, ending yesterday UTC) or startDate/endDate, fields/limit/offset (default 60 daily rows, newest first)

flowscan_builders_leaderboard

"Builder Arena": about 1800 builders ranked by one metric over a fixed window. Compact rows {rank, id, name, category, value, <metric>, revenueAllTime, totalUsers}, or every metric with full; sortedBy.

metric (revenue default, volume, new_users, total_users, avg_revenue_per_user_all_time), window (1d, 7d default, 30d, 90d, all_time), category, search, minUsers (default 0), full, fields/limit/offset (default 25)

flowscan_builders_summary

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)

flowscan_builders_daily_revenue

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.

startDate, endDate (YYYY-MM-DD; default last 30 days ending yesterday), builder (id/address substring), top (default 20), fields

flowscan_builders_user_series

Daily active traders and new traders since 2025-07-27, overall or per builder.

builder, days (default 30), metric (both default, traders, newTraders), fields

flowscan_builder_dashboard

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; resolvedBuilder when a name or id was resolved.

builder (0x address preferred, id:<id>, or a name; ambiguous names return candidates), window (30d default, 7d, 90d, all), section (all default, stats, daily, assets), days (daily series length, default 90), assetsLimit (default 40), fields

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

flowscan_builder_intelligence_list

The roughly 120 analysed builders (id, name, category, total/active users, revenue, volume, 7d new users) and the categories.

search, category, sortBy (total_revenue default), includeCategories (default true), fields/limit/offset (default 50)

flowscan_builder_intelligence_detail

One builder's report: user status, revenue, cohorts, lifecycle, retention, daily activity, top users, heatmap, daily revenue. Address lists are reduced to {count, sample}.

builderId (as shown by flowscan_builder_intelligence_list, case-insensitive), sections (default metadata, key_metrics, user_status_metrics, revenue_metrics), startDate, endDate, fields/limit/offset (default 50 top-level, 20 nested)

flowscan_builder_intelligence_summary

Aggregates for a category or overall: builders included, totals (users, active users, revenue, fees 24h/7d/30d/90d, retention) and user-weighted averages.

category (default overall), startDate, endDate, includeExcludedBuilders, fields

"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

flowscan_block

/block/{height}

rpc.hyperliquid.xyz/explorer (blockDetails)

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

height, type (action type, e.g. order), status (success, error), user, includeAction (raw actions, large), fields/limit/offset (default 50 txs)

flowscan_transaction

/tx/{hash}

rpc.hyperliquid.xyz/explorer (txDetails)

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.

hash, fields

flowscan_live_feed

/ (Live Block Activity, Recent Blocks, Recent Transactions)

wss://rpc.hyperliquid.xyz/ws

Listens for seconds, then returns latestBlock, blocks {count, heightRange, rowsReturned, rows} (height, time, hash, proposer, tx count) and txs {count, countsByType, timeSpanMs, timeSpanIso, rowsReturned, rows} (user, action summary, status), newest first; counts and time span cover the whole sample received (a sample of the explorer's stream, not every tx). Plus blocks/s, txs/s and block-interval stats. Node 22+.

seconds (default 5, max 15), include (blocks, txs, both default), limit (default 20, max 120; transactions max 50)

flowscan_prices

/ (perp positioning), /revenue (HYPE price)

api.hyperliquid.xyz/info (allMids, metaAndAssetCtxs)

Mark, mid, oracle, 24h change, hourly funding and APR, premium, open interest as openInterestTwoSided/openInterestUsdTwoSided (long + short: Hyperliquid's openInterest is two-sided, the same basis as Flowscan's perp snapshot openInterest, so directly comparable) and openInterestUsdOneSided (half), explained in oiNote; 24h notional volume, max leverage. With coins: those coins (HIP-3 as xyz:TSLA; spot pairs/tokens give the mid only). Without: the top markets of one DEX, with totals (including openInterestUsdTwoSided).

coins (e.g. ["HYPE","BTC","xyz:TSLA"]), dex (prefix or display name; default main), sortBy (volume default, openInterest = two-sided USD, change, funding), includeDelisted, fields/limit/offset (default 20)

flowscan_candles

/address/{address} (position price chart)

api.hyperliquid.xyz/info (candleSnapshot)

OHLCV rows {t, tIso, o, h, l, c, v, n}, oldest first, with an open/close/high/low/change/volume summary. Coin: perp (BTC), HIP-3 (xyz:TSLA), spot pair (@107) or spot token (NVDAX).

coin, interval (1m, 3m, 5m, 15m, 30m, 1h default, 2h, 4h, 8h, 12h, 1d, 3d, 1w, 1M), bars (default 100, max 500, counted back from endTime), startTime, endTime (Unix ms; default now)

flowscan_order_book

/hip-4 (outcome order books)

wss://api.hyperliquid.xyz/ws (l2Book)

One L2 snapshot: top bids/asks with size, order count, cumulative size and USD, best bid/ask, mid, spread (bps). Coin: BTC, xyz:TSLA, @107, NVDAX or an outcome side like #14730. Node 22+.

coin, depth (default 10, max 20), nSigFigs (2 to 5, aggregates levels), mantissa (1, 2 or 5; only with nSigFigs: 5)

flowscan_recent_trades

/hip-4 (outcome trades)

wss://api.hyperliquid.xyz/ws (trades)

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+.

coin, limit (default and max 30), fields

flowscan_spot_tokens

/address/{address} (spot balance names and values)

api.hyperliquid.xyz/info (spotMetaAndAssetCtxs)

Spot directory per pair: pair id (@702), base/quote token, token index, decimals, mark/mid, 24h change and volume, circulating/total supply, market cap. Maps @702 to NVDAX.

search (name, full name, pair id or token index), sortBy (volume default, marketCap, name), fields/limit/offset (default 50)

flowscan_perp_dexs

/weekend-trading

api.hyperliquid.xyz/info (allPerpMetas, spotMeta)

Every perp DEX (main + HIP-3): index, on-chain prefix, Flowscan display name, collateral token, active/delisted market counts and market names.

dex (prefix, display name, or main), includeDelisted, namesLimit (default 40; all with dex)

flowscan_validator_summaries

/validators (APR, uptime, recent blocks columns)

api.hyperliquid.xyz/info (validatorSummaries)

Per validator: stake (HYPE), commission, jailed/active, recent blocks proposed, uptime % and predicted APR % for the window, plus average APR.

window (day, week default, month), sortBy (stake default, apr, uptime, commission, recentBlocks, name), order (asc, desc), search, excludeJailed, fields/limit/offset (default 50)

flowscan_borrow_lend_reserves

/address/{address} (Borrow/Lend tab APYs)

api.hyperliquid.xyz/info (allBorrowLendReserveStates, spotMeta)

Per token: supply APY, borrow APY, utilization, total supplied/borrowed, available, oracle price, LTV.

token (e.g. USDC, HYPE)

flowscan_address_portfolio

/address/{address} (portfolio chart)

api-ui.hyperliquid.xyz/info (portfolio)

Account value and PnL history for a window, downsampled with ISO times, latest/min/max and window volume; windows summarises every window (latest account value, PnL, volume).

address, window (day, week, month, allTime default, perpDay, perpWeek, perpMonth, perpAllTime), series (accountValue, pnl, both default), maxPoints (default 200)

flowscan_address_evm_balance

/address/{address} (EVM balance)

rpc.hyperliquid.xyz/evm (eth_getBalance)

HyperEVM HYPE balance: exact wei, HYPE decimal string and a float. HyperCore balances are in flowscan_address_summary.

address

flowscan_address_unit_operations

/address/{address} (Unit table)

api.hyperunit.xyz/operations/{address} (USD values priced with metaAndAssetCtxs/spotMetaAndAssetCtxs)

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.

address, direction (deposit, withdrawal), fields/limit/offset (default 50)

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

xyz

FLX

flx

Hyena

hyna

KM

mkts (was km until 2026-06)

VNTL

vntl

Dreamcash

cash

Paragon

para

Entropy

io

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

FLOWSCAN_HYPERLIQUID_DIRECT

unset (strict mode)

1 or true turns on Hyperliquid-direct mode: 14 more tools and the four allowlisted upstream hosts.

FLOWSCAN_BASE_URL

https://www.flowscan.xyz

Kept for tests only. The client refuses any URL that is not https://www.flowscan.xyz, so it cannot point the server at another host.

FLOWSCAN_TIMEOUT_MS

45000 (Flowscan), 30000 (upstream)

Per-request timeout in milliseconds. When set, it applies to both.

FLOWSCAN_MAX_CONCURRENCY

4

Maximum simultaneous requests to Flowscan. Extra calls wait.

FLOWSCAN_CACHE_TTL_MS

20000

In-memory cache lifetime for ordinary responses. Identical requests within this window reuse the cached result.

FLOWSCAN_LONG_CACHE_TTL_MS

300000

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

FLOWSCAN_MAX_RESULT_CHARS

40000

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: N means the last N complete UTC days, ending yesterday, in the revenue series tools (flowscan_revenue_hypercore_fees, _deployer_fees, _priority_gas) and flowscan_builder_revenue. The flowscan_revenue_summary windows, the flowscan_builders_daily_revenue default range and the flowscan_builder_dashboard windows also end yesterday. Today's partial row is only added to the revenue series with includeToday: true (or an explicit range that reaches today), and is flagged partial: true.

  • The HIP-3 series (flowscan_hip3_daily, flowscan_hip3_dex) end at Flowscan's latest date, which can be today; lastDayPartial and the row's partial flag 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 return snapshotIso and snapshotAgeSeconds.

  • 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_summary reports the partial current day separately.

  • HIP-3 daily series: lastDayPartial is 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.crawledAt says when.

  • Builder Intelligence: roughly daily.

  • HIP-3, HIP-4 and builder payloads carry their own generated_at / generatedAt where 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.

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 tsx

npm 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 point

  • src/server.ts: creates the MCP server and registers tool groups

  • src/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 sends

  • src/http.ts: shared fetch, retry, cache and semaphore helpers

  • src/dex.ts: HIP-3 DEX display name to on-chain prefix table

  • src/shape.ts: fields/limit/offset, envelope, truncation, errors

  • src/coverage.ts: page to tool map, used by flowscan_coverage

  • src/tools/*.ts: one file per Flowscan page area, plus shared resolvers (builderDirectory.ts, validators.ts); the direct-mode tools are in explorer.ts, markets.ts and accountDirect.ts, registered by direct.ts

  • test/: offline unit tests (npm test)

  • scripts/smoke.ts: live smoke test that calls every tool

  • scripts/qa/: live agent-style scenario harness (see scripts/qa/README.md)

  • scripts/eval/: model-in-the-loop eval with a real agent and a judge (see scripts/eval/README.md)

License

MIT. See LICENSE.

This project is not affiliated with Flowscan or Hyperliquid.

Available Tools

44 tools
flowscan_address_extrasAddress extras: approved builders, borrow/lend, rate limit, TWAP fillsB
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesWhich widget to return.
limitNoMax list items (default per tool).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
offsetNoList items to skip.
addressYesAccount address (0x + 40 hex).

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
coinNoFilter by coin symbol substring.
limitNoMax list items (default per tool).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
offsetNoList items to skip.
addressYesAccount address (0x + 40 hex).
endTimeNoUnix ms (optional, with startTime).
maxPagesNoPages to follow past the 2000-row cap (default 5).
startTimeNoUnix ms. If set, uses the time-range query.
aggregateByTimeNoMerge partial fills (default true).

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
coinNoFilter by coin (funding) or token (ledger) substring; applied before totals.
kindNoDefault 'ledger'.
limitNoMax list items (default per tool).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
offsetNoList items to skip.
addressYesAccount address (0x + 40 hex).
endTimeNoUnix ms.
maxPagesNoPages to follow past the 2000-row cap (default 5).
startTimeNoUnix ms (default now-30d for ledger, now-7d for funding).

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
coinNoFilter by coin symbol substring (e.g. 'BTC', 'xyz:').
kindNoDefault 'open'.
limitNoMax list items (default per tool).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
offsetNoList items to skip.
addressYesAccount address (0x + 40 hex).

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNoOnly long or only short positions.
limitNoMax list items (default per tool).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
marketNoFilter by market symbol substring (e.g. 'BTC', 'xyz:').
offsetNoList items to skip.
addressYesAccount address (0x + 40 hex).

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 & historyB
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
addressYesAccount address (0x + 40 hex).
historyLimitNoMax history rows (default 50).

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dexNoHIP-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.
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
addressYesAccount address (0x + 40 hex).
includeNoWhich sections to fetch (default all four).
balancesLimitNoMax spot balances returned (default 50).
positionsLimitNoMax open positions returned in perpState (default 50, largest first).

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
addressYesAccount address (0x + 40 hex).

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoKeep only the most recent N days of the daily series (default 90).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
windowNoDefault 30d.
builderYes0x address (preferred), 'id:<id>' or a name (ambiguous -> candidates).
sectionNoDefault all.
assetsLimitNoMax assets in volumeByAsset (default 40, by volume).

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters (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.

Purpose5/5

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.

Usage Guidelines4/5

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 builderA
Read-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}.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax list items (default per tool).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
offsetNoList items to skip.
endDateNoYYYY-MM-DD UTC, inclusive.
sectionsNoReport sections to return (default metadata, key_metrics, user_status_metrics, revenue_metrics).
builderIdYesBuilder id from flowscan_builder_intelligence_list (e.g. 'phantom', 'pvp').
startDateNoYYYY-MM-DD UTC, inclusive.

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 & categoriesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax list items (default per tool).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
offsetNoList items to skip.
searchNoBuilder id/name substring.
sortByNoDefault total_revenue desc.
categoryNoFilter by category id/name substring.
includeCategoriesNoAlso return the categories list (default true).

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 summaryA
Read-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}.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
endDateNoYYYY-MM-DD UTC, inclusive.
categoryNoCategory id from flowscan_builder_intelligence_list, or 'overall' (default).
startDateNoYYYY-MM-DD UTC, inclusive.
includeExcludedBuildersNoKeep metadata.builders_excluded (can be >1000 entries; default false).

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description 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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax matches returned (default 20).
queryYesName, id or address (substring ok), e.g. 'fomo'.

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by enumerating 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoDays ending yesterday UTC (default 30).
limitNoMax daily rows returned (default 60, newest first).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
offsetNoList items to skip.
builderYes0x address (preferred), 'id:<id>' or a name.
endDateNoYYYY-MM-DD (inclusive, default yesterday).
startDateNoYYYY-MM-DD (inclusive).

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoTop N builders by range revenue (default 20).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
builderNoId or 0x-address substring ('phantom', '0x2a2b'); matchedKeys are listed.
endDateNoYYYY-MM-DD UTC, inclusive (default and maximum: yesterday).
startDateNoYYYY-MM-DD UTC, inclusive (default 30 days before endDate).

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, 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.

Purpose5/5

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.

Usage Guidelines5/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
fullNoReturn every metric and window per builder (default false).
limitNoMax list items (default per tool).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
metricNoSort metric (default revenue).
offsetNoList items to skip.
searchNoFilter by builder id/name substring.
windowNoDefault 7d (all-time-only metrics ignore it).
categoryNoCategory substring (wallet, copytrading, ...).
minUsersNoMin all-time users (default 0); useful for avg_revenue_per_user_all_time.

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, 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.

Purpose5/5

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.

Usage Guidelines5/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax list items (default per tool).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
offsetNoList items to skip.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, 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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoMost recent N days (default 30).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
metricNoDefault both.
builderNoBuilder id or address substring; omit for the aggregate series only.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoKeyword to filter pages/tools by.

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, 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.

Purpose5/5

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.

Usage Guidelines5/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoHistory length for single-symbol lookups (default 30).
limitNoMax list items (default per tool).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
offsetNoList items to skip.
sortByNoDefault oi desc.
symbolNoCanonical symbol ('GOLD', 'TSLA').
underlyingTypeNoExact type filter: EQUITY, HK_EQUITY, KR_EQUITY, CN_EQUITY, COMMODITY, INDEX, FX, PREMARKET.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dexNoRank by volume on this DEX only.
limitNoMax list items (default per tool).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
offsetNoList items to skip.
searchNoFilter builders by name/address substring.
windowNoRanking window (default total = all-time).
includePerDexNoKeep each builder's per_dex breakdown (default false).

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dexNoOnly this DEX (display name like 'XYZ'/'KM' or on-chain prefix like 'mkts').
rawNoPositional {dates, series} instead of rows.
daysNoDefault 30.
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
metricNoDefault volume.

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dexYesDEX display name ('KM') or prefix ('mkts').
daysNoDaily totals lookback (default 30).
limitNoMax list items (default per tool).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
offsetNoList items to skip.
searchNoFilter markets by symbol substring.
includeMarketDailyNoInclude each market's own daily series (large; default false).

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dexNoHIP-3 DEX (display name or prefix).
daysNoComparison history length (default 30).
limitNoMax list items (default per tool).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
offsetNoList items to skip.
searchNoSymbol substring.
symbolNoCanonical underlying symbol for a cross-DEX comparison.
assetClassNoAsset class filter.

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 labelA
Read-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}}.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetsYesAsset ids, e.g. ['#14730','#14731'] or numeric strings.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, 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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
fullNoFull rows instead of slim rows.
limitNoMax list items (default per tool).
orderNoDefault desc.
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
offsetNoList items to skip.
searchNoSubstring over name, description, category, underlying, type, deployer, question (e.g. 'Premier League').
sortByNoDefault volume24h.
sectionNoDefault active.
categoryNoCategory substring (e.g. 'NFL').
settledLimitNoSettled outcomes to fetch (default 100).
includeContextsNoWith full: raw spot contexts.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLookback days (default 7).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
settledNoSet true for settled outcomes (site passes mode=settled).
intervalNoCandle interval (default '1h', as the site uses).
noAssetIdNoDefault '#<outcomeId>1' (e.g. '#14731'); a missing '#' is added.
outcomeIdYesOutcome id from flowscan_hip4_markets.
yesAssetIdNoDefault '#<outcomeId>0' (e.g. '#14730'); a missing '#' is added.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoFilter nodes by role.
limitNoMax list items (default per tool).
stateNoFilter nodes by crawl state.
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
nodeIdNoReturn a single node by id (IP) plus its edges.
offsetNoList items to skip.
countryNoExact ISO code ('US') or country name ('Japan').
sectionNoDefault summary. nodes (default 50) / edges / all (nodes 30, edges 100) are paged.
operatorNoFilter nodes/sentries by operator name substring.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax list items (default per tool).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
marketNoFilter by market symbol substring (e.g. 'BTC', 'xyz:').
offsetNoList items to skip.
sortByNoSort key (default openInterest desc).

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dirNoSort direction (default desc).
pageNo1-based page (see totalPages).
sideNoOnly long or only short positions.
sortNoSort by notional (default) or size.
limitNoPositions per page (default 50, max 200).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
markPxNoMark price used by the server for return filters.
marketYesMarket, e.g. 'BTC', 'xyz:TSLA'.
maxLiqNoMax liquidation price.
minLiqNoMin liquidation price.
maxSizeNoMax absolute size (coins).
minSizeNoMin absolute size (coins).
maxEntryNoMax entry price.
minEntryNoMin entry price.
maxReturnNoMax unrealized return (requires markPx).
minReturnNoMin unrealized return (requires markPx).
maxNotionalNoMax notional (USD).
minNotionalNoMin notional (USD).

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, 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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dexNoOne DEX: on-chain name ('xyz') or display name ('KM' = km + mkts). Rows then have dexTotalFee and allDexTotalFee.
daysNoLast N complete UTC days (default 90).
limitNoMax list items (default per tool).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
offsetNoList items to skip.
endDateNoLast UTC day (inclusive).
endTimeNoRange end, Unix ms.
startDateNoFirst UTC day (inclusive).
startTimeNoRange start, Unix ms.
includeTodayNoAppend today's partial row.

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLast N complete UTC days (default 90).
limitNoMax list items (default per tool).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
offsetNoList items to skip.
endDateNoLast UTC day (inclusive).
endTimeNoRange end, Unix ms.
startDateNoFirst UTC day (inclusive).
startTimeNoRange start, Unix ms.
includeTodayNoAppend today's partial row.

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLast N complete UTC days (default 90).
limitNoMax list items (default per tool).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
offsetNoList items to skip.
endDateNoLast UTC day (inclusive).
endTimeNoRange end, Unix ms.
startDateNoFirst UTC day (inclusive).
startTimeNoRange start, Unix ms.
includeTodayNoAppend today's partial row.
includeTopUsersNoInclude per-day topUsers lists (default false to keep output small).

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNotimeseries: last N days (default 30). liquidity: history days (default 1 with token).
limitNoMax list items (default per tool).
tokenNoToken/underlying substring ('NVDA').
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
offsetNoList items to skip.
sectionNoDefault current.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of events (default 50, max 500).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
validatorYesValidator address or name.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax list items (default per tool).
orderNoSort direction (default desc, or asc for name).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
offsetNoList items to skip.
searchNoFilter validators by name or address substring.
sortByNoSort key (default total_delegated).
excludeJailedNoDrop jailed validators (default false).
includeDescriptionNoInclude each validator's free-text description (default false).

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax list items (default per tool).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
offsetNoList items to skip.
searchNoFilter stakers by address substring.
validatorYesValidator address or name.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
coinYesMarket symbol, e.g. 'xyz:TSLA' or just 'TSLA'.
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
weekNofridayCloseTs (ms) or a YYYY-MM-DD date in that weekend. Default: latest.
limitNoMax list items (default per tool).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
marketNoFilter markets by symbol substring.
offsetNoList items to skip.
sortByNoSort markets (default currentLongNotional desc).
includeTopAddressChangesNoInclude per-market topAddressChanges lists (default false).

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
weekNofridayCloseTs (ms) or a YYYY-MM-DD date in that weekend. Default: latest.
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
marketNoFilter by market symbol substring, e.g. 'TSLA' or 'xyz:'.

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 & scheduleA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax list items (default per tool).
fieldsNoPaths to keep, relative to `data` (list tools: each row); misses go to _fieldsNotFound.
offsetNoList items to skip.
includeScheduleNoAlso return the upcoming session schedule (default false).

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 44 tool updatesv0.1.0
    • First observedflowscan_address_extras
    • First observedflowscan_address_fills
    • First observedflowscan_address_ledger
    • First observedflowscan_address_orders
    • First observedflowscan_address_perp_positions
    • First observedflowscan_address_staking
    • First observedflowscan_address_summary
    • First observedflowscan_address_vaults_subaccounts
    • First observedflowscan_builder_dashboard
    • First observedflowscan_builder_intelligence_detail
    • First observedflowscan_builder_intelligence_list
    • First observedflowscan_builder_intelligence_summary
    • First observedflowscan_builder_lookup
    • First observedflowscan_builder_revenue
    • First observedflowscan_builders_daily_revenue
    • First observedflowscan_builders_leaderboard
    • First observedflowscan_builders_summary
    • First observedflowscan_builders_user_series
    • First observedflowscan_coverage
    • First observedflowscan_hip3_binance_comparison
    • First observedflowscan_hip3_builders
    • First observedflowscan_hip3_daily
    • First observedflowscan_hip3_dex
    • First observedflowscan_hip3_markets
    • First observedflowscan_hip3_overview
    • First observedflowscan_hip4_labels
    • First observedflowscan_hip4_markets
    • First observedflowscan_hip4_outcome
    • First observedflowscan_peers
    • First observedflowscan_perp_markets
    • First observedflowscan_perp_positions
    • First observedflowscan_revenue_deployer_fees
    • First observedflowscan_revenue_hypercore_fees
    • First observedflowscan_revenue_priority_gas
    • First observedflowscan_revenue_summary
    • First observedflowscan_spot_stocks
    • First observedflowscan_stablecoin_margin
    • First observedflowscan_staking_events
    • First observedflowscan_staking_overview
    • First observedflowscan_validator_stakers
    • First observedflowscan_weekend_coin_changes
    • First observedflowscan_weekend_positions
    • First observedflowscan_weekend_prices
    • First observedflowscan_weekend_weeks

TDQS

A3.6/5.0

Scored across 44 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count2/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to interact with Hyperliquid perpetual futures exchange for market analysis, account management, and risk-managed trading.
    5
    1
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    A read-only Model Context Protocol server for Hyperliquid that exposes over 30 tools to query public market data and user state via the Hyperliquid Info API, without requiring a private key.
    41
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Read-only Hyperliquid and cross-exchange market research for AI agents, providing structured tools for live market data without requiring authentication.
    9
    40 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides live cryptocurrency prices, price history, and symbol listing tools for AI agents via the Hyperliquid API.
    83 PyPI
    1
    MIT