Nansen
Server Details
Blockchain analytics API for AI agents. Smart Money signals, wallet profiling, token analytics.
- Status
- Healthy
- Uptime
- 99.9% over 74 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 53 tools
The set has strong domain prefixes (address_*, token_*, prediction_market_*, smart_traders_and_funds_*), and descriptions frequently include explicit 'use this instead of X' guidance that rescues many near-duplicates. However, real overlap remains: address_portfolio(mode='hyperliquid') vs address_perp_positions, token_flows vs token_recent_flows_summary, smart_traders_and_funds_token_balances vs smart_traders_and_funds_historical_token_balances, and four different *_pnl_leaderboard variants all require careful reading to pick correctly. An agent can usually choose right, but only after parsing long comparative notes.
Almost everything is snake_case with a stable domain prefix, and the verb_noun or noun_role pattern is repeated within each family (token_current_top_holders, token_who_bought_sold, address_counterparties, address_counterparties_batch). Minor deviations exist — nansen_score_top_tokens uses a brand prefix, and some names are pure noun phrases (token_ohlcv, transaction_lookup, hyperliquid_leaderboard) while others start with verbs — but the overall scheme is readable and predictable.
53 tools is well above the practical ceiling for reliable tool selection, and several are near-variants (batch/non-batch counterparties, four leaderboards, three feedback tools) rather than independent capabilities. For a data-analytics API this breadth is defensible, but the surface feels like a raw endpoint dump rather than a curated set.
Coverage is genuinely broad: wallet portfolios, labels, funders, transactions, trades, PnL, aggregate stats, token holders/flows/screener/OHLCV/technical indicators, Hyperliquid perps, and a full Polymarket sub-surface, plus search and feedback tooling. Gaps are minor and largely acknowledged (no NFTs, Bitcoin unsupported on flow tools, some native-token restrictions on holders/transfers), so agents rarely hit a hard dead end.
Available Tools
53 toolsaddress_counterpartiesAnalyzing wallet connectionsARead-onlyInspect
Get 25 (per page) addresses or entities with the most common interactions with input addresses Default sort is net value transferred between them. Also returns the top 3 tokens transferred by count for each counterparty
Note: To get related wallets:
Focus on direct value transfers to get most likely addresses.
Include CEX deposit addresses (not withdrawal addresses!) as well.
Also go one level deeper:
Find addresses that interacted with the most likely addresses.
Find addresses that deposited to the same CEX deposit (NOT withdrawal!) addresses.
Address structure / string is not important, but the relationship is!
Sorting Options (all fields support "ASC"/"DESC"): Available for sorting: total_volume_usd, volume_in_usd, volume_out_usd, interaction_count
Examples:
Query by single address
{ "address": "0x123...", "sourceInput": "Combined", "groupBy": "wallet", "chain": "ethereum", "timeRange": {"from": "30D_AGO", "to": "NOW"}, "order_by": "total_volume_usd", "order_by_direction": "desc" }
Query by entity
{ "entity_id": "Binance", "sourceInput": "Combined", "groupBy": "entity", "chain": "all", "timeRange": {"from": "7D_AGO", "to": "NOW"} }
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Complete request for address counterparties (flattened). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint=true, destructiveHint=false, openWorldHint=true), and the description adds non-obvious behavior: 25 results per page, default sort by net value transferred, and that top 3 tokens by count are returned per counterparty. It also notes that long ranges are clamped to one year with the effective range reported, which is useful operational context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, default sort, and return shape are correctly front-loaded, and the two examples are useful. But the multi-level 'Note: To get related wallets' bullet list is lengthy investigative advice rather than tool definition, and the repeated 'ASC'/'DESC' notation plus the enum mismatch add noise for a single-object request body.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't detail response structure yet still flags the top-3-tokens payload; the schema handles address/entity mutual exclusion and time-range tokens, and the description adds the 30-day default and 365-day clamping. What remains missing is any pointing to the batch or related-addresses alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the schema already documents address/entity exclusivity, enums, and time-range tokens; the description's list of sortable fields merely echoes the enum. Worse, the examples use 'order_by' while the schema property is 'orderBy', a naming mismatch that could lead an agent to send an unknown key, which offsets the illustrative value of the examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource: 'Get 25 (per page) addresses or entities with the most common interactions with input addresses', and immediately states the default sort and the extra data returned. It doesn't name any sibling (e.g. address_related_addresses or address_counterparties_batch), so an agent must infer the boundary from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Note: To get related wallets' block gives analytical usage guidance (focus on direct value transfers, include CEX deposit addresses, go one level deeper), which tells the agent what the output is good for. However, it never states when to use this tool instead of its clearly overlapping siblings like address_related_addresses or address_counterparties_batch, so tool selection 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.
address_counterparties_batchComparing wallet connectionsARead-onlyInspect
Get the top counterparties of up to 10 wallet addresses in one call.
Every wallet gets its own counterparty list. The lists are NOT added together: the answer has one table for each wallet.
Use this tool to compare wallets — counterparties that two wallets share, a group of wallets that sends to the same CEX deposit address, or one fund with many wallets. For one wallet, or for an entity name, use address_counterparties.
Limits:
Maximum 10 distinct wallet addresses for each call. Repeated addresses are removed.
Maximum 90 days for the date range. A wider range is rejected — make more than one call.
One chain family for each call: every address must be EVM, or every address must be Solana, and so on. Do not mix families.
Name a chain (for example ethereum) to read that chain only. Leave
chain out to read every chain of the addresses' family at one time —
then a counterparty met on more than one chain gets one row for each
chain, so do not add those rows together.
Sorting Options (all fields support "ASC"/"DESC"): Available for sorting: total_volume_usd, volume_in_usd, volume_out_usd, interaction_count. The sort is applied inside each wallet's block.
Example (every key below is the name the request accepts, and the addresses are real — copy this shape as it stands): { "walletAddresses": [ "0x28c6c06298d514db089934071355e5743bf21d60", "0xd8da6bf26964af9d7eed9e03e53415d37aa96045" ], "chain": "ethereum", "timeRange": {"from": "30D_AGO", "to": "NOW"}, "sourceInput": "Combined", "orderBy": "total_volume_usd", "orderByDirection": "DESC", "perPage": 100 }
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Complete request for batch address counterparties (flattened). Wallet addresses only. Use AddressCounterpartiesRequest for one wallet or for an entity name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only annotations, the description discloses important behavioral constraints: per-wallet lists are not aggregated, repeated addresses are removed, at most 10 addresses are allowed, the date range cannot exceed 90 days, and chain families cannot be mixed. It also warns that multi-chain results may repeat counterparties across rows and should not be summed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose, per-wallet behavior, use cases, limits, and an example. It is somewhat long and repeats some schema details, but the example and constraints generally earn their place for a complex batch tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and rich annotations, the description covers the key invocation risks: wallet count, date window, chain-family mixing, pagination implications, and the correct sibling for non-batch use. Nothing essential for correct tool selection or invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the schema documents parameters thoroughly. The description still adds operational meaning through a concrete request example, sort options, chain behavior, and limits that help an agent construct valid calls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: getting top counterparties for up to 10 wallet addresses in one call. It clearly distinguishes this batch tool from the single-wallet/entity tool by naming address_counterparties as the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use this tool for comparing wallets, shared counterparties, common CEX deposits, or one fund with many wallets. It also states when not to use it: for one wallet or an entity name, use address_counterparties.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
address_dex_tradesChecking wallet DEX tradesARead-onlyInspect
Get a wallet's individual trades on a single chain — DEX swaps (spot) or
Hyperliquid perpetual trades, newest first. Wallet-centric companion to
token_dex_trades (which is token-centric).
Chain: one per call ('all'/'evm' unsupported). EVM wallets MUST pass chain
explicitly (e.g. ethereum, base, arbitrum); non-EVM (e.g. Solana) is
auto-detected. Use 'hyperliquid' for Hyperliquid perpetual trades
(requires an EVM address). Call once per chain to span multiple networks.
Spot columns: Time, Bought / Bought Amount, Sold / Sold Amount, Value USD, Tx Hash.
Perp columns: Time, Token, Side, Action, Size, Price, Value USD, Fee USD,
Closed PnL, Tx Hash.
Sort (order_by, asc/desc): timestamp, value. Filter by valueUsd,
tokenAddressBought, or tokenAddressSold. On spot chains the token
fields take contract addresses. On Hyperliquid they take perp symbols and
select Long or Short trades respectively; only one token field is allowed.
Example: { "address": "0x1f2f10d1c40777ae1da742455c65828ff36df387", "chain": "ethereum", "dateRange": {"from": "7D_AGO", "to": "NOW"} }
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Complete request for an address' DEX trades (flattened). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, so the safety profile is covered. The description adds genuinely useful behavior: default ordering is newest-first, sortable by timestamp or value, and the exact spot vs perp column sets returned. It omits pagination behavior (the `page` param exists but nothing says page size or how to walk pages).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well front-loaded — purpose first, then chain rules, then column sets, then an example. The structure (headers, explicit lists) makes it scannable. Slightly padded by repeating the chain rules verbatim from the schema and by listing return columns that the output schema already covers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the hard parts of a nested-parameter, multi-chain tool: chain requirement, perp vs spot differences, filter semantics, and a concrete request example. An output schema exists so return values needn't be spelled out. The remaining gap is pagination — `page` defaults to 1 with no guidance on result-set size or how to retrieve further pages.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond it: token filter fields switch semantics by chain (contract address on spot vs perp symbol selecting Long/Short on Hyperliquid) and the one-token-field restriction. Minor deduction because the chain rules are largely a restatement of the schema's own `chain` description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a wallet's individual trades'), scopes it to a single chain, and distinguishes both data modes (DEX spot swaps vs Hyperliquid perps). It explicitly positions itself against the sibling `token_dex_trades` as the wallet-centric counterpart, so an agent can pick between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete routing rules: EVM wallets MUST pass `chain`, non-EVM is auto-detected, 'all'/'evm' are unsupported, use 'hyperliquid' for perps with an EVM address, and call once per chain to span networks. It also states that only one token filter field is allowed on Hyperliquid — a real invocation constraint, not just context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
address_first_funderFinding the first funderARead-onlyInspect
Get the first address that ever funded an EVM wallet, with the funding transaction hash, chain and timestamp. Use this to attribute an unlabelled wallet to a known entity — the first funder is often a CEX withdrawal or a wallet the same owner already controls. The funder is resolved across all chains, so no chain argument is needed.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for the first address that funded a wallet (flattened). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish read-only, non-destructive, open-world behavior, and the description adds useful operational context: the funder is resolved across all chains, so no chain argument is needed. It does not discuss auth, rate limits, or edge cases, but it meaningfully supplements the structured safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences: the first states exactly what is returned, and the second explains the key use case and cross-chain behavior. It is front-loaded and has no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only lookup with annotations and an output schema, the description supplies the essential purpose, usage rationale, and cross-chain resolution behavior. Nothing critical is missing for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single nested address parameter, so the schema already documents the input. The description adds useful meaning by clarifying that the address is an EVM wallet and that chain resolution is automatic, explaining why no chain parameter exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb and resource: get the first address that ever funded an EVM wallet, plus the funding transaction hash, chain, and timestamp. The 'first funder' scope is clearly distinct from sibling tools such as address_counterparties, address_related_addresses, and address_transactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear use case: attributing an unlabelled wallet to a known entity because the first funder is often a CEX withdrawal or another wallet controlled by the same owner. It does not explicitly name when not to use it or compare against all plausible alternatives, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
address_historical_balancesChecking balance historyCRead-onlyInspect
Get historical native coin & token balances of address.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Complete request for address historical balances (flattened). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond purpose: no note on differing results for entity vs. address lookups, no hint about chain-wide ('all') scans being heavier, and no mention of what suspiciousFilter changes in the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with no filler. It is front-loaded and wastes nothing, though its brevity is closer to under-specification than to disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the schema fully documents the nested request. Still, for a tool that accepts either a wallet or an entity across a chain selector, the description leaves the agent to infer the entity path entirely from the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the mutually exclusive address/entity_id constraint and the lookbackDays enum, so the schema carries the semantics. The description contributes no extra parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: retrieving historical native coin and token balances for an address. That is clearly distinct from address_portfolio (current holdings) and address_transactions, though the description never names those siblings to reinforce the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this over address_portfolio or smart_traders_and_funds_historical_token_balances. It also omits that an entity name can be supplied instead of a raw address, which is the main routing decision an agent faces here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
address_labelsLooking up address labelsARead-onlyInspect
Get the standard labels for one wallet address.
This tool returns identity, behavioural, and protocol labels. It does not return premium labels.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for the standard labels of one wallet address. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only and non-destructive. The description adds meaningful behavioral context by disclosing the exact label categories returned and the notable limitation that premium labels are not returned, which goes beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences with no filler. It front-loads the core action in the first sentence and adds the key exclusion in the second, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich nested input schema, presence of an output schema, and safety annotations, the description is nearly complete. It clearly defines the tool's scope and key exclusion, though it could briefly mention an alternative for premium labels or define 'standard labels' more precisely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the input schema. The description adds little parameter-level meaning beyond confirming the tool targets a single wallet address, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Get the standard labels for one wallet address.' It further specifies the label categories returned (identity, behavioural, protocol) and explicitly excludes premium labels, which distinguishes it from other address-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys when to use the tool—when standard labels for a wallet are needed—and clarifies that premium labels are not included. However, it does not name an alternative tool or provide explicit when-not-to-use guidance, leaving some routing to inference from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
address_perp_positionsGetting wallet Hyperliquid positions and liquidation riskARead-onlyInspect
Get a wallet's Hyperliquid positions and liquidation risk without a portfolio lookup.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Complete request for a wallet's open Hyperliquid perpetual positions. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds that liquidation risk is returned and that no separate portfolio call is needed, but says nothing about whether only open positions are included, how liquidation risk is derived, or any limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though arguably terse for a tool with nested filter and sort structures.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, rich annotations and full schema coverage, the description only needs to establish purpose and routing, which it does. The one gap is that it never hints the tool supports filtering and sorting, which an agent might otherwise miss.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the nested request object documents address, filters (tokenSymbol, positionType, value/PnL ranges) and orderBy in detail. The description contributes nothing about these parameters, so it neither compensates nor detracts — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb + resource: it returns a wallet's Hyperliquid perpetual positions plus liquidation risk. The phrase 'without a portfolio lookup' implicitly contrasts it with the heavier address_portfolio sibling, though that sibling is never named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'without a portfolio lookup' hints that this is the lightweight path when the full portfolio isn't needed, which is useful implied guidance. There is no explicit when-to-use/when-not statement and no named alternative for cases where portfolio context is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
address_portfolioLoading portfolio dataARead-onlyInspect
Get comprehensive portfolio overview for a wallet address or entity.
Hyperliquid perpetual positions include liquidation prices to support risk analysis workflows.
For wallet addresses, supports different modes:
'fast-mode-default': Wallet balances + Hyperliquid positions (skip defi, for fast mode only)
'all': Wallet balances + DeFi positions + Hyperliquid positions
'wallet_balances': Only token balances (tokens and native coins across all chains)
'defi': Only DeFi positions (lending, staking, LP tokens, etc., excluding Hyperliquid)
'hyperliquid': Only Hyperliquid data — perp positions (with liquidation prices and margin summary) plus HL spot wallet balances
For entities (e.g., "Binance", "Paradigm Fund"), only on-chain token balances are returned, aggregated across all addresses associated with the entity.
This tool provides flexible portfolio analysis in a single request, allowing users to focus on specific aspects of their holdings.
The output is pre-formatted markdown that should be presented exactly as returned, preserving all tables, sections, and formatting without reinterpretation.
Example Usage:
Get full comprehensive portfolio for a wallet:
{ "walletAddress": "0x28c6c06298d514db089934071355e5743bf21d60", "mode": "all" }
Get only DeFi positions (returns raw JSON):
```
{
"walletAddress": "0x28c6c06298d514db089934071355e5743bf21d60",
"mode": "defi"
}
```
Get only Hyperliquid positions (returns raw JSON):
```
{
"walletAddress": "0x28c6c06298d514db089934071355e5743bf21d60",
"mode": "hyperliquid"
}
```
Get token balances for an entity:
```
{
"entity_id": "Binance"
}
```| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Complete request for Address Portfolio endpoint (flattened). IMPORTANT: Exactly one of 'wallet_address' or 'entity_id' must be provided (not both, not neither). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/destructive/openWorld, so the description's added value is the output-handling contract: 'pre-formatted markdown that should be presented exactly as returned, preserving all tables... without reinterpretation', plus the note that entities aggregate balances across all associated addresses. This is genuinely useful non-schema behavior. It loses a point for internal inconsistency, claiming markdown output globally while examples for 'defi' and 'hyperliquid' say '(returns raw JSON)'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The critical behavior (markdown must be preserved verbatim) is buried mid-description after a long mode list, and the mode bullet list duplicates the schema's own mode enum almost verbatim. Filler like 'This tool provides flexible portfolio analysis in a single request, allowing users to focus on specific aspects of their holdings' adds no decision-relevant information, and the four example blocks are repetitive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 100% schema coverage, an output schema, and nested request objects, the description covers the pieces an agent needs: mode semantics, the XOR constraint on walletAddress/entity_id, and output presentation rules. The unresolved markdown-vs-raw-JSON ambiguity across modes and the unmentioned 'chain' parameter are the remaining gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the nested request's mode and identity fields are already documented in the schema in nearly identical wording, so the description mostly restates structured data. The worked examples do add concrete invocation shapes for each mode. The 'chain' parameter (default 'all') is never mentioned in the description, leaving a small gap the schema does not fill either.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get comprehensive portfolio overview') and scopes it to a wallet address or entity, with a mode breakdown that makes the returned surface concrete. It does not explicitly distinguish itself from overlapping siblings such as address_perp_positions, address_historical_balances, or address_dex_trades, so an agent cannot be certain it is the right tool for a narrower question.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Each mode is explained in terms of what it includes and excludes (e.g., fast-mode-default 'skip defi, for fast mode only'; defi 'excluding Hyperliquid'), which gives the agent clear selection context. It also states the entity-vs-wallet constraint. However, it never says when to prefer a sibling tool over one of these modes, so no real exclusion guidance exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
address_transactionsFetching transaction historyARead-onlyInspect
Get list of 20 MOST RECENT transactions made by an address or an entity (per page).
Only the latest transactions according to the date range are returned.
Provide exactly one of address or entity_id. An entity lookup returns
transactions across all wallets of that entity and covers at most 7 days.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Complete request for address transactions (flattened). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/openWorld/non-destructive, so the bar is lower; the description still adds substantive behavior: page size of 20, latest-transactions-only ordering, entity lookups aggregating across wallets, and a 7-day clamp. It does not mention rate limits or pagination exhaustion, but the added context is well beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the core action and result size, then the parameter rule and the entity caveat. Slight redundancy with schema text ('covers at most 7 days') but nothing wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape needn't be explained; the description covers the essentials an agent needs — result cap, recency, mutually exclusive selectors, entity aggregation and date clamping. Minor gaps like chain selection are already handled in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description's statements about address/entity_id exclusivity and the 7-day entity window largely restate what the nested schema already documents, so it adds little new parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get list of ... transactions') plus a precise scope (20 most recent per page, address or entity). It is distinguishable from siblings like address_counterparties or transaction_lookup by the recency/list framing, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a real constraint — 'Provide exactly one of `address` or `entity_id`' — and notes the entity path spans all wallets with a 7-day cap, which is genuine usage guidance. It gives no when-to-use vs when-not guidance relative to sibling tools such as address_dex_trades or transaction_lookup, 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.
entity_name_searchSearching entity namesARead-onlyInspect
Search Nansen's entity names by a partial name and get back the exact entity names that match.
Use this when a tool needs an exact entity name and the user gave an approximate one (e.g. "binance" -> "Binance 14"). Matching is case-insensitive and matches anywhere in the name. For tokens or addresses use general_search instead.
| Name | Required | Description | Default |
|---|---|---|---|
| max_results | No | Maximum number of entity names to return (default 25) | |
| search_query | Yes | Partial entity name, at least 2 characters |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive, and the description adds matching behavior beyond that: case-insensitive matching, matching anywhere in the name, and returning exact entity names. This gives the agent useful expectations without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences carry the purpose, use case, example, and routing rule with no filler. The main behavior is front-loaded before the alternative guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has full schema coverage, annotations, and an output schema, so the description does not need to explain return formats. It covers purpose, usage timing, matching semantics, and alternatives, making it complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters with 100% coverage, so the baseline is a 3. The description adds value by explaining how search_query is interpreted (case-insensitive, partial, matches anywhere) beyond the schema's 'Partial entity name' phrasing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: search Nansen entity names by partial name and return exact matching names. It also distinguishes itself from general_search, which is for tokens or addresses, so an agent can tell sibling tools apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit when-to-use rule: when a downstream tool needs an exact entity name but the user provided an approximate one, with a concrete example. It also states the alternative for tokens/addresses, making the routing decision unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
general_searchSearching tokens, companies, and addressesARead-onlyInspect
General search tool. This is your FIRST entry point to look up for possible tokens, entities, and addresses related to a query.
Do NOT use this tool for prediction markets. For Polymarket names, topics,
event slugs, or URLs, use prediction_market_lookup instead.
Nansen MCP does not support NFTs, however check using this tool if the query relates to a token. Regular tokens and NFTs can have the same name.
This tool allows you to:
Check if a (fungible) token exists by name, symbol, or contract address
Search information about a token
Current price in USD
Trading volume
Contract address and chain information
Market cap and supply data when available
Search information about an entity
Find the address behind a Nansen label (public figure, fund, exchange wallet)
Resolve a domain (.eth, .sol) to its address
Look up premium address labels only on the Nansen research agent
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Optional chain filter to narrow down token results to specific blockchain. If not further specified, leave it as None. If a chain is specified, ALWAYS use this parameter instead of adding chain name to the query string. Valid values: "ethereum", "solana", "base", "bnb", "polygon", "arbitrum", "avalanche", "optimism", etc. | |
| query | Yes | The search term - token symbol, name, or address. In stock mode, pass only the company name or exchange ticker. Do not add words such as "stock", "ticker", or a chain name. | |
| max_results | No | Maximum number of results (default: 25, max: 25) | |
| result_type | No | Type filter - "token", "entity", "wallet", "eoa", "stock", or "any" | any |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, open-world, non-destructive behavior, and the description adds useful scope and limitation context, especially the NFT support caveat and premium-label restriction. It does not add much about rate limits, pagination, or auth, but the safety profile is already covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the primary purpose and exclusion, then uses a readable bullet list for capabilities. It is somewhat verbose, but the structure makes the long capability list scannable and useful for a broad search tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's breadth, annotations, 100% schema coverage, and presence of an output schema, the description is complete enough for correct selection and invocation. It covers primary use, exclusions, supported query categories, and important domain limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters in detail. The description adds some query-type nuance by mentioning domains and Nansen labels, but for most parameters it does not add meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: a general search entry point for tokens, entities, and addresses. It also distinguishes the tool from prediction-market search by naming `prediction_market_lookup` as the sibling for that domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit routing guidance: use this as the FIRST entry point, do not use it for prediction markets, and use `prediction_market_lookup` for Polymarket names, topics, slugs, or URLs. It also clarifies the NFT limitation while explaining when a token check may still be appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_feedbackReading a Nansen feedback receiptARead-onlyInspect
Read a Nansen feedback receipt for the same authenticated account. Costs zero credits.
Lookup uses feedback_id, consumes no report slot, and returns fresh status. Received means saved; reviewed means triaged; closed has a public disposition. No fix or delivery date is promised. Unknown, expired, and other-account IDs return the same not-found response. Never create a replacement report or use another account or an internal server key when lookup fails. Do not redirect failed lookups to unrelated feedback channels.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| receipt | No | |
| success | Yes | |
| next_action | Yes | |
| preferences | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly/non-destructive; the description adds material behavior the annotations can't: zero credit cost, no report slot consumption, and a uniform not-found response for unknown, expired, and other-account IDs (an important information-disclosure/anti-enumeration trait). It also explicitly declines to promise a fix or delivery date, which sets correct expectations for the returned status.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the cost and lookup mechanics, then the status semantics, then the guardrails – a sensible order with no filler sentences. The two closing sentences about not creating replacements / not redirecting overlap somewhat, but each adds a distinct prohibition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't document return shape, and annotations already cover the safety profile. What remains – status meaning (received/reviewed/closed), cost, slot consumption, and not-found behavior – is all supplied, so nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden for the single feedback_id parameter. It confirms the lookup is by feedback_id, but never says where the ID comes from (presumably the submit_feedback response) or anything about the accepted format constraints already expressed only as a regex in the schema, so it doesn't fully compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb (read) and resource (Nansen feedback receipt) and scopes it to the authenticated account, which clearly separates it from the write-side submit_feedback and from get_feedback_preferences. It stops short of naming a sibling tool explicitly, so the differentiation is implied by the read/write split rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Goes well beyond a generic 'use this to look up feedback': it says the lookup is keyed on feedback_id, consumes no report slot, and gives explicit negative guidance for the failure path (do not create a replacement report, do not use another account or an internal server key, do not redirect to unrelated feedback channels). An agent knows both what to call this for and what not to do when it fails.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_feedback_preferencesReading Nansen feedback preferencesARead-onlyInspect
Read the authenticated account's saved automatic feedback preference. Free; no report quota.
Before a new automatic report about useful Nansen friction, draft a concise report without secrets or unnecessary conversation details and call this tool. Enabled permits sending subject to host and local-deny controls and account rollout. If off, unconfigured or unavailable, show the report and ask first. Refusal, host denial or inability to ask means no submission. An explicit request or approval permits only that report. Never enable the preference automatically. Direct lasting changes to Superapp settings. Reads are fresh, use this account only, and do not authorize another account or server key.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| receipt | No | |
| success | Yes | |
| next_action | Yes | |
| preferences | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/destructiveHint/openWorldHint, yet the description adds real behavior: it is free with no report quota, reads are fresh, scope is the current account only, and the preference must never be enabled automatically. The trailing 'Direct lasting changes to Superapp settings' fragment is confusing on a read-only tool and reads like a truncated negation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the body is a dense block of consent policy and includes an ambiguous fragment ('Direct lasting changes to Superapp settings') that costs comprehension. Much of the policy is legitimate, but it is not organized for scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, and the description covers the consent and scoping context thoroughly. The only real gap is the undocumented required 'request' parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there is a required 'request' object with no properties. The description says nothing about what goes in it or why it is required and empty, so the parameter is undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource: 'Read the authenticated account's saved automatic feedback preference.' That is enough to separate it from siblings like get_feedback and submit_feedback, though the description never names those siblings to reinforce the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger ('Before a new automatic report about useful Nansen friction... call this tool') and spells out outcome branches (enabled permits sending subject to controls; off/unconfigured means show and ask first). It does not explicitly compare against get_feedback, which 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.
growth_chain_rankChecking blockchain rankingsBRead-onlyInspect
Get chain growth rankings by active addresses, transactions, gas fees and DEX volume.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | GrowthChainRankRequest containing parameters and pagination settings |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the dimension set being ranked, but leaves open whether all four rankings are returned together or one is selected (no metric parameter exists), what the ranking order/direction is, and how pagination works despite the schema's request doc mentioning 'pagination settings'. Useful but thin given the ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, but the terseness is part of why behavioral questions go unanswered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the single nested request parameter is fully documented. Still, the description does not resolve the central ambiguity of what 'growth ranking' means per metric or how metrics map to output, which matters for a tool with four named dimensions and only two filter parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; chain_type and time_frame both carry enums, defaults, and descriptions. The prose adds no guidance beyond the schema, and the metric names it mentions do not correspond to any parameter, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Get chain growth rankings" names a specific verb and resource, and the four metrics (active addresses, transactions, gas fees, DEX volume) scope what the ranking covers. It is clear on its own terms, though it does not distinguish itself from any adjacent tool (there is no direct sibling, so the cost is low).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus alternatives, no prerequisites, and no exclusions. The agent must infer usage entirely from the name and title.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hyperliquid_leaderboardChecking Hyperliquid leaderboardARead-onlyInspect
Get Hyperliquid perpetual futures trader leaderboard with performance metrics.
Returns: Trader performance rankings as markdown.
Columns returned:
- **Address** / **Label**: trader wallet, and its Nansen label if any
- **Total PnL** (USD): realized + unrealized over the date range
- **Realized PnL** (USD): net, from positions closed in the range. Being a net total it shows no per-trade outcome, so no win rate can be derived from it or any other column here
- **Unrealized PnL** (USD): on positions still open, at the current mark price
- **ROI** (%): Total PnL / (traded notional + open notional) — PnL per dollar traded, not return on capital
- **Volume** (USD): traded notional; both fills of a position count
- **Trades**: number of fills
- **Account Value** (USD): only available for the top 500K tradersThis is an overview of top traders and their headline stats. For a trader's
open positions, call address_portfolio with mode='hyperliquid'.
Sorting: total_pnl, realized_pnl_usd, unrealized_pnl_usd, roi, volume_usd, total_trades, account_value
Filtering (from/to): totalPnl (USD), accountValue (USD), roi (a fractional ratio, not the percent shown — pass 0.1 for "10% or better", not 10)
Example:
{ "date": {"from": "7D_AGO", "to": "NOW"}, "accountValue": {"from": 100000, "to": 1000000}, "totalPnl": {"from": 10000}, "order_by": "total_pnl", "orderByDirection": "DESC" }
Rank by traded volume instead: "order_by": "volume_usd"
Notes: - Hyperliquid perpetual futures only - Dates use UTC calendar boundaries, not rolling timestamps. Calendar end dates retain the next-day API boundary. - Null/empty means data is not available — do not read it as zero
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for Hyperliquid perp leaderboard (flattened). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read, so the description correctly spends its budget on semantics beyond annotations: UTC calendar-boundary date handling, the 'null/empty means unavailable, not zero' caveat, the account-value limitation to top 500K traders, and the warning that realized PnL is net so no win rate is derivable. These are non-obvious behavioral facts an agent could not get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the one-line purpose, then organized into Returns / Columns / Sorting / Filtering / Example / Notes sections that are easy to scan. Some redundancy exists — the date-range token semantics are restated from the schema's own parameter descriptions — which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single nested request parameter with sorting, filtering, paging and a markdown return, the description covers everything needed: column meanings, sortable fields, filter semantics, a runnable example, and the alternative tool. An output schema exists, yet the column glossary still adds value by explaining units and derivability rather than just shapes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description earns credit for clarifying that roi is a fractional ratio ('pass 0.1 for "10% or better", not 10') — a trap the schema's bare 'Filter by ROI (from/to)' does not close. The worked example also concretely demonstrates composing date, accountValue and totalPnl ranges plus ordering.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb and resource ('Get Hyperliquid perpetual futures trader leaderboard') and scopes it ('Hyperliquid perpetual futures only'), which separates it from the token, prediction-market and smart-money leaderboard siblings. The follow-up pointer to address_portfolio for open positions further pins down its role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit alternative for the adjacent use case ('For a trader's open positions, call address_portfolio with mode="hyperliquid"'), which is genuine routing guidance. It does not, however, distinguish itself from token_pnl_leaderboard, smart_traders_and_funds_pnl_leaderboard, or prediction_market_pnl_leaderboard, so the agent must still infer which leaderboard to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nansen_score_top_tokensRanking top tokens by Nansen ScoreARead-onlyInspect
Discover and filter a daily list of attractive tokens using Nansen Score Indicators weighted by coefficients (= Performance Score).
Use this tool when you don't know which tokens to buy and need recommendations based on backtested indicators. For specific token analysis (e.g., "should I buy AAVE?"), use token_quant_scores instead.
When to use this tool vs token_discovery_screener:
Use this tool when you want pre-scored buying recommendations without specifying criteria. It answers "what should I buy?" by returning tokens that already meet a quantitative buying threshold (Performance Score ≥15) based on alpha indicators like price momentum, chain fees, and protocol fees. Data is updated in batches.
Use token_discovery_screener when you want live data or to explore tokens by specific criteria like sectors (e.g., "AI memecoins"), token age (e.g., "new launches"), smart money activity, or custom volume/liquidity thresholds. It's a filtering tool with real-time metrics where you define what you're looking for.
Returns tokens pre-filtered by: performance_score >= 15 (buying threshold).
Example queries: "what tokens should I buy?", "which tokens look good?", "best tokens to buy today"
Scoring:
Performance Score (range -60 to +75): Higher = better alpha opportunity. Buy threshold: ≥15
Risk Score (range -60 to +80): Higher = safer token. >0 indicates low to medium risk.
Every time you give the Performance Score to the user, explain the scoring thresholds above. Same for the Risk Score. Every time quote the underlying indicators that contributed the most to the Performance/ Risk score and recall their definition to the user.
Returns: A list of tokens with the highest Performance Score as markdown.
Core fields: Token Address, Token Symbol, Chain, Performance Score, Risk Score.
Indicator columns are included dynamically based on data availability (columns with all zeros are excluded).| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request model for Nansen Score Top Tokens endpoint (flattened). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety with readOnlyHint=true, openWorldHint=true, and destructiveHint=false. The description adds valuable behavioral context not present in annotations: results are pre-filtered by Performance Score >=15, data is updated in batches, output columns are dynamic, and scoring thresholds must be explained to users.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and well structured with clear sections for usage, alternatives, scoring, and returns. It is somewhat long and repeats the Performance Score >=15 threshold in multiple places, which keeps it from being maximally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of annotations, an output schema, and 100% schema description coverage, the description is complete for correct invocation. It explains the ranking logic, filtering behavior, output shape, and scoring interpretation without needing to restate schema details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single marketCapGroup parameter is already well documented in the schema. The description does not add parameter-specific details such as market-cap filtering semantics, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: discover/filter a daily list of tokens ranked by Nansen Score. It also explicitly distinguishes this tool from token_quant_scores and token_discovery_screener, so an agent can identify its role without opening sibling schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance, including the exact scenario for this tool versus token_quant_scores and a detailed comparison against token_discovery_screener. Example queries further remove ambiguity about the intended invocation context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prediction_market_address_pnlChecking prediction market address PnLARead-onlyInspect
Prediction market PnL breakdown for a Polygon wallet, market by market.
When to use:
Wallet-level Polymarket track record with per-market cost and proceeds.
Key fields:
Total PnL USD= redemption + unrealized value + sell proceeds − buy cost, for that market only.Net Buy Cost USDis what the wallet paid for shares.Net Sell Proceeds USDis what it received for shares sold before resolution.Redemption Value USDis the payout collected after the market settled.Unrealized Value USDis the marked value of shares still held.Resolvedsays whether the market has settled.
Pitfalls:
Each row covers one market. Sum the rows for a wallet total, or use
prediction_market_address_summaryfor the aggregate.The API gives no ROI or share count here. Do not state them.
Blank PnL fields mean unavailable data, not zero.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for address-level prediction market PnL. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, openWorld, non-destructive), yet the description still adds real behavioral context: each row is one market and must be summed, blank PnL fields mean unavailable rather than zero, and the API exposes no ROI or share count. It stops short of permissions, rate limits, or pagination behavior, but the data-shape caveats are exactly what prevents misreporting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose followed by tight, labeled sections; every pitfall earns its place. The per-field definitions partly restate information an output schema already carries, so a little length is not strictly necessary, but the formula for Total PnL adds interpretive value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only per-market breakdown with an output schema present, the description covers the one thing the schema cannot: how rows aggregate into a wallet total and how to interpret blank values. Nothing needed to call or trust the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is effectively one meaningful parameter (nested `request.address`, plus `page`), and the schema documents both at 100% coverage with a default for `page`. The description adds only that the address is a Polygon wallet, which is already implied by the purpose statement, so it does little beyond the schema — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and verb: a per-market PnL breakdown for a Polygon wallet. The Pitfalls section explicitly distinguishes it from the sibling `prediction_market_address_summary`, which returns the aggregate, so an agent can pick the right tool without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
A dedicated "When to use" line gives the selecting condition (wallet-level Polymarket track record with per-market cost and proceeds), and the Pitfalls section names the alternative tool and the exact condition for switching to it (summing rows vs. the summary endpoint).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prediction_market_address_summarySummarizing prediction market addressARead-onlyInspect
Prediction market summary metrics for a Polygon wallet.
When to use:
First wallet-level Polymarket tool for a quick trader overview.
Use before detailed address trades/PnL when the user asks for a general wallet profile, activity summary, or whether a wallet is active on Polymarket.
Key fields:
Markets TradedandMarkets Wonare lifetime counts;Win Rateis won / traded.Total PnL USD= realized + unrealized.First SeenandWallet Age (Days)show how long the wallet has been active on Polymarket.
Pitfalls:
The API gives no trade count, volume, or ROI here. Do not state them. For per-market cost and proceeds use
prediction_market_address_pnl.Blank PnL fields mean unavailable data, not zero.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for address-level prediction market summary metrics. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, and the description still adds real value: it defines what each reported field means (Win Rate = won/traded, Total PnL = realized + unrealized), flags what the API does NOT return (trade count, volume, ROI), and warns that blank PnL means unavailable, not zero. That last point is a genuine data-quality trap an agent would otherwise mishandle.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well structured and front-loaded: one-line purpose, then When to use, Key fields, Pitfalls in priority order. Slightly verbose in the Key fields bullets, but each carries non-obvious semantics rather than restating the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, yet the description goes further by interpreting the returned fields and their failure modes, which is what an agent needs to report results responsibly. Nothing material for correct selection or interpretation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the address and page fields are already documented in structured form, and nested request wrapping is explicit. The description contributes only the implicit constraint that the address is a Polygon wallet; it says nothing about the pagination parameter. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line states a specific resource and scope: lifetime summary metrics for a Polygon (Polymarket) wallet. It explicitly frames itself as the entry-level wallet overview, which separates it from depth tools like prediction_market_address_pnl and prediction_market_address_trades.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to use' block names the triggering conditions (general wallet profile, activity summary, is-this-wallet-active) and the ordering rule (call this first, before detailed trades/PnL). The Pitfalls section names the explicit alternative — prediction_market_address_pnl — for per-market cost and proceeds, so routing is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prediction_market_address_tradesChecking prediction market address tradesARead-onlyInspect
Prediction market trade history for a Polygon wallet.
Key fields:
Share Sizeis quantity traded in the displayed outcome side.Value USDapplies to that row only, not the whole transaction.
Pitfalls:
Use this for wallet trade activity, not profitability.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for address-level prediction market trades. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, destructiveHint false) and openness, and an output schema exists, so the description rightly spends its budget on data semantics rather than restating safety. The two field notes are genuine disambiguation aids — clarifying that `Value USD` is per-row, not per-transaction, prevents a real misinterpretation. It says nothing about pagination behavior or result caps, which would have made it a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first sentence, followed by only the two field caveats and one routing pitfall that actually change how results are read. No filler, no restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with a full output schema, the description covers scope, field interpretation, and the main misuse case. The remaining gap is chain scope — it says "Polygon wallet" but not whether non-Polygon addresses return empty or error, which the agent may need in order to handle bad input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including a very detailed dateRange token spec, so the schema carries the parameter burden and baseline 3 applies. The description only contributes the implicit constraint that the address is a Polygon wallet; it adds nothing about the page parameter or the default 30-day window.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("trade history") plus a scope qualifier ("for a Polygon wallet"), which separates it from the market-wide prediction_market_trades sibling. The differentiation is implicit, though — it never names prediction_market_trades or prediction_market_address_pnl directly, so the agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The Pitfalls line gives an explicit when-not ("not profitability") with a positive statement of the right context ("wallet trade activity"). It stops short of naming the alternative tool that should be used for profitability (prediction_market_address_pnl or prediction_market_address_summary), so routing still requires a small inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prediction_market_lookupLooking up prediction marketARead-onlyInspect
Search Polymarket for events and markets by name, topic, URL, or slug.
PM building blocks:
An event is a grouped prediction topic containing many child markets.
A market is one tradable outcome with its own
marketId.Example:
2026 NCAA Tournament Winneris an event;Will Duke win the 2026 NCAA Tournament?is a market. Detail tools requiremarketId, noteventId.
When to use:
First tool when the user asks about a specific PM topic, event, slug, or Polymarket URL but does not provide
marketId.Optionally provide
queryVariantas a cleaner short keyword version.Set
includeEventMarketsto true to also return child markets for the best-matching event.Do NOT use
general_searchfor prediction markets.Results include current outcome prices, last trade price, and bid/ask inline — for a quick probability check you may not need
prediction_market_ohlcv. For price history or dated moves, still useprediction_market_ohlcv.
Query tips:
Uses Polymarket's search API — natural language queries work well.
Prefer short 1–3 keyword queries for best results.
Avoid broad multi-topic queries like
bitcoin ethereum politics.
Output rules:
If lookup returns no suitable market or a mismatched timeframe, say so explicitly — do not silently substitute a nearby market.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for resolving prediction market names, events, slugs, or URLs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered; the description adds real substance on top — it names the underlying Polymarket search API, states that results include outcome prices, last trade price and bid/ask inline, and gives a behavioral rule ('if lookup returns no suitable market... say so explicitly — do not silently substitute'). It does not mention pagination behavior or rate limits despite a `page` parameter existing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Bold section headers ('PM building blocks', 'When to use', 'Query tips', 'Output rules') front-load the routing decision, and the event/market example earns its place because it prevents a wrong `marketId` call. It runs slightly long and some bullets (e.g. the broad multi-topic query warning) are marginal, but there is no true filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape need not be described, and the description still covers the qualitative output contract (inline prices, no silent substitution). For a single nested-request parameter with 100% schema coverage and full annotations, nothing an agent needs in order to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so a 3 would be the floor, but the description goes further: it explains that `queryVariant` is a cleaner short keyword form of a slug, that `includeEventMarkets` returns child markets of the best-matching event, and that queries should be 1–3 keywords, which is usage semantics the schema does not convey. The `page` and `status` parameters get no prose treatment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (Polymarket events and markets) plus the input forms accepted (name, topic, URL, slug). The 'PM building blocks' section explicitly defines event vs. market and warns that detail tools need `marketId`, not `eventId`, which lets an agent separate this tool from prediction_market_ohlcv and the other PM siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Has an explicit 'When to use' block that names the trigger condition (topic/slug/URL but no marketId) and names alternatives directly: 'Do NOT use general_search for prediction markets' and 'for price history... use prediction_market_ohlcv'. It also distinguishes the quick probability check case from the history case, which is exactly the boundary an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prediction_market_ohlcvLoading prediction market pricesARead-onlyInspect
Historical odds/volume candles for a Polymarket market.
When to use:
Current odds / implied probability, price history, and recent probability changes on a specific market.
Key fields:
Closeis the share price for the displayed outcome side.In binary markets, Yes and No shares are complementary and sum to about $1.
Pitfalls:
Each response is for one exact
marketId— do not mix dates or prices across different markets.If no candles are returned for the requested window, say so directly — do not estimate.
Prerequisites: If marketId is unknown, call
prediction_market_lookup first.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for historical prediction market OHLCV. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, and non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: it warns not to mix dates/prices across markets, and instructs the agent to say so directly rather than estimate when no candles are returned. These are useful operating constraints not captured by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose followed by clearly labeled sections (When to use, Key fields, Pitfalls, Prerequisites). Every section adds value, though the bold-headed formatting is slightly heavier than strictly necessary for a single-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description needn't explain return values, and it still adds the important note about Close signifying the displayed outcome side. It covers the prerequisites and pitfalls an agent needs. The only minor gap is not distinguishing itself from orderbook/trades siblings for overlapping use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds no direct guidance on parameters like dateRange or orderBy beyond saying it defaults to the last 30 days (also in schema). The Close/Yes-No complementarity note explains output semantics rather than parameters. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Historical odds/volume candles for a Polymarket market.' This clearly distinguishes it from siblings like prediction_market_orderbook and prediction_market_trades. It doesn't contrast with sibling alternatives explicitly, so it falls short of a 5, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
A dedicated 'When to use' section names price history and recent probability changes, and the Prerequisites section routes to prediction_market_lookup when marketId is unknown. It lacks explicit 'when not to use' guidance (e.g., use orderbook for current depth or trades for individual fills), so it lands at 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.
prediction_market_orderbookChecking prediction market orderbookARead-onlyInspect
Live orderbook for a Polymarket market.
When to use:
Bid/ask depth, liquidity, and yes-share / no-share order structure.
Key fields:
Order Sizeis share quantity, not USD. Do not describe share size as dollar depth unless you calculateshares × price.
Yes/No price relationship:
Yes and No are complementary (Yes + No ≈ $1). A No bid at price $X means willingness to buy No when Yes is near $(1−X).
A cluster of No bids at low prices (e.g. $0.20) is resistance for Yes rallying to ~$0.80, NOT a support floor for the current Yes price.
When comparing OHLCV odds against orderbook depth, convert No-side prices to Yes-equivalent (1 − No price) before drawing divergence conclusions.
Pitfalls:
Do not treat raw no-share prices as bearish yes-share odds — prefer
prediction_market_ohlcvfor current odds / implied probability.
Prerequisites: If marketId is unknown, call
prediction_market_lookup first.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for a live prediction market orderbook. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, yet the description adds substantial domain behavior: units disclosure (share size vs USD), the Yes+No≈$1 complementarity, the trap of reading No bids as Yes support, and the conversion step needed for cross-tool comparison. This is meaningful context beyond the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the one-line purpose, then sections for when-to-use, key fields, price relationship, pitfalls, and prerequisites. Every block is useful, though the Yes/No pricing explanation runs a few lines longer than strictly needed for tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described. The description covers when to call, prerequisites, field units, and interpretation pitfalls, leaving no material gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both query fields (marketId, page) are documented in the schema, so the baseline is 3. The description adds routing value by telling the agent where to obtain marketId (prediction_market_lookup), which goes slightly beyond the schema's own note pointing to the screener.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: 'Live orderbook for a Polymarket market.' It also implicitly delineates from siblings by naming prediction_market_ohlcv for odds and prediction_market_lookup for ID resolution, so an agent can route without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use' block names the use case (bid/ask depth, liquidity, order structure) and explicitly redirects to prediction_market_ohlcv for implied probability/odds, with a stated prerequisite to call prediction_market_lookup when marketId is unknown. Alternatives and conditions are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prediction_market_pnl_leaderboardChecking prediction market PnL leadersARead-onlyInspect
PnL leaderboard for a Polymarket market.
When to use:
Only for profitability claims.
Key fields:
Total PnL USD= redemption + unrealized value + sell proceeds − buy cost, for this market only.Net Buy Cost USDis what the wallet paid for shares.Net Sell Proceeds USDis what it received for shares sold before resolution.Redemption Value USDis the payout collected after the market settled.Unrealized Value USDis the marked value of shares still held.Side Heldreflects current side exposure where the API provides it.
Pitfalls:
The API gives no ROI, volume, or trade count here. Do not state them.
If PnL fields are blank, say profitability is unavailable — do not substitute top holders or position size.
Prerequisites: If marketId is unknown, call
prediction_market_lookup first.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for market-level PnL leaderboard. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/open-world safety, while the description adds substantive behavior: how Total PnL is composed, which metrics the API lacks, and what to do when PnL fields are blank. Those are operational constraints beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and organized into 'When to use', 'Key fields', 'Pitfalls', and 'Prerequisites'. The field definitions and pitfalls are relevant to correct interpretation, and there is no obvious filler despite the Key fields block being the longest section.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with a documented schema and output schema, the description supplies purpose, usage constraints, field semantics, and failure handling. The notable gap is the inconsistent marketId prerequisite, which leaves sourcing guidance ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already documents marketId and page, so the baseline is 3. The description adds a prerequisite, but it conflicts with the schema's note that marketId comes from prediction_market_screener by directing agents to prediction_market_lookup instead; that inconsistency prevents credit above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names the specific verb/resource and scope ('PnL leaderboard for a Polymarket market'), and the 'Only for profitability claims' line plus pitfalls distinguish it from holder/position tools. An agent can tell this is market-level PnL, not address-level or top-holder data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear when-to-use rule ('Only for profitability claims') and explicit exclusions ('do not substitute top holders or position size'), plus a prerequisite for resolving marketId. It stops short of naming the relevant alternative sibling for other PnL scopes, so it is not a full when/when-not/alternatives statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prediction_market_position_detailLoading prediction market positionARead-onlyInspect
Detailed position breakdown for a Polymarket market.
Key fields:
Position Size (Shares)is the share quantity still held.Buy Cost USDandSell Proceeds USDare the cash paid and received for this outcome token.Unrealized Value USDis the marked value of shares still held;Redemption Value USDis the payout collected after settlement.Position PnL USDapplies to the displayed row only — not the wallet's total PM activity.
Pitfalls:
Each row is one outcome token of one wallet. A wallet holding both sides appears twice.
Prerequisites: If marketId is unknown, call
prediction_market_lookup first.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for detailed market positions. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so safety is covered; the description adds real value beyond that by explaining row granularity (one outcome token per wallet) and by scoping Position PnL to the displayed row rather than wallet totals. It does not describe pagination behavior or result-set size, which is the main behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence followed by scannable Key fields and Pitfalls sections; each field note explains a non-obvious accounting distinction rather than restating the field name. Minor redundancy with the output schema and a slightly heavy bullet list keep it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return format, yet it goes further by interpreting the trickiest fields and warning about duplicate wallets. The remaining gaps are pagination semantics and explicit sibling routing; note also that the description says to use prediction_market_lookup for marketId while the schema description points to prediction_market_screener, a minor inconsistency an agent must reconcile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the nested request object documents both marketId and page with constraints, so the schema carries the load. The description repeats the marketId sourcing hint but adds no semantics for the page parameter or result ordering, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: a detailed position breakdown for a Polymarket market, with field-level semantics for position size, cost, proceeds, unrealized/redemption value and PnL. It implicitly separates itself from sibling tools like prediction_market_address_pnl by noting each row is one outcome token of one wallet, but it never explicitly names the sibling it is not, leaving the market-wide vs per-wallet distinction to be inferred.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite rule — call prediction_market_lookup first if marketId is unknown — and a usage pitfall about wallets holding both outcome sides appearing twice. It offers no guidance, however, on when to prefer this over related siblings such as prediction_market_address_pnl, prediction_market_top_holders, or prediction_market_address_summary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prediction_market_screenerScreening prediction marketsARead-onlyInspect
Browse and sort Polymarket markets, events, or categories.
When to use:
Broad discovery, screening, and ranked browsing across many markets.
Do NOT use this to resolve one named market/event/slug/URL — use
prediction_market_lookupinstead.
Query tips:
Literal-style matching on text and slugs, not fuzzy web search.
Prefer one short topic or slug fragment (e.g.
fed cuts,zelensky,ncaa tournament).Do not bundle unrelated topics (e.g.
bitcoin ethereum politics weather). If a broad question spans several topics, run separate screener queries for each.If a query returns no rows, do not invent a nearest match — try a narrower topic or say no data was returned.
Output rules:
Superlatives (highest, leading, biggest, top, trending) must match the shown metric exactly.
Do not infer end dates, rankings, or category leadership from titles alone.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for prediction market discovery tools. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely non-obvious behavior: matching is literal-style rather than fuzzy web search, no-match results should not be backfilled with nearest guesses, and superlatives must map to the shown metric. Pagination/rate behavior is left implicit, keeping this just short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action in sentence one, then cleanly sectioned with bold headers. Slightly long, and the anti-hallucination rules overlap a little with the no-match rule, but nearly every line carries actionable instruction rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and all four nested request parameters are documented, so return values and parameter shapes need no prose. Combined with the annotations, the description covers everything an agent needs to select, scope, and interpret calls to this screener.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the query tips add real meaning about the `query` parameter — short topic fragments, no multi-topic bundling, split broad questions into separate calls. That goes beyond the schema's "Optional text query for filtering" and shapes how the parameter should actually be filled.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Browse and sort Polymarket markets, events, or categories") and explicitly distinguishes itself from the sibling prediction_market_lookup. An agent can route between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Contains an explicit "When to use" block plus a negative rule naming the alternative tool for single named markets/slugs/URLs. It also covers failure handling (no rows returned → do not invent a nearest match), which is real invocation guidance rather than restated metadata.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prediction_market_top_holdersFinding prediction market top holdersARead-onlyInspect
Largest current holders for a Polymarket market.
Key fields:
Positions are share balances, not USD notional.
Position Value USDis current marked value, not payout at resolution.Side Heldis the share side currently held.
Pitfalls:
The visible holder table is the source of truth for holder-side concentration — do not infer risk, max loss, or potential profit unless the tool output explicitly provides it.
Output summary is based only on shown rows, not the entire holder table.
Large visible positions or labels do not by themselves identify smart money unless Nansen smart-money-labelled data supports it.
Prerequisites: If marketId is unknown, call
prediction_market_lookup first.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for prediction market top holders. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, open-world. The Pitfalls block still adds real value beyond them: the table is the source of truth, the summary reflects only shown rows, and labels/large positions must not be read as smart money. It doesn't mention pagination limits or how far the 'visible' table extends, which matters for a paginated holder list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-liner followed by labeled blocks, so an agent can stop after sentence one if it already knows the market ID. The "Key fields" block partly restates what the output schema already provides, which costs some of the budget.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations, a full output schema, and complete parameter documentation, the description only has to supply the reasoning constraints — and it does, via the pitfall about not inferring risk/PnL beyond explicit output. Only the pagination/row-count behavior for the 'visible table' caveat is left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Every parameter is documented in the schema (100% coverage), including the `orderBy` enum and default, so the description adds nothing on paging or sorting. The "Key fields" bullets describe output columns rather than inputs, so they don't compensate further on parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line states a concrete verb and resource — "Largest current holders for a Polymarket market" — which pins both the operation and the domain. The Polymarket scoping directly distinguishes it from token_current_top_holders and from the address-level prediction market siblings such as prediction_market_address_pnl.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The Prerequisites section gives an explicit routing rule: if `marketId` is unknown, call prediction_market_lookup first. It doesn't state any when-not-to-use conditions or contrast with prediction_market_position_detail / prediction_market_trades, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prediction_market_tradesChecking prediction market tradesARead-onlyInspect
Recent trades for a Polymarket market.
When to use:
Source of truth for recent fills and latest trade-tape pricing.
Do not overwrite recent trade prices with older OHLCV candles.
Key fields:
Share Sizeis quantity;Value USDis dollar value.Each row is one visible trade leg —
Value USDapplies to that row, not the whole transaction hash.
Pitfalls:
Large visible trades do not by themselves identify smart money or institutions.
Prerequisites: If marketId is unknown, call
prediction_market_lookup first.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for recent market trades. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered; the description adds real interpretive context — per-row trade-leg semantics for 'Value USD' and the pitfall that large visible trades do not imply smart money. It does not mention pagination behavior or result limits, which is the remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-line purpose followed by labeled sections (When to use, Key fields, Pitfalls, Prerequisites), which is scannable and each block carries usable information. Slightly verbose formatting for the payload, but no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return values, and it instead supplies the interpretation guidance (per-leg value, smart-money caveat) plus the marketId acquisition path. Combined with readOnly annotations, an agent has everything needed to call and interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with page, marketId, and dateRange all fully documented including token syntax, so the schema already carries parameter meaning. The description's 'Key fields' section describes output fields rather than parameters and adds nothing about marketId or dateRange usage, leaving baseline territory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Recent trades for a Polymarket market') with market scoping, so an agent knows exactly what it retrieves. It does not explicitly differentiate itself from siblings like prediction_market_address_trades or prediction_market_position_detail, but the market-level trade tape framing is distinct enough in practice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use' section positions it as the source of truth for fills and warns against overwriting recent trade prices with older OHLCV candles, which effectively routes the agent away from prediction_market_ohlcv for tape data. The prerequisite line telling the agent to call prediction_market_lookup first when marketId is unknown is exactly the kind of conditional guidance that prevents failed calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_traders_and_funds_dcasChecking Smart Money DCA ordersARead-onlyInspect
Get Jupiter DCA (dollar-cost-averaging) orders opened by smart traders on Solana, including deposit size, amount spent so far and order status. Use this for scheduled accumulation intent; use smart_traders_and_funds_dex_trades for one-off swaps.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for smart money Jupiter DCA orders (v1 API, Solana only) - flattened. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is clear. The description adds the Solana-only scope and the kinds of data returned, but does not discuss pagination behavior, data freshness, or rate limits. With annotations covering the critical safety traits, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the tool's purpose, and then adds a crisp usage distinction. There is no redundant or wasted phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema, annotation coverage, and existing output schema, the description is complete enough for selection and invocation. The main missing context is how this differs from the sibling token_jup_dca tool and any pagination expectations, though the schema and tool prefix mitigate those gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the nested request parameters are individually documented, so the schema already carries parameter semantics. The description does not explain filter behavior such as traderAddress, token symbol filters, numeric ranges, or smart-money label selection beyond the general 'opened by smart traders' phrasing. Baseline 3 is correct when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: getting Jupiter DCA orders opened by smart traders on Solana. It also names the returned concepts (deposit size, amount spent, order status) and explicitly distinguishes the tool from smart_traders_and_funds_dex_trades.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance: 'Use this for scheduled accumulation intent.' It also names the relevant alternative and its condition: 'use smart_traders_and_funds_dex_trades for one-off swaps.' This is enough for an agent to choose between them without opening the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_traders_and_funds_dex_tradesTracking Smart Money DEX tradesARead-onlyInspect
Get individual (per wallet, per transaction) DEX trades made by smart traders (EXCLUDES whales, large holders, influencers, etc.) across all chains (default is ['all']) or specific chain(s). Use this to see exactly which wallet bought or sold what; use smart_traders_and_funds_netflow for the aggregated view.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for individual smart money DEX trades (v1 API) - flattened. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds real context beyond that: the composition of the result set (smart traders only, whales/influencers excluded) and the default all-chains scope. It stops short of covering pagination behavior or result-size expectations, which matters given a page parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler. The scope/exclusion detail comes first, then the routing alternative, so the most decision-relevant information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape needn't be explained, and annotations carry the safety profile. Combined with the fully documented nested request schema and the explicit sibling routing, an agent has everything needed to select and call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every request field, including chains, orderBy, trade value range and label filters, is documented inline. The description's only parameter-adjacent contribution is restating the ['all'] chain default, which the schema already says, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get individual per wallet, per transaction DEX trades'), and pins down the subject population: smart traders only, explicitly excluding whales, large holders and influencers. That scope statement distinguishes it from the aggregated smart-money siblings without any schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the concrete use case ('see exactly which wallet bought or sold what') and routes the agent to the alternative, smart_traders_and_funds_netflow, for the aggregated view. The selection condition is stated, not inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_traders_and_funds_historical_token_balancesReviewing Smart Money holdings historyARead-onlyInspect
Get the day-by-day history of aggregated smart trader token balances (EXCLUDES whales, large holders, influencers, etc.) for a date range on base, bnb, ethereum, monad, robinhood or solana. Use this to see how smart money holdings changed over time; use smart_traders_and_funds_token_balances for the current snapshot. This endpoint uses inclusive UTC calendar dates, not rolling timestamps.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for smart money historical token balances (v1 API) - flattened. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful domain context by stating that whales, large holders, and influencers are excluded, and by clarifying inclusive UTC calendar date behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences are front-loaded with the core action, then the alternative-tool distinction, then the date semantics. Each sentence contributes useful selection or invocation context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, scope, exclusions, supported chains, date semantics, and the current-snapshot alternative. With a fully described nested schema, annotations, and an output schema, nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the nested request fields and date-range tokens are already fully documented in the schema. The description restates date-range and chain semantics but adds little parameter-level detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: get day-by-day history of aggregated smart trader token balances, with explicit exclusions and supported chains. It also distinguishes the tool from the current-snapshot sibling, so an agent can identify it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this tool to see how smart money holdings changed over time and names smart_traders_and_funds_token_balances as the alternative for the current snapshot. That gives a clear when-to-use rule against a specific sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_traders_and_funds_netflowChecking Smart Money netflowsARead-onlyInspect
Get aggregated (not per wallet) smart trader (EXCLUDES whales, large holders, influencers, etc.) net USD flow per token over 1h/24h/7d/30d, per chain for all chains (default is ['all']) or specific chain(s). Use this for what smart money is buying or selling right now; use smart_traders_and_funds_token_balances for what they hold.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for smart money token netflow (v1 API) - flattened. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral scope beyond annotations: results are aggregated rather than per wallet, certain wallet categories are excluded, and chain coverage defaults to all supported chains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences are used with no waste: the first front-loads the core scope and constraints, and the second clarifies when to use this tool versus the holdings sibling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex with a nested request object, but the schema has 100% description coverage and an output schema exists. The description supplies the essential scope, exclusions, default chain behavior, and sibling routing, leaving parameter and return details to the structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the nested request parameters are already well documented. The description reinforces the chain default and available timeframes, but adds little parameter-specific syntax or filtering semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Get) and resource (aggregated smart trader net USD flow per token) with scope details: aggregated not per-wallet, excluding whales/large holders/influencers, across 1h/24h/7d/30d and chains. It also distinguishes the tool from smart_traders_and_funds_token_balances by contrasting buying/selling flows with holdings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit usage guidance: use this for what smart money is buying or selling right now, and use smart_traders_and_funds_token_balances for what they hold. That directly routes the agent between the two closest alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_traders_and_funds_perp_tradesTracking Smart Money perp tradesARead-onlyInspect
Get recent Hyperliquid perpetual futures trades from Smart Money addresses across all tokens.
Optional labels narrow this cohort; they do not search all addresses with that label. For a broad view of Smart Money activity across all tokens, use token_discovery_screener with traderType="sm".
Note: This endpoint is Hyperliquid-only (perpetual futures data). It returns recent trades only (no date filtering available).
Columns returned:
Time: Timestamp when the trade occurred (datetime: YYYY-MM-DD HH:MM:SS)
Side: Position direction - Long or Short
Action: Order action - Add, Reduce, Open, Close
Token: Symbol of the perpetual contract
Size: Quantity of the perpetual contract (numeric)
Price USD: Price per token at time of trade (price formatted)
Value USD: Total USD value of the trade (currency formatted)
Trader: Nansen label of the trading address
Address: Full trading wallet address
Tx Hash: Blockchain transaction hash for verification
Sorting Options (all fields support "asc"/"desc"): Available for sorting: timestamp, amount, price_usd
Examples:
# Get recent smart money perp trades (sorted by amount)
{ "orderBy": "amount", "order_by_direction": "desc" }
# Filter by action and side
```
{
"action": "Open",
"side": "Long"
}
```| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for smart money perp trades - flattened. Note: This endpoint returns recent trades only (no date filtering available). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive), and the description adds behavior the annotations cannot express: Hyperliquid/perp-only coverage, a fixed cohort, recent-trades-only with no date filtering, and the sortable fields. That is exactly the extra context this dimension rewards.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and the sibling routing rule, then caveats, then structured reference material. The column list is long and largely duplicates the output schema, but the headers and short examples keep it scannable; a bit of trimming is possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a filtered read tool, everything an agent needs is present: scope, cohort semantics, freshness limits, sortable fields, filter combinations, and an explicit alternative. The presence of an output schema makes the column enumeration optional rather than necessary, so nothing important is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 100%, so the baseline is 3, but the description earns more by explaining that labels are a subgroup filter on a fixed Smart Money cohort rather than a global label search, and by listing valid sort keys with an example. The only gap is that the page parameter and its pagination semantics are never mentioned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get recent Hyperliquid perpetual futures trades from Smart Money addresses across all tokens'), and explicitly distinguishes this from token_discovery_screener. The Hyperliquid-only scope further sharpens the boundary against sibling DEX/spot trade tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit alternative and the condition that selects it ('For a broad view of Smart Money activity across all tokens, use token_discovery_screener with traderType="sm"'), plus a clear caveat about what the optional labels do and do not do. It also warns that no date filtering is available, which prevents a whole class of misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_traders_and_funds_pnl_leaderboardRanking Smart Money by PnLARead-onlyInspect
Rank smart trader addresses (EXCLUDES whales, large holders, influencers, etc.) by realized, unrealized and total USD PnL over a 1/7/30/90/180 day window, with ROI, win rate and trade counts. Use this to find the best performing smart money wallets; use token_pnl_leaderboard for the best performers on one specific token.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for the smart money PnL leaderboard (v1 API) - flattened. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, openWorld), so the description's added value is the entity-type exclusion rule and the set of returned performance metrics, both of which change how an agent interprets results. It stops short of noting pagination or result-size behavior, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both earning their place: the first front-loads scope, metrics and windows; the second routes the agent to the correct sibling. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be spelled out, and the nested request object is fully documented in-schema. The description supplies the business-level semantics (who counts as smart money, what PnL variants exist); only minor gaps like paging behavior remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each nested property (chains, orderBy, timeframe, orderByDirection, includeSmartMoneyLabels) is documented in the schema itself. The description restates the timeframe windows and metric names but adds no syntax or default guidance beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (rank), resource (smart trader addresses), the metrics ranked (realized/unrealized/total USD PnL, ROI, win rate, trade counts), and the supported windows. It also declares a scope exclusion (whales, large holders, influencers), which sharpens what 'smart money' means here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it ('find the best performing smart money wallets') and names the alternative ('use token_pnl_leaderboard for the best performers on one specific token'), giving the selecting condition rather than leaving it to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_traders_and_funds_token_balancesChecking Smart Money positionsARead-onlyInspect
Get aggregated (not per wallet) smart trader (EXCLUDES whales, large holders, influencers, etc.) token balances and 24h change per chain for all chains (default is ['all'], which queries all supported chains) or specific chain(s). Use filters to narrow down the results.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for smart money token holdings (v1 API) - flattened. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false. The description adds meaningful behavioral context by clarifying that results are aggregated rather than per wallet, exclude whales/large holders/influencers, and cover all chains by default, though it does not mention pagination or rate-limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loads the core purpose and aggregation/exclusion behavior. The second sentence is generic and somewhat vague, but the overall structure is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a rich input schema with 100% description coverage and an output schema, the description provides enough context for correct invocation: aggregation, exclusions, chain scope, and default behavior. Minor gaps around pagination and sorting are acceptable because those details are covered by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the nested request parameters in detail. The description only reinforces the default chains behavior and general filter usage, adding little parameter semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: getting aggregated smart trader token balances and 24h change per chain. It clearly distinguishes the result from per-wallet data and notes exclusions like whales and influencers, but it does not explicitly distinguish itself from the closely named historical token balances sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage guidance is 'Use filters to narrow down the results,' plus an explanation of the default chain scope. It does not say when to choose this tool over related siblings such as smart_traders_and_funds_historical_token_balances, netflow, or token_flows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_feedbackSending feedback to NansenAIdempotentInspect
Submit product feedback for the authenticated Nansen account. Costs zero credits, including with zero balance.
Send when the user requests or approves this report. Before a new automatic report, call get_feedback_preferences for a fresh account preference. If it is off, unconfigured or unavailable, show the report and ask before sending. If the user refuses or you cannot ask, do not send. Enabled permits sending subject to host controls. One report approval does not change the preference. Never enable it yourself. Host denial means no submission. A feedback_not_enabled refusal means stop automatic retries and tell the user the feature is not enabled for this account. Approval and saved preferences do not override rollout. Seven accepted reports per account per week across all clients, resetting Monday 00:00 UTC. Generate submission_id once per new report; reuse it and the exact report for retries and re-invocations. Never replace an ID after a timeout. Limits: description/goal/expected/observed/workaround 2,000 Unicode characters each; endpoint/tool 256; 10 distinct request IDs of 128 characters; client name/version 64; total JSON body 16 KiB UTF-8. Use category missing_capability for a feature request or a product gap. Missing capabilities need no endpoint, tool, or request ID. Omit secrets. Received means saved, not fixed. Failures preserve recovery guidance. No alternate-account or server-key fallback. Do not redirect failed submissions to unrelated feedback channels.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | One product feedback report and the submission ID that makes retries safe. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| receipt | No | |
| success | Yes | |
| next_action | Yes | |
| preferences | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the annotations: zero-credit cost, a concrete rate limit (seven accepted reports per account per week, Monday 00:00 UTC reset), idempotency semantics for submission_id including the timeout rule, and the meaning of the feedback_not_enabled refusal. It also discloses side-effect limits ('Received means saved, not fixed', 'No alternate-account or server-key fallback') and a privacy rule ('Omit secrets').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and cost are front-loaded, but the body is a dense block of policy prose without grouping, and the per-field character limits duplicate the schema's maxLength constraints. Several sentences (rollout, host denial, preference persistence) are individually useful but not separated by topic, making the operative rules hard to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested-object mutation with consent, rollout, rate-limit, and idempotency concerns, the description covers everything the schema and annotations cannot: consent gating, credit cost, quota, retry identity, refusal handling, and PII hygiene. An output schema exists, so return values need not be described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the field definitions already carry the load; the description adds genuine semantics on top: generate submission_id once per report and reuse the exact same ID and report on retries, use category missing_capability for feature requests, and missing_capability needs no endpoint/tool/request ID. The character-limit list largely restates schema maxLengths, capping the score below 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ('Submit product feedback') scoped to 'the authenticated Nansen account', and adds the cost model ('Costs zero credits') immediately. The naming and framing make it clearly distinct from the sibling read tools get_feedback and get_feedback_preferences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('Send when the user requests or approves this report'), prerequisites (call get_feedback_preferences first and check the preference), and when-not-to-use ('If the user refuses or you cannot ask, do not send', 'Never enable it yourself'). It also routes the agent back to the sibling while keeping submission separate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_current_top_holdersFinding top token holdersARead-onlyInspect
Get upto 25 (per page) top holders information for a specific token.
Note: Using labelType: smart_money is not a good proxy for an overall market view. Use it only if user explicitly requests it, or to combine it with other non smart money data.
Modes:
onchain_tokens(default): Analyze on-chain tokens by contract addressperps: Analyze Hyperliquid perpetual futures by symbol (chain auto-set to "hyperliquid")
Columns returned (onchain_tokens mode):
Address: Wallet/contract address of the token holder
Label: Nansen label (e.g., exchange, whale, etc.)
Balance: Current balance held (numeric with K/M/B formatting)
Balance USD: USD value of token holdings (currency formatted)
Ownership %: Percentage of total token supply owned (percentage, 2 decimal places)
Sent: Total tokens sent from this address historically (numeric)
Received: Total tokens received by this address historically (numeric)
24h Change: Balance change in last 24 hours (numeric, can be negative)
7d Change: Balance change in last 7 days (numeric, can be negative)
30d Change: Balance change in last 30 days (numeric, can be negative)
Columns returned (perps mode):
Trader Address: Address of the trader
Trader Label: Nansen label for the trader
Side: Position direction (Long/Short)
Position Value USD: Total USD value of the position (currency formatted)
Position Size: Size of the position in tokens (numeric)
Leverage: Leverage multiplier (e.g., "20X")
Leverage Type: Type of leverage (cross/isolated)
Entry Price: Average entry price (price formatted)
Mark Price: Current mark price (price formatted)
Liquidation Price: Liquidation price (price formatted)
Funding USD: Cumulative funding payments (currency formatted)
Unrealized PnL USD: Unrealized profit/loss (currency formatted)
Sorting Options (default: holding_size desc): onchain_tokens mode: holding_size, total_outflow, total_inflow, balance_change_24h, balance_change_7d, balance_change_30d perps mode: holding_size, side, entry_price, leverage, liquidation_price, funding_usd, upnl_usd Use only a value listed for the selected mode. A value from the wrong mode is not an error: the call falls back to holding_size and the output notes the changed sort.
Examples:
# On-chain tokens (default mode)
{ "mode": "onchain_tokens", "chain": "ethereum", "token_address": "0xa0b86a33e6b6c4b3add000b44b3a1234567890ab", "label_type": "top_100_holders" }
# Hyperliquid perpetual futures
```
{
"mode": "perps",
"token_address": "PENGU",
"label_type": "smart_money"
}
```
# Find most active senders using filters
```
{
"mode": "onchain_tokens",
"chain": "ethereum",
"token_address": "0xa0b86a33e6b6c4b3add000b44b3a1234567890ab",
"label_type": "smart_money",
"includeSmartMoneyLabels": ["All Time Smart Trader"],
"orderBy": "total_outflow",
"order_by_direction": "desc"
}
```
# Find biggest accumulators (who received most tokens)
```
{
"mode": "onchain_tokens",
"chain": "ethereum",
"token_address": "0xa0b86a33e6b6c4b3add000b44b3a1234567890ab",
"label_type": "whale",
"orderBy": "total_inflow",
"order_by_direction": "desc"
}
```
# Perps mode with filters
```
{
"mode": "perps",
"token_address": "ETH",
"label_type": "smart_money",
"side": "Long",
"upnlUsd": {"from": 10000},
"positionValueUsd": {"from": 100000},
"orderBy": "holding_size",
"order_by_direction": "desc"
}
```
**Native-token / stablecoin `orderBy` restriction:**
With `labelType='top_100_holders'` (the default), native tokens
(`0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` and native SUI) and
stablecoins/pegged tokens support `orderBy='holding_size'` only. To
sort such a token by another onchain field, use `labelType='whale'`,
`smart_money`, `exchange` or `public_figure` instead. An unsupported
combination is not an error: the call falls back to `holding_size`
and the output notes the changed sort.
**Other `top_100_holders` limits for native tokens:** limited filters
(holding_size, total_outflow, total_inflow, address, smart money
labels). For advanced filters use a different `labelType` or set
`aggregateByEntity=true`.
**Does not** work for SOL in onchain_tokens mode (tokenAddress So11111111111111111111111111111111111111112). For SOL analysis, use perps mode instead.| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Pass these fields inside the tool's request argument. For on-chain holders, specify the token contract and its supported chain. Native SOL holders are unavailable; use perps mode for SOL positions. For Hyperliquid positions, use mode='perps' and a symbol such as BTC. Perps mode returns positions, not spot token holders. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare read-only, open-world, non-destructive behavior, and the description adds important operational context: pagination, fallback-to-`holding_size` on unsupported sort combinations, native/stablecoin restrictions, and mode auto-detection. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with purpose and modes, but it is very long. It enumerates all returned columns even though an output schema exists, and includes five full examples, so parts duplicate structured data rather than adding unique guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complex modes, filters, restrictions, and the presence of an output schema, the description covers everything an agent needs to select and invoke the tool correctly. Return values are already documented in the output schema, so the main completeness burden is met by the mode, filtering, and limitation guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3, but the description adds real semantic value: mode-specific sort fields, label-type caveats, filter examples, and fallback behavior. However, its examples use snake_case (`token_address`, `label_type`) while the schema uses camelCase (`tokenAddress`, `labelType`), which could confuse literal invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: fetch top holders for a specific token, with an explicit per-page limit and two distinct modes. It clearly separates on-chain-token holder analysis from Hyperliquid perps position analysis, so an agent can identify the tool's purpose without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit mode guidance, including the default `onchain_tokens` behavior and when to use `perps`. It also states when not to use `smart_money` as a market proxy, when to switch label types, and that SOL is unsupported in on-chain mode with `perps` as the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_dex_tradesChecking latest DEX tradesARead-onlyInspect
Get DEX trades for a specific token.
Modes:
onchain_tokens(default): Analyze on-chain tokens by contract addressperps: Analyze Hyperliquid perpetual futures by symbol (chain auto-set to "hyperliquid")
NOTE: In onchain_tokens mode, only ETH is supported among native tokens. For other native tokens (SOL, BTC, BNB, etc.), use perps mode instead.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | TokenDexTradesRequest containing parameters, pagination settings, and optional sorting |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, so the safety profile is covered. The description adds one useful behavioral fact beyond annotations: perps mode forces chain='hyperliquid' and only ETH is supported natively in onchain mode. It says nothing about pagination behavior, result caps, or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core verb, then a compact bolded Modes block and a short NOTE. Every sentence carries information the agent needs to pick a mode; nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and annotations cover safety. The description adequately covers the main ambiguity (mode selection and the native-token caveat), though it omits anything about pagination or how filters interact across modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents mode, chain, side, action, dateRange, valueUsd, and smart-money labels. The description's only additional semantic value is the ETH-only native-token restriction and the mode defaults, which the schema largely restates. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get DEX trades for a specific token") and the token-centric scope implicitly distinguishes it from address_dex_trades. It never names a sibling or explicitly routes the agent between address_dex_trades, smart_traders_and_funds_dex_trades, and this tool, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The Modes block gives concrete when-to-use guidance: contract-address analysis vs. Hyperliquid symbols, with the note that perps mode auto-sets chain to hyperliquid. The NOTE also gives a real selection rule (use perps for native tokens other than ETH). What's missing is guidance on when to choose this over the sibling DEX-trade tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_discovery_screenerDiscovering trending tokensARead-onlyInspect
Get comprehensive token screening data across multiple blockchain networks with advanced filtering.
A maximum of 25 results per page are returned out of 1000s of tokens. Use the sorting and filtering options to narrow down the results.
In a mixed spot + hyperliquid request, page applies to both the spot and perps sections.
A maximum of 5 chains can be specified per request (excess chains are automatically trimmed).
This tool helps with token discovery and finding trending tokens by combining different metrics: volume, liquidity, market cap, smart money activity, and token age.
IMPORTANT - Hyperliquid Special Case:
Hyperliquid chain queries perpetual futures (perps), not spot tokens
When hyperliquid is mixed with other chains, two sections of up to 25 results each are returned - one for spot tokens and one for perps.
For perps, only these filters are supported: volume, buyVolume, sellVolume, openInterest, netflow, nofTraders, traderType
Perps support orderBy='price_change' for every traderType. Prices use completed 5-minute buckets at the timeframe boundaries.
Additional orderBy fields for perps: open_interest, funding (e.g. orderBy 'funding' ascending finds perps that pay longs)
Unsupported filters/orderBy will fallback to defaults
INPUT EXAMPLES:
Find tokens which are going up in price.
Added some liquidity filter to remove spam and low quality tokens.
{
"chains": ["ethereum", "solana", "bnb", "base"],
"timeframe": "24h",
"liquidity": {"from": 100000},
"nofTraders": {"from": 10},
"orderBy": "price_change",
"orderByDirection": "desc"
}Find top stablecoins by market cap
{
"chains": ["ethereum", "solana", "bnb", "base"],
"timeframe": "7d",
"sectors": ["Stablecoin"],
"orderBy": "market_cap_usd",
"orderByDirection": "desc"
}Find AI memecoins with high trading activity
{ "chains": ["ethereum", "solana", "bnb", "base"], "timeframe": "7d", "sectors": ["AI Meme"], "liquidity": {"from": 100000}, "volume": {"from": 1000000} }
Find DeFi lending tokens
{ "chains": ["ethereum", "solana", "bnb", "base"], "timeframe": "24h", "sectors": ["DeFi Lending (Money Markets)"], "netflow": {"from": 1000000} }
Find tokens which have a lot of buying activity (high nofBuyers and buyVolume)
Note that we added some filters to remove spam and low quality tokens. We added liquidity filter so that we only surface tokens which we can buy or sell.
We sort by netflow descending to get tokens with the most net buying activity.
{
"chains": ["ethereum", "solana", "bnb", "base"],
"timeframe": "24h",
"liquidity": {"from": 100000},
"buyVolume": {"from": 1000000},
"marketCapUsd": {"from": 1000000},
"nofBuyers": {"from": 10},
"orderBy": "netflow",
"orderByDirection": "desc"
}Find Hyperliquid perps with high open interest and positive net flow
{
"chains": ["hyperliquid"],
"timeframe": "7d",
"openInterest": {"from": 100000},
"volume": {"from": 1000000},
"netflow": {"from": 0},
"nofTraders": {"from": 10},
"orderBy": "netflow",
"orderByDirection": "desc"
}WARNING: To avoid timeouts, it's recommended to:
Use 4 chains or less at a time (API tends to timeout with more chains)
Use shorter timeframes (e.g., 24h or 1h instead of 7d or 30d)
Args:
Returns: Comprehensive token metrics as markdown. Returns empty string if no tokens found.
Columns returned:
- **Token Address**: Token address (e.g., 0x1234567890123456789012345678901234567890)
- **Symbol**: Token trading symbol (e.g., ETH, BTC, DOGE)
- **Chain**: Blockchain network (ethereum, solana, polygon, etc.)
- **Price USD**: Current token price in USD (currency formatted)
- **Price Change**: Price change percentage over the date range (percentage, can be negative)
- **Market Cap**: Current market capitalization (currency formatted)
- **Fully Diluted Valuation (FDV)**: Market cap if all tokens were circulating (currency formatted)
- **FDV/MC Ratio**: Ratio indicating how much supply is locked/vested (numeric, >1 means locked supply)
- **USD Volume**: Total trading volume in USD (currency formatted)
- **Buy USD Volume**: Total buy volume in USD (currency formatted)
- **Sell USD Volume**: Total sell volume in USD (currency formatted)
- **Net Flow USD**: Net flow (buys minus sells) in USD (currency formatted, can be negative)
- **Traders**: Number of wallets of the selected traderType that traded the token. Without traderType, it counts all traders, not Smart Money (shown only with a nofTraders filter or sort). One wallet can cause most of the Net Flow USD also when Traders is more than 1. Use token_who_bought_sold before you report broad Smart Money buying.
- **DEX Liquidity**: Available liquidity for trading (currency formatted)
- **Inflow/FDV**: Inflow as percentage of FDV (percentage formatted)
- **Outflow/FDV**: Outflow as percentage of FDV (percentage formatted)
- **Token Age (Days)**: Days since token was first deployed
- **Sectors**: List of token sectors/categories
Hyperliquid perps columns (smart-money mode, when `onlySmartTradersAndFunds=true`):
- **Net Position** (`LONG $X` / `SHORT $X` / `FLAT`): current net direction. Use this when answering long/short questions.
- **Current Longs USD** / **Current Shorts USD**: gross notional on each side; sizing only, not direction.
- **Net Position Change**: delta over the timeframe — can be positive while Net Position is still SHORT.Notes: - Positive Net Flow on spot tokens indicates more buying than selling - High FDV/MC Ratio suggests significant locked or vested tokens
Filtering Options (filters parameter): - Numeric Ranges: volume, liquidity, marketCapUsd, netflow, tokenAgeDays, nofTraders, nofBuyers, nofSellers, nofBuys, nofSells, buyVolume, sellVolume, fdv, fdvMcRatio, inflowFdvRatio, outflowFdvRatio - Categories: sectors (e.g. ["AI", "Meme"]), includeSmartMoneyLabels - Asset class toggles (spot chains only, default false for both): includeStablecoins, includeNativeTokens. Set true only when the user asks for stablecoins/native tokens specifically. - Trader Type: traderType (string: "all", "sm", "whale", "public_figure") - Use "sm" ONLY when user explicitly asks for "smart money". - Use "whale" ONLY when user specifically asks for whales or large holders. - Use "public_figure" ONLY when user asks for KOLs or popular figures. - Data with "sm", "whale", and "public_figure" is sparse — "whale" and "public_figure" are even sparser than "sm". Pairing any of these with other filters (volume, liquidity, netflow) is likely to return no results. - Only pair traderType="sm/whale/public_figure" with other filters (volume, liquidity, netflow) if the user request explicitly requires it. - Instead of pairing this with other filters, you can rely on orderBy to sort by netflow, volume, liquidity, etc.
**CRITICAL WARNING:** 'priceChange' is NOT a valid filter. You cannot filter for "tokens up > 10%". Use `orderBy="priceChange"` instead.Sorting Options (orderBy field): Available fields (use with orderByDirection: "asc" or "desc"):
- **priceUsd**: Sort by token price
- **priceChange**: Sort by price change percentage
- **marketCapUsd**: Sort by market capitalization
- **volume**: Sort by total trading volume
- **buyVolume**: Sort by buy volume
- **sellVolume**: Sort by sell volume
- **netflow**: Sort by net flow (buys - sells)
- **liquidity**: Sort by DEX liquidity
- **nofTraders**: Sort by number of traders
(Note: Fields like `tokenAgeDays` or `outflowFdvRatio` are for FILTERING only, not sorting)
Default: orderBy="netflow", orderByDirection="desc"| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Complete token screener request with all parameters (flattened). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, and the description adds substantial non-obvious behavior on top: 25-results-per-page cap out of 1000s of tokens, 5-chain limit with silent trimming, Hyperliquid returning two sections (spot + perps) with a restricted filter set, silent fallback to defaults for unsupported filters, and timeout warnings. These are operational traits the agent could not get from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded and organized with headers, which helps, but it is bloated with material duplicated from structured fields: the entire Returns/columns list repeats the output schema, and the filter and sort enumerations largely mirror the input schema enums. That repetition dilutes the sections that actually add value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex single-object request with many nested filters, Hyperliquid branching, and pagination, the description covers everything an agent needs to call it correctly, including fallback behavior. The only drag is redundancy with the output schema rather than gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, yet the description still adds real meaning: the explicit warning that priceChange is not a valid filter (use orderBy instead), the distinction between filterable-only fields (tokenAgeDays, outflowFdvRatio) and sortable fields, sparsity warnings for smart-money cohorts, and perps-specific orderBy semantics like funding direction.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: screening token data across multiple chains with advanced filtering, plus a secondary framing as token discovery / finding trending tokens. This is clearly distinguishable from siblings like token_flows, token_who_bought_sold, or token_ohlcv, but it never names those siblings as alternatives, leaving the agent to infer when the screener wins over them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is explicit and rich: when to use traderType 'sm'/'whale'/'public_figure', when to exclude them, and a direct routing instruction ('use token_who_bought_sold before you report broad Smart Money buying'). The five worked examples show the intended call shapes. It stops short of stating when NOT to use this tool in favor of nansen_score_top_tokens or token_sectors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_flowsTracking token movementsARead-onlyInspect
Get hourly token-flow history for ONE holder segment over a date range. Use token_recent_flows_summary instead for an on-chain snapshot across ALL wallet categories.
Note: Using holder_segment: smart_money is not a good proxy for an overall market view. Use it only if user explicitly requests it, or to combine it with other non smart money data.
This is a more granular tool than token_recent_flows_summary and provides the TOTAL flows over the entire time frame broken down by segment.
Modes:
onchain_tokens(default): Analyze on-chain tokens by contract addressperps: Analyze Hyperliquid perpetual futures by symbol (chain auto-set to "hyperliquid") — supports native tokens
NOTE: Native tokens (0xeee…, So111…) cannot be queried in onchain_tokens mode. If a native placeholder address is supplied, this tool returns Hyperliquid perpetual-futures flows for that chain's native coin instead (e.g. hyperevm → HYPE, bnb → BNB, base → ETH) and prepends a prominent data-source warning. For native-token wallet-category flows on-chain, use token_recent_flows_summary.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | TokenFlowsRequest containing parameters and pagination settings |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | No | |
| rows | No | |
| chain | No | |
| date_to | No | |
| message | No | Notice or error text when the tool returns no data rows. |
| date_from | No | |
| pagination | No | |
| token_address | No | |
| holder_segment | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, and the description adds non-obvious behavior on top: mode-dependent chain handling (perps auto-sets chain to hyperliquid) and the native-token fallback, where a native placeholder address silently returns Hyperliquid perp flows with a data-source warning. That quirk would otherwise be a genuine surprise to a caller.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core scope, then organized under Modes/NOTE headings that are easy to scan. Minor waste: token_recent_flows_summary is referenced three times and the 'more granular ... TOTAL flows over the entire time frame' sentence partly restates the opening and sits in mild tension with 'hourly history'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be described, and the single top-level param is a nested request object fully documented in schema. What remains slightly unclear is how the 'hourly' series relates to the 'TOTAL flows over the entire time frame' claim, which an agent may need to resolve empirically.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3; the description earns above that by adding semantics the schema lacks — that perps mode auto-sets the chain, that native placeholder addresses are rejected in onchain_tokens mode, and the smart_money segment caveat. It stops short of explaining the from/to token vocabulary, which stays with the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb, resource, scope and granularity: 'Get hourly token-flow history for ONE holder segment over a date range.' It immediately names the sibling it is not (token_recent_flows_summary, which covers ALL wallet categories), so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing rules: use token_recent_flows_summary for an on-chain snapshot across all categories, use this one for one segment over time. It also states a when-not caveat ('smart_money is not a good proxy for an overall market view; use only if explicitly requested') and mode-selection guidance, which is exactly the when/when-not/alternatives bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_infoLoading token infoARead-onlyInspect
Get token information — spot on-chain details or Hyperliquid perpetual futures stats.
On-chain tokens mode (default): Returns token details (name, symbol, market cap, FDV, supply, deployment date, socials) and spot trading metrics (volume, buys/sells, buyers/sellers, holders, liquidity).
Perps mode: Returns Hyperliquid perp stats — mark price, funding, open interest, buy/sell pressure, trader participation.
Returns: Token information as markdown.
On-chain tokens fields:
- **Market Cap / FDV**: Market capitalization and fully diluted valuation
- **Circulating / Total Supply**: Token supply metrics
- **Deployed**: When the token was deployed
- **Volume (Total / Buy / Sell)**: Trading volume in USD
- **Buys / Sells**: Number of buy/sell transactions
- **Unique Buyers / Sellers**: Distinct trading addresses
- **Total Holders**: Number of token holders
- **Liquidity**: Available liquidity in USD
Perps fields:
- **Mark Price**: Current perp mark price
- **Price Change**: Change vs previous price
- **Max Leverage**: Maximum leverage offered for the perp on Hyperliquid (e.g. "40x")
- **Funding Rate (hourly/annualized)**: Current funding rate
- **Open Interest**: Total current open interest in USD
- **Volume (Total / Buy / Sell)**: Perp volume in USD
- **Net Flow (Buy - Sell)**: Buy/sell pressure in USD
- **Traders**: Number of tradersExample:
On-chain tokens (default mode):
{ "mode": "onchain_tokens", "chain": "ethereum", "tokenAddress": "0xa0b86a33e6b6c4b3add000b44b3a1234567890ab", "timeframe": "1d" }
Hyperliquid perps:
```
{
"mode": "perps",
"tokenAddress": "BTC",
"timeframe": "7d"
}
```Notes:
- On-chain tokens mode uses contract addresses
- Perps mode uses token symbols (e.g. BTC, ETH, HYPE)
- Both modes use the same timeframe parameter
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for token info — spot (on-chain token details) or perps (Hyperliquid stats). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, so the safety profile is covered. The description adds real behavioral detail beyond that: the mode-defaulting rule for symbol vs. contract-address input, the fact that both modes reuse the same timeframe parameter, and the markdown return format. The long field catalogs are largely duplicated by the existing output schema, so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening two-mode summary is well front-loaded and the examples are useful, but the two exhaustive field bullet lists also duplicate the output schema and could be dropped without loss. Roughly half the text is redundant reference material rather than decision-relevant guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with nested parameters, an output schema, and full annotation coverage, the description supplies what an agent needs to call it correctly: mode choice, input type per mode, timeframe reuse, and example payloads. The one wrinkle is labeling on-chain as the '(default)' mode while the schema explains that a symbol input actually defaults to perps; the schema resolves it but the description phrasing is slightly at odds.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including a mode description that already explains the symbol-to-perps default, so the baseline is 3. The description restates that mapping ('On-chain tokens mode uses contract addresses / Perps mode uses token symbols') and shows example values, which is helpful but adds little the schema does not already state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Get token information') and immediately splits it into two named modes, on-chain spot details vs. Hyperliquid perps stats. That is far clearer than the title alone, but it never distinguishes this tool from close siblings such as token_ohlcv, token_current_top_holders, or token_flows, which an agent would have to disambiguate on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete context for each mode: on-chain mode takes contract addresses and `chain`, perps mode takes symbols like BTC/ETH/HYPE, and both share `timeframe`. Worked JSON examples reinforce which mode to pick. What is missing is any exclusion or comparison against sibling token tools, so the agent gets clear context but no explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_jup_dcaChecking Jupiter DCA ordersARead-onlyInspect
Get Jupiter DCA (dollar-cost-averaging) orders opened against a Solana token, with deposit size, amount spent so far, amount accumulated and order status. Use this to see scheduled buying or selling pressure that has not hit the market yet; use token_dex_trades for trades already executed. Solana tokens only.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for Jupiter DCA orders on a Solana token (flattened). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered by structured data. The description adds the non-obvious chain restriction (Solana only) and clarifies that the data represents forward-looking, not-yet-executed pressure rather than historical fills, which prevents misinterpretation of the results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The core definition and returned fields come first, followed by the routing guidance and the chain constraint, so the most decision-relevant information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no prose elaboration, and the description correctly spends its budget on scope and alternatives instead. The only gaps are minor: no mention of pagination behavior despite a page parameter, and no reference to the sibling smart_traders_and_funds_dcas variant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every nested field — status enum, traderAddress, depositUsdValue range, smart-money labels, page — is documented in the schema itself. The description does not map its field mentions to filterable parameters or explain pagination, so it adds no semantic value beyond the schema, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get Jupiter DCA orders opened against a Solana token') and enumerates the returned fields (deposit size, amount spent, amount accumulated, status). It is immediately distinguishable from the adjacent token_dex_trades tool because it explicitly scopes itself to unexecuted, scheduled orders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit use case ('see scheduled buying or selling pressure that has not hit the market yet') and names the alternative for the complementary case ('use token_dex_trades for trades already executed'). It also states a hard boundary ('Solana tokens only'), leaving nothing to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_ohlcvLoading price dataARead-onlyInspect
Get OHLCV (Open, High, Low, Close, Volume) price data for a token with automatic interval resolution.
Supports EVM chains and Solana for on-chain tokens, AND Hyperliquid perpetual futures.
For Hyperliquid perps, pass chain="hyperliquid" and use the perp symbol as tokenAddress (e.g. "BTC", "HYPE" for native perps; "XYZ:ORDI" for XYZ-namespaced perps — prefix is normalized automatically).
YOU MUST USE THIS over general_search to get prices. general_search prices are delayed and often incorrect.
To get LATEST price set from to '5MIN_AGO' and to to 'NOW'.
Resolution is automatically calculated based on the date range
< 6 hours: 5 minutes
6 hours - 1 day: 15 minutes
1-3 days: 30 minutes
3-7 days: 60 minutes (1 hour)
7-90 days: Daily
90+ days: Weekly
Columns returned:
Interval Start: Timestamp of the start of the interval (datetime: YYYY-MM-DD HH:MM:SS)
Open: Opening price of the interval
High: Highest price of the interval
Low: Lowest price of the interval
Close: Closing price of the interval
Volume USD: Volume in USD of the interval
Additional columns (when includeMarketCap=true):
Open Market Cap: Opening market cap in USD
Close Market Cap: Closing market cap in USD
High Market Cap: Highest market cap in USD
Low Market Cap: Lowest market cap in USD
Example Usage:
Get OHLCV for WETH over the past week (auto-resolution):
{ "chain": "ethereum", "tokenAddress": "0xba5ddd1f9d7f570dc94a51479a000e3bce967196", "date": { "from": "7D_AGO", "to": "NOW" } }
Get OHLCV for WETH over 30 days (will use daily resolution):
```
{
"chain": "ethereum",
"tokenAddress": "0xba5ddd1f9d7f570dc94a51479a000e3bce967196",
"date": {
"from": "30D_AGO",
"to": "NOW"
}
}
```
Get OHLCV for WETH for last 20 minutes (will use 5 minute resolution):
```
{
"chain": "ethereum",
"tokenAddress": "0xba5ddd1f9d7f570dc94a51479a000e3bce967196",
"date": {
"from": "20MIN_AGO",
"to": "NOW"
}
}
```
Get OHLCV for the BTC Hyperliquid perp over 7 days:
```
{
"chain": "hyperliquid",
"tokenAddress": "BTC",
"date": {
"from": "7D_AGO",
"to": "NOW"
}
}
```| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Unified request model for TGM OHLCV endpoint (flattened). Resolution is automatically calculated based on the date range to keep responses at approximately 100 rows, preventing context overflow. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly/openWorld/non-destructive), yet the description adds genuinely useful behavior: the full auto-resolution table mapping date range to interval, and the perp-symbol normalization rule. The 'Columns returned' block overlaps with the existing output schema, and it says nothing about row limits/errors beyond the ~100-row hint in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded well with the critical routing warning, but the body is bloated: five near-identical JSON examples where three differ only in the date field, and a column enumeration that restates the output schema. Roughly a third of the text could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested-request tool with auto-resolution, this covers everything an agent needs: supported chains, perp symbol handling, the resolution table, output columns, and worked examples. With an output schema present, return-value explanation is a bonus rather than a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% but `chain` and `tokenAddress` carry no schema descriptions at all, so the description is the only source of their semantics (EVM/Solana vs. 'hyperliquid', address vs. perp symbol). It also supplies concrete date-token examples ('7D_AGO', '20MIN_AGO', 'NOW') beyond the vague '___-MM-DD' hint, though it never enumerates the accepted chain strings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get OHLCV ... price data for a token') and immediately delimits scope: EVM chains, Solana, and Hyperliquid perps. It also explicitly distinguishes itself from `general_search`, so an agent can route correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use guidance: 'YOU MUST USE THIS over general_search' with the reason (delayed/incorrect prices there), plus a concrete recipe for latest price (`from='5MIN_AGO'`, `to='NOW'`). It also names the exact condition for the Hyperliquid path (chain='hyperliquid', perp symbol in tokenAddress).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_pnl_leaderboardFinding top performersARead-onlyInspect
Upto 25 results (per page) of trader PnL for a token. Use the sorting and filtering options to narrow down the results.
Modes:
onchain_tokens(default): Analyze on-chain tokens by contract addressperps: Analyze Hyperliquid perpetual futures by symbol (chain auto-set to "hyperliquid") — supports native tokens
NOTE: This tool does not support native tokens (so11111111111111111111111111111111111111112, 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee) in onchain_tokens mode. Native tokens (by symbol - SOL, ETH, ARB etc) ARE fully supported in perps mode.
Returns: Trader performance rankings as markdown. Returns empty string if no trading data found.
Columns returned:
- **Address**: Trader's wallet address
- **Label**: Nansen label of the trader
- **Total PnL**: Combined realized and unrealized PnL (currency formatted, can be negative)
- **Total ROI**: Total return on investment as percentage (percentage formatted)
- **Realized PnL**: Profit/loss from completed trades (currency formatted, can be negative)
- **Realized ROI**: Return on investment from realized trades only (percentage formatted)
- **Unrealized PnL**: Current profit/loss on open positions (currency formatted, can be negative)
- **Unrealized ROI**: Return on investment from unrealized positions only (percentage formatted)
- **Token Holdings**: Current token quantity held (numeric formatted)
- **Holdings USD**: Current USD value of token holdings (currency formatted)
- **Token Price**: Current price per token (price formatted)
- **Peak Token Holdings**: Maximum token quantity ever held in the date range (numeric formatted)
- **Peak Holdings USD**: Maximum USD value ever held in the date range (currency formatted)
- **Still Holding %**: Percentage of peak holdings still held (percentage formatted)
- **Total Trades**: Number of trades executed by this address
- **Net Flow**: Net money flow - negative means net seller (currency formatted, can be negative)Sorting Options You can ONLY sort by pnl_usd_total, roi_percent_total, pnl_usd_realised, roi_percent_realised, pnl_usd_unrealised, roi_percent_unrealised, holding_amount, max_balance_held, nof_trades, still_holding_balance_ratio, netflow_amount
Filtering Options: 📋 List filters: trader_address, trader_address_label 📊 Numeric range filters: pnl_usd_realised, pnl_usd_unrealised, holding_amount, holding_usd, nof_trades, still_holding_balance_ratio, max_balance_held, max_balance_held_usd
Examples:
# On-chain tokens (default mode)
{ "mode": "onchain_tokens", "chain": "ethereum", "tokenAddress": "0xa0b86a33e6ba3e5b9e4b1b1b1b1b1b1b1b1b1b1b", "dateRange": {"from": "30D_AGO", "to": "NOW"}, "orderBy": "pnl_usd_total", "order_by_direction": "desc" }
# Hyperliquid perpetual futures
```
{
"mode": "perps",
"tokenAddress": "ETH",
"dateRange": {"from": "7D_AGO", "to": "NOW"}
}
```
# Advanced filtering: Find profitable active traders with significant holdings
```
{
"chain": "ethereum",
"tokenAddress": "0xa0b86a33e6ba3e5b9e4b1b1b1b1b1b1b1b1b1b1b",
"dateRange": {"from": "30D_AGO", "to": "NOW"},
"pnlUsdTotal": {"from": 1000, "to": 999999999},
"nofTrades": {"from": 5, "to": 100},
"holdingUsd": {"from": 10000, "to": 999999999},
"stillHoldingBalanceRatio": {"from": 0.1, "to": 1.0},
"orderBy": "roi_percent_total",
"order_by_direction": "desc"
}
```Notes: - Ranked by total PnL performance by default - Useful for identifying successful traders and copying strategies - Both ascending and descending sorts provide valuable insights (winners vs losers) - ONLY RETURNS TOP 25 RESULTS for the sort order. Hence the result is NEVER complete. - Make sure the sort order is relevant to your analysis as otherwise you will miss data.
** This tool does not support hyperevm as chain **
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Complete request for token PnL leaderboard (flattened). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description discloses the hard 25-row cap and warns the result is 'NEVER complete', that sort order determines which data you see, that an empty string is returned when no data exists, and the unsupported chains/assets. These are exactly the operational constraints annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Headers and examples make it scannable and the critical 25-result caveat is called out, but the sixteen-row column table restates what the output schema already provides and consumes a large share of the text. The size is defensible but not tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter wrapper around a rich nested request object, the description covers modes, limits, sorting, filtering, and failure behavior. The return-value enumeration is redundant given an output schema exists, but nothing essential an agent needs in order to call it correctly is missing, aside from sibling differentiation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns an extra point by enumerating the sortable fields, grouping filters into list vs numeric-range categories, and providing three worked request examples (including a combined-filter case). It loses a point because the prose filter list is shorter than the actual schema filter set (e.g., boughtAmount/soldAmount/nofBuys are omitted).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific resource and scope (trader PnL rankings for a given token, capped at 25 per page), and the two modes are spelled out. However, it never differentiates itself from close siblings such as wallet_pnl_for_token, smart_traders_and_funds_pnl_leaderboard, or hyperliquid_leaderboard, so an agent must infer which leaderboard tool fits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear mode-selection guidance ('onchain_tokens' by contract address vs 'perps' by symbol, chain auto-set to hyperliquid), an explicit native-token exclusion per mode, and a chain exclusion (hyperevm). What is missing is any explicit when-not-to-use or sibling routing, which is the main remaining gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_quant_scoresAnalyzing token quant scoresARead-onlyInspect
Get Nansen Score Indicators for a token - quantitative risk and reward signals.
Use this tool when assessing a token's risk/reward profile, evaluating buy/sell decisions, or when the user needs quantitative data to make trading decisions.
Returns: Token risk/reward indicators as markdown with interpretation guidance.
Token info:
- **Market Cap**: Current market cap in USD
- **Market Cap Group**: largecap (>$1B), midcap ($100M-$1B), or lowcap (<$100M)
- **Is Stablecoin**: Whether token is a stablecoin (some indicators don't apply to stablecoins)
Fields returned per indicator:
- **Score**: Signal classification (bullish/neutral/bearish for reward; low/medium/high for risk)
- **Signal**: Raw numeric value of the indicator
- **Percentile**: Rank vs same market cap group (0-100%)
- **Last Trigger**: Date when signal was last calculated
Indicator types:
- **Reward Indicators**: price-momentum, funding-rate, chain-fees, chain-tvl, protocol-fees, trading-range
- **Risk Indicators**: btc-reflexivity, liquidity-risk, token-supply-inflation, concentration-risk, cex-flowsNotes: - Not all indicators available for every token/chain combination - Percentile compares against same market cap group (largecap >$1B, midcap $100M-$1B, lowcap <$100M)
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request model for Nansen Score Indicators endpoint (flattened). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, and the description adds real behavioral context beyond them: per-indicator field semantics, the reward vs risk indicator taxonomy, and the important caveat that not all indicators are available for every token/chain pair. It omits any note on latency, coverage limits, or error behavior for unsupported tokens.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and the header-based structure aids scanning, but the long 'Returns' block partially duplicates the existing output schema, and the market cap group definition is repeated verbatim twice. Several lines could be collapsed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single nested parameter object, full schema coverage, and an output schema, the description is complete enough to invoke correctly — it covers scope, expected signals, and availability caveats. The duplicated return-format detail is surplus rather than missing, so the only gap is the absence of alternative-tool routing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both the chain and tokenAddress fields are already documented, including the Hyperliquid exclusion, so the schema carries the load. The description contributes adjacent meaning (market cap group thresholds, stablecoin applicability) but adds nothing about parameter usage itself, making baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource (get Nansen Score Indicators for a token) and states the domain (quantitative risk and reward signals). It is clearly distinguishable from list-oriented siblings such as nansen_score_top_tokens, though it never names a sibling explicitly to sharpen the boundary against token_technical_indicators.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it: assessing risk/reward, evaluating buy/sell decisions, or needing quantitative data for trading decisions. There is no when-not guidance and no pointer to an alternative tool for overlapping signals (e.g., token_technical_indicators), so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_recent_flows_summaryAnalyzing recent activityARead-onlyInspect
Get an on-chain flow snapshot across ALL wallet categories in one call. This tool supports native ETH on Ethereum and native SOL on Solana, and is the correct choice for standard lookbacks such as 1d.
Returns TOTAL token flows per segment: 1. Public Figures 2. Top PnL Traders 3. Whales 4. Smart Traders 5. Exchanges 6. Fresh Wallets
Inflow and outflow of tokens between the segments is CRITICAL in identifying token price trends.
The values provided are aggregated over the specific lookback period (last 5min, 1d, 7d etc) specified. If you have SPECIFIC date ranges in mind, use token_flows instead.
NOTE Use token_flows for more granular data as it can filter between exact dates and provides HOURLY breakdowns.
Returns: Categorized token flow analysis as markdown.
For each segment, returns:
- Flow amount in USD
- Ratio compared to average flow
- Number of wallets
Format: "{Segment} wallet flow of {amount} ({ratio}x average, from {count} wallets)"Notes: - Positive flow = net buying, negative flow = net selling - For Exchange Flow, positive means more inflow to exchanges, negative means more outflow from exchanges - Categorizes market participants by their historical behavior and characteristics - A wallet can be in more than one segment or perps cohort. Do not add segment flows, cohort exposures or wallet counts as if each segment has different wallets.
NOTE: Bitcoin is not supported. DO NOT use this tool for bitcoin.
Modes:
onchain_tokens(default): On-chain token flow intelligence across cohortsperps: Hyperliquid perpetual futures — returns position intelligence (current aggregate long/short/total USD by cohort: Smart Money, Whales, Public Figures). Native tokens (SOL, ETH, BTC etc) are fully supported in perps mode.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Complete request for token recent flows summary (flattened). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say read-only/open-world; the description adds the sign convention (positive = net buying, exchange inflow interpretation), the wallet-overlap caveat that segment flows must not be summed, the markdown output shape, and the Bitcoin exclusion. These are non-obvious behaviors an agent would otherwise get wrong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core capability and sibling contrast, with clear section headers. Some repetition (the `token_flows` alternative is stated twice, the Bitcoin exclusion twice) and heavy bolding add noise, but nothing is misleading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite an output schema already existing, the description supplies the interpretive context needed to use results correctly (segment definitions, sign semantics, aggregation caveat) plus mode and asset coverage. Nothing material is missing for a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description goes further by explaining what `mode` actually produces (on-chain cohort flows vs Hyperliquid long/short USD by cohort) and which assets are supported natively (ETH, SOL, but not BTC). It does not add much about `chain` or `lookbackPeriod` beyond what the schema enums already say.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (on-chain flow snapshot across all wallet categories) and enumerates the segments returned. It explicitly contrasts itself with the sibling `token_flows`, so an agent can choose without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing rules: use this for standard lookbacks such as 1d, use `token_flows` for exact date ranges or hourly breakdowns, and do not use it for Bitcoin. It also clarifies which mode to pick and what each mode returns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_sectorsListing token sectorsARead-onlyInspect
List valid token sectors for token discovery filters.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description is consistent with read-only behavior. The description adds only that it lists 'valid' sectors, implying a controlled vocabulary. It does not contradict annotations but also does not provide significant behavioral detail beyond what annotations already convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, succinct sentence that front-loads the verb and resource. There is no fluff, and every word contributes to clarity. It is an example of concise and well-structured tool documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and an existing output schema, the description is fully sufficient. It explains the tool's purpose, and the output schema provides the return structure. No additional information is needed for an agent to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is trivially 100%. Per the rubric, a baseline of 4 is appropriate for no parameters. The description does not need to explain parameters and does not attempt to, so it does not detract from the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: listing valid token sectors for token discovery filters. The verb 'List' and resource 'token sectors' are specific, and the purpose ties directly to token discovery, distinguishing it from sibling tools like token_discovery_screener that likely consume these sectors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that the tool's output is intended for token discovery filters, implying its use case. However, it does not explicitly mention when to use it versus alternatives or when not to use it, and it names no sibling tools. The context is sufficient for an agent to infer usage but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_technical_indicatorsLoading technical indicatorsARead-onlyInspect
Get a technical-analysis snapshot for a token: SMA(20/50/200), EMA(12/26), RSI(14), MACD(12,26,9), Bollinger Bands(20, 2σ), ATR(14), and rolling VWAP(20), computed from the last 260 closed candles at an explicit timeframe.
Supports EVM chains and Solana for on-chain tokens, AND Hyperliquid perpetual futures.
For Hyperliquid perps, pass chain="hyperliquid" and use the perp symbol as tokenAddress (e.g. "BTC", "HYPE" for native perps; "XYZ:ORDI" for XYZ-namespaced perps — prefix is normalized automatically).
YOU MUST USE THIS for technical analysis instead of computing indicators from raw token_ohlcv candles — it uses far more history (260 closed candles) and charting-platform conventions (SMA-seeded EMA, Wilder RSI/ATR, population-σ Bollinger).
Timeframes (explicit, no auto-resolution):
5m / 15m / 30m / 1h / 4h: intraday and short-horizon analysis
1d (default): swing/position horizon
1w: long-term trend
Output: a snapshot header (candles used, date range, last close, 5-candle price change) plus one row per indicator, each with a 5-candle trend delta so you can read direction, not just level:
SMA 20/50/200: values, price vs each, MA slopes
EMA 12/26: values, spread %, widening/narrowing
RSI(14): level, prior candle, 5-candle change
MACD(12,26,9): line/signal/histogram, rising/falling, candles since signal cross
Bollinger(20,2σ): bands, %B, bandwidth and its change
ATR(14): value and % of price (volatility), rising/falling
VWAP(20): value, price vs VWAP
Indicators without enough closed-candle history render as n/a (e.g. SMA200 on young tokens); the candle count used is always reported. VWAP is n/a on Hyperliquid 5m-1h timeframes (volume is NULL in those views) — use 4h or 1d for Hyperliquid VWAP.
Example Usage:
Daily technical snapshot for WETH:
{ "chain": "ethereum", "tokenAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "timeframe": "1d" }
4-hour snapshot for the BTC Hyperliquid perp:
```
{
"chain": "hyperliquid",
"tokenAddress": "BTC",
"timeframe": "4h"
}
```| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Request for the token_technical_indicators tool (explicit timeframe, always computed up to now — no date range). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly/openWorld; the description covers the substance: computation is over the last 260 closed candles with no date range, indicators lacking history render as n/a with the candle count always reported, and Hyperliquid perp symbols are accepted with automatic prefix normalization. These are non-obvious behaviors an agent cannot infer from schema or annotations, and none of it contradicts readOnlyHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The critical routing instruction and the Hyperliquid rule are front-loaded and the timeframe block is scannable, so structure is strong. The per-indicator 'Output' enumeration is somewhat long and partly duplicates the output schema that already exists, which costs some tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single nested-request parameter tool with an output schema, everything an agent needs is present: which chains/assets are supported, what happens on insufficient history, the Hyperliquid VWAP caveat, and a worked example. Even though the output schema exists, the return-value summary is accurate rather than contradictory.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is nominally 100%, but only the timeframe enum is documented in the schema; the description supplies the missing semantics for tokenAddress, explaining that on Hyperliquid it takes a perp symbol ('BTC', 'HYPE', 'XYZ:ORDI' with auto-normalized prefix), plus two concrete usage examples. This adds real meaning beyond the schema rather than restating it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource pair ('Get a technical-analysis snapshot for a token') and enumerates the exact indicators and their periods, so the agent knows precisely what will be computed. It also explicitly distinguishes itself from the closest sibling, token_ohlcv, by naming it as the thing not to use for indicator computation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the positive case ('YOU MUST USE THIS ... instead of computing indicators from raw token_ohlcv candles'), gives the reason (more history, charting-platform conventions), and maps timeframes to analysis horizons (5m–4h intraday, 1d swing, 1w long-term). It also flags the edge case where a different timeframe must be chosen (VWAP on Hyperliquid 5m–1h is n/a, use 4h or 1d).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_transfersTracking token transfersARead-onlyInspect
Get 25 token transfers (per page) for a specific token based on the sort order. Default: the last 24 hours, largest transfers first (orderBy "amount", "desc").
Direction rules (fromAddress = the sender, toAddress = the receiver):
"Transfers of X", "X's transfers", "track X", and "what is X doing" do not name a direction. For these, make two calls with the same address: one with fromAddress, one with toAddress. Sort both by amount. Each call then shows different transactions: the largest sent and the largest received.
Use only fromAddress when the user asks what X sent (outflows, withdrawals, "sent to", "moved to an exchange").
Use only toAddress when the user asks what X received (inflows, deposits, "where did X get").
Do not put the same address in fromAddress and toAddress of one call. The filters combine with AND, so the call returns only transfers from the wallet to itself (usually none).
If the user names no wallet, do not add an address filter.
NOTE: This tool does not support native tokens (so11111111111111111111111111111111111111112, 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee).
Columns returned:
Time: Timestamp when the transfer occurred (block_timestamp: ISO 8601 format)
From Label: Source address label (from_address_label: sender of tokens)
To Label: Destination address label (to_address_label: receiver of tokens)
From Address: Raw source address (from_address: hex address)
To Address: Raw destination address (to_address: hex address)
Amount: Quantity of tokens transferred (transfer_amount: numeric)
Value USD: USD value of the transfer at time of transaction (transfer_value_usd: currency formatted)
Type: Transfer category (transaction_type: DEX, CEX, transfer, etc.)
Tx Hash: Blockchain transaction hash for verification (transaction_hash)
Sorting Options (all fields support "asc"/"desc"): Available for sorting: timestamp, amount - amount (default): largest transfers first. Use it when the user asks about size, value, dollar amounts, the largest transfers, or whales. - timestamp: latest transfers first. Use it only when the user asks for the latest transfers or for a time order.
Examples:
# Basic request (largest transfers in the last 24 hours, the default sort)
{ "chain": "ethereum", "tokenAddress": "0xa0b86a33e6b6c4b3add000b44b3a1234567890ab", "dateRange": {"from": "24H_AGO", "to": "NOW"}, "orderBy": "amount", "order_by_direction": "desc" }
# Latest transfers first (only when the user asks for the latest)
```
{
"chain": "ethereum",
"tokenAddress": "0xa0b86a33e6b6c4b3add000b44b3a1234567890ab",
"dateRange": {"from": "24H_AGO", "to": "NOW"},
"orderBy": "timestamp",
"order_by_direction": "desc"
}
```
# Smart money only filter (largest transfers first)
```
{
"chain": "ethereum",
"tokenAddress": "0xa0b86a33e6b6c4b3add000b44b3a1234567890ab",
"dateRange": {"from": "7D_AGO", "to": "NOW"},
"transferOriginCategories": ["all_transfers"],
"onlySmartTradersAndFunds": true,
"orderBy": "amount",
"order_by_direction": "desc"
}
```
# Filter by DEX only with minimum transfer value (USD)
```
{
"chain": "ethereum",
"tokenAddress": "0xa0b86a33e6b6c4b3add000b44b3a1234567890ab",
"dateRange": {"from": "24H_AGO", "to": "NOW"},
"transferOriginCategories": ["dex"],
"transferValueUsd": {"from": 1000}
}
```
# One wallet, no direction named: make two calls, both sorted by amount
# Call 1: what the wallet sent
```
{
"chain": "base",
"tokenAddress": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"dateRange": {"from": "7D_AGO", "to": "NOW"},
"fromAddress": "0x2b060b9c89B8aD04e5E1fD40F1f327e41DD32c72",
"orderBy": "amount",
"order_by_direction": "desc"
}
```
# Call 2: what the wallet received
```
{
"chain": "base",
"tokenAddress": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"dateRange": {"from": "7D_AGO", "to": "NOW"},
"toAddress": "0x2b060b9c89B8aD04e5E1fD40F1f327e41DD32c72",
"orderBy": "amount",
"order_by_direction": "desc"
}
```Available Filters:
Address Filters:
fromAddress (str or list[str], optional): the wallet(s) that SENT the tokens Example: "0x2b060b9c89B8aD04e5E1fD40F1f327e41DD32c72" Example: ["0xaddr1", "0xaddr2"]
toAddress (str or list[str], optional): the wallet(s) that RECEIVED the tokens See the Direction rules at the top.
Transfer Origin Categories:
transferOriginCategories (list[str]): List of transfer types to include Possible values: ['dex', 'cex', 'non_exchange_transfers', 'all_transfers'] Default: ['all_transfers'] Examples:
['dex'] - only DEX transfers
['cex'] - only CEX transfers
['dex', 'cex'] - both DEX and CEX
['non_exchange_transfers'] - only non-exchange transfers
['all_transfers'] - all types (default)
Smart Money Filter:
onlySmartTradersAndFunds (bool): Only show smart money transfers (default: false) When true, filters to show only transfers involving profitable addresses
Numeric Range Filter:
transferValueUsd (object, optional): Filter by USD value of transfer Format: {"from": X, "to": Y} or {"from": X} or {"to": Y}
Specify only
fromfor minimum bound (no maximum)Specify only
tofor maximum bound (no minimum)Specify both for a bounded range Example: {"from": 1000} - only transfers worth at least $1,000 USD Example: {"to": 50000} - only transfers up to $50,000 USD Example: {"from": 1000, "to": 50000} - transfers between $1,000 and $50,000 USD Note: This filters by the USD value of the transfer at time of transaction
Notes: - Use fromAddress/toAddress for a specific wallet (see Direction rules) - Use transferOriginCategories to control which transfer origins are included - Smart Money filter shows only transfers involving profitable addresses (definition of Smart Money) - transferValueUsd filters by USD value at time of transaction
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Complete request for token transfers (flattened). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/destructive annotations, the description discloses page size (25), the 24h default window, the 365-day clamp with the effective range reported in the response, the AND-combination of from/to filters, and the unsupported native-token addresses. These are exactly the operational facts the annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The direction rule is correctly front-loaded, but the body is padded: five full JSON examples, a 'Columns returned' block that duplicates the existing output schema, and a closing 'Notes' section that restates filters already documented above. It is helpful but noticeably longer than needed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a token-level transfer query with a nested request object, all decision-relevant information is present: defaults, direction semantics, filter behaviors, limits, and unsupported inputs. With an output schema present and 100% schema coverage, nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description still adds real meaning: the sender/receiver semantics of fromAddress vs toAddress with worked examples, the enumerated transferOriginCategories values, the open-ended {from}/{to} shape of transferValueUsd, and the amount-vs-timestamp sorting intent. This is meaningfully more than the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource ('Get 25 token transfers (per page) for a specific token') plus the default sort and window, so the agent immediately knows the scope. It never names a sibling (e.g. token_flows, token_dex_trades, address_transactions) to disambiguate, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Direction rules are explicit and exhaustive: when to use fromAddress only, toAddress only, and when to issue two calls for directionless queries like 'X's transfers'. It also states when to switch from amount to timestamp sorting, and what to do when no wallet is named, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_who_bought_soldFinding recent tradersARead-onlyInspect
Get net buyers or net sellers of a token on DEX (Decentralised Exchanges) only.
Use this tool to find out WHO is buying or selling a token (on DEX) AND then you can check if they are liquidating profits or accumulating more.
Returns: Aggregated buyer/seller activity as markdown. Returns empty string if no trading data found.
Columns returned:
- **Address**: Trader's wallet address
- **Label**: Nansen label of the address
- **Bought Token Volume**: Total quantity of tokens purchased
- **Sold Token Volume**: Total quantity of tokens sold
- **Total Token Volume**: Bought plus sold
- **Net Bought / Net Sold Token Volume**: Bought minus sold for BUY results, or sold minus bought for SELL results
- **Bought Volume USD**: USD value of all token purchases
- **Sold Volume USD**: USD value of all token sales
- **Total Volume USD**: Bought plus sold
- **Net Bought / Net Sold Volume USD**: Bought minus sold for BUY results, or sold minus bought for SELL resultsSorting Options: Sort ASC or DESC by net_token_volume (default: biggest net buyers or sellers first), token_trade_volume (total volume: most active traders, such as market-making bots), bought_token_volume, or sold_token_volume.
Notes: - buy_or_sell parameter filters for "BUY" (net buyers) or "SELL" (net sellers), decided by net token amount - Net USD volume can be negative while net token volume is zero or positive, because USD is priced per trade - min_trade_volume_usd applies to the requested side: bought USD for BUY, sold USD for SELL - Machine-readable rows: token_trade_volume / trade_volume_usd are total volume (bought + sold); net_token_volume / net_volume_usd are net volume. - Aggregates all trading activity within the specified time range
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Complete request for token who bought/sold (flattened). |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | No | |
| chain | No | |
| date_to | No | |
| message | No | Notice or error text when the tool returns no data rows. |
| date_from | No | |
| pagination | No | |
| buy_or_sell | No | |
| token_address | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, non-destructive, open-world profile, so the description is free to add operational detail, and it does: aggregation across the requested time range, empty-string return on no data, and the caveat that net USD can go negative while net token volume is zero or positive. It stops short of stating auth/entitlement requirements or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the WHO framing are front-loaded, and the notes/sorting blocks are scannable. The 11-row column listing is the weakest part, since an output schema exists and much of that block restates field names, though the net-volume interpretation adds genuine value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested, single-request analytics tool, the description covers what is returned, how sorting and side filtering work, and two non-obvious edge cases (negative net USD, side-specific volume threshold). The only material omission is pagination semantics for the 'page' field.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so baseline is 3, but the description adds real meaning: buy_or_sell is decided by net token amount, min_trade_volume_usd applies to the requested side (bought USD for BUY, sold USD for SELL), and the sort options are explained in terms of trader behavior. It does not explain the 'page' parameter, leaving one gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Get net buyers or net sellers of a token on DEX only,' which tells an agent exactly what dataset comes back. The DEX-only scoping further narrows it against the broader trade/transfer siblings. It does not name a specific sibling (e.g., token_dex_trades or token_current_top_holders) to distinguish itself explicitly, keeping it at 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this tool to find out WHO is buying or selling a token (on DEX) AND then you can check if they are liquidating profits or accumulating more' gives an actionable intent, and 'on DEX only' sets a boundary. However, there is no explicit statement of when NOT to use it or which sibling to pick for raw trade-level, holder, or CEX data; an agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transaction_lookupLooking up transaction detailsCRead-onlyInspect
Get comprehensive transaction details including token transfers.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | all | |
| transaction_hash | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, covering the safety profile. The description adds the useful detail that token transfers are included in the returned details, but it does not disclose any additional behavioral traits such as missing transaction handling or chain-scoping effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It earns its place but is slightly too sparse to fully compensate for missing usage and parameter context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value details are less necessary, but the description still lacks when-to-use guidance and parameter semantics. For a tool with dozens of siblings and an undocumented chain parameter, this is not complete enough for reliable selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate, but it does not explain what transaction_hash or chain mean or how they affect results. 'transaction_hash' is somewhat self-explanatory, and 'chain' has a default of 'all', but the description gives no parameter-level guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('Get') and names the resource ('transaction details') with a specific scope ('comprehensive ... including token transfers'). It is distinguishable from address- and token-focused siblings, but it does not explicitly mention lookup by transaction hash, which leaves slight ambiguity versus address_transactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool instead of alternatives such as address_transactions, token_transfers, or prediction_market_lookup. There is no stated context, prerequisite, or exclusion, so an agent must infer when this is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wallet_pnl_for_tokenCalculating token performanceARead-onlyInspect
Get PnL stats for a specific token traded by the input address during a specific date range. Use this tool for analysing the performance of the wallet for the specific token over a time period.
Chain: pass 'hyperliquid' for a perp coin — there tokenAddress is the perp
SYMBOL (e.g. 'BTC', 'HYPE', 'xyz:CL'), not a contract address. Every other
chain expects a token contract address.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Complete request for wallet PnL for token (flattened). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive, open-world safety, so the description's added value is the chain semantics: on 'hyperliquid' the tokenAddress is a perp symbol, not a contract address, with concrete examples. That is a real behavioral constraint an agent would otherwise get wrong, though it largely restates the schema's chain field.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose in sentence one, usage in sentence two, then the non-obvious chain caveat set off as its own block. Every sentence earns its place; the only redundancy is repeating the schema's chain wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. Combined with a fully described nested request object, the description supplies the one thing the schema can't convey contextually — that perp lookups take a symbol. Minor gap: no statement of error behavior for unsupported chains or non-EVM wallets.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents walletAddress, tokenAddress, dateRange tokens and the showRealized/hyperliquid interaction. The description's chain/tokenAddress note duplicates the schema's chain field verbatim and adds no formatting or edge-case detail beyond it, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get PnL stats for a specific token traded by the input address') plus the scoping dimensions (token + date range). It differentiates implicitly from wallet_pnl_summary by emphasizing the single-token focus, but never names the sibling, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives an implied use case ('analysing the performance of the wallet for the specific token over a time period'), but there is no explicit when-not guidance and no mention of wallet_pnl_summary or token_pnl_leaderboard as alternatives. Usage is inferable rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wallet_pnl_summaryAnalyzing wallet performanceARead-onlyInspect
Get aggregate stats of overall realized PnL for the input address. For Hyperliquid perp traders (chain='hyperliquid'), includes realized PnL from fills plus a current unrealized snapshot of open positions. For chain='all'/'evm' on an EVM address, reports spot/on-chain and Hyperliquid perp results as separate sections (never summed). For a single named chain, this tool covers realized PnL only. Use this tool for analysing the performance of the wallet over a time period.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Complete request for wallet PnL summary (flattened). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a read-only, non-destructive, open-world operation. The description adds meaningful behavioral detail beyond the annotations: Hyperliquid includes realized PnL from fills plus an unrealized snapshot, EVM/all results are reported in separate sections and never summed, and single named chains cover realized PnL only. These aggregation semantics are important for correct interpretation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main purpose and then adds chain-specific behavior in readable sentences. Some chain details duplicate the schema, but they still help orient the agent before invoking the tool. It is appropriately sized for a tool with multiple chain-dependent behaviors.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the nested input schema, full parameter description coverage, annotations, and the presence of an output schema, the description is complete enough for correct invocation. It covers the wallet address, time-period purpose, and chain-dependent PnL scope without needing to explain return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the nested request, walletAddress, dateRange, and chain parameters are already well documented in the input schema. The description largely restates the chain behavior that the schema also explains, adding little parameter-specific syntax or format detail beyond the structured fields. Baseline 3 is appropriate when the schema carries the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: aggregate realized PnL statistics for an input wallet address over a date range. It also distinguishes the tool's scope from token-specific PnL queries by emphasizing 'overall realized PnL' and explains the different chain behaviors. This is enough for an agent to understand what the tool does versus sibling tools such as wallet_pnl_for_token.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this tool for analyzing wallet performance over a time period, and it gives clear context for different chain values. It does not name alternatives or state when not to use this tool, but the intended usage context is clear.
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 tool update
- Changed
token_who_bought_sold8 fields changed- changed
Input schema / properties / request / properties / buy_or_sell / descriptionPrevious value: -"Transaction type for buyers or sellers analysis"New value: +"Select net buyers (BUY) or net sellers (SELL)" - added
Input schema / properties / request / properties / min_trade_volume_usd / descriptionAdded value: +"Minimum USD volume on the requested side (bought for BUY, sold for SELL)." - changed
Input schema / properties / request / properties / orderBy / anyOfPrevious value: -[ - { - "enum": [ - "token_trade_volume", - "bought_token_volume", - "sold_token_volume" - ], - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "net_token_volume", + "token_trade_volume", + "bought_token_volume", + "sold_token_volume" + ], + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / request / properties / orderBy / descriptionPrevious value: -"Sort field. Pass an exact value above or None for default ('token_trade_volume'). USD volume fields are disabled; native token volume is preferred."New value: +"Sort field. The default net_token_volume (bought minus sold for BUY, sold minus bought for SELL) ranks the biggest net buyers or sellers. token_trade_volume is total volume (bought plus sold): use it to find the most active traders. USD volume fields are disabled; native token volume is preferred." - added
Output schema / properties / rows / items / properties / net_token_volumeAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Net token volume: bought minus sold for BUY, or sold minus bought for SELL.", + "title": "Net Token Volume" +} - added
Output schema / properties / rows / items / properties / net_volume_usdAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Net USD volume: bought minus sold for BUY, or sold minus bought for SELL. Can be negative while net token volume is positive, because USD is priced per trade.", + "title": "Net Volume Usd" +} - changed
Output schema / properties / rows / items / properties / token_trade_volume / descriptionPrevious value: -"Gross token volume (bought + sold)."New value: +"Total token volume (bought + sold)." - changed
Output schema / properties / rows / items / properties / trade_volume_usd / descriptionPrevious value: -"Gross USD volume (bought + sold)."New value: +"Total USD volume (bought + sold)."
Related MCP Connectors
Blockchain analytics API for AI agents. Smart Money signals, wallet profiling, token analytics.
Pay-per-call on-chain data for AI agents: token, wallet, risk, whale, NFT, tx. No API keys.
Solana onchain intelligence for AI agents: wallet risk, due-diligence, perps funding, smart money.
Token risk, wallet profiles, OFAC screening, whale trades on 6 chains. x402, USDC per call.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceKOL, smart money & whale wallets API on Solana, BNB, Base, ETH: Wallet tracker, LeaderboardMIT
- AlicenseNot gradedqualityBmaintenanceEnables any AI agent to query Solana wallets read-only — recent swaps, holdings with USD value, PnL, trading style, and live scored swaps across top wallets — without ever asking for private keys. Also pushes notable moves to Telegram.2,388 npmMIT

Vike Data MCP Serverofficial
AlicenseNot gradedqualityCmaintenanceEnables AI agents to query crypto data through a hosted remote endpoint: on-chain wallet and token analytics across Ethereum, BNB Chain, Base and HyperEVM, Hyperliquid perp positions and market stats, cohort-based long/short positioning, and Polymarket markets and smart-money flows. Connects via OAuth 2.1 or an API key header from Claude, Cursor, VS Code, and other MCP clients.MIT- AlicenseAqualityAmaintenanceEnables AI assistants to access real-time on-chain crypto analytics, whale tracking, and market metrics through natural language queries. It provides access to over 245 endpoints for comprehensive data analysis of assets like Bitcoin, Ethereum, and stablecoins.775 npm8MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.