Rank a token's transfer senders or recipients by the selected metric. Returns ranked transfer counterparties with transfer counts, token/USD amounts, first/last times and available labels. Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0144 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
Up to 0.0144 credits / call
The final charge is based on confirmed usage. Unused reserved credits return to your available balance.
Surf
Top Transfer Counterparties
Rank a token's transfer senders or recipients by the selected metric. Returns ranked transfer counterparties with transfer counts, token/USD amounts, first/last times and available labels. Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0144 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
You receive
Returns ranked transfer counterparties with transfer counts, token/USD amounts, first/last times and available labels. Sender and recipient rankings describe the selected side and metric. They do not identify unique people or prove current balances.
Start with your task
Find wallets that sent or received [coin name or public coin page link] most often over [time period]. If I have not said senders or receivers, or several matches appear, ask me to choose. Show transfer counts; dollar values can lag and wallet records do not confirm real people.
Inputs & outputs
Inspect the current inputs, availability, and maximum charge before starting.
Input schema
Input schema
Field / Path
Type
Requirement
Meaning
queryParamsqueryParams
object
Required
Required fields
address, chain, direction
chainqueryParams.chain
string
Required
Chain the token contract is deployed on. Example: ethereum.
Options
ethereum, base, bsc, arbitrum, tron
limitqueryParams.limit
integer
Optional
Results per page. Defaults to 20.
Default
20
Minimum
1
Maximum
100
metricqueryParams.metric
string
Optional
Ranking key: count = transfer frequency, amount = decimal-adjusted token sum, amount_usd = USD value sum (USD lags ~3 days; unreliable for recent windows). Defaults to "count".
Default
count
Options
count, amount, amount_usd
offsetqueryParams.offset
integer
Optional
Pagination offset. Defaults to 0.
Default
0
Minimum
0
Maximum
9007199254740991
addressqueryParams.address
string
Required
Token CONTRACT ADDRESS (0x-hex for EVM; Tron accepts base58 T... or 0x-hex). Not a ticker — resolve a symbol via GET /v1/search/token?q={symbol}&chain={chain} and use a returned address whose chain is supported by this endpoint. Example: 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.
Minimum length
1
includequeryParams.include
string
Optional
Comma-separated enrichments. labels attaches an entity label per counterparty. Example: labels.
Minimum length
1
directionqueryParams.direction
string
Required
Ranking direction: to = top receivers, from = top senders. Example: to.
Options
to, from
time_rangequeryParams.time_range
string
Optional
Look-back window (hard 90d cap). Defaults to "7d".
Default
7d
Options
1d, 7d, 30d, 90d
exclude_labelsqueryParams.exclude_labels
string
Optional
Comma-separated entity categories to drop (best-effort): cex, router, amm, bridge. Results may be fewer than limit when top counterparties are infrastructure. Example: cex,router.
Minimum length
1
View raw JSON
{
"type": "object",
"required": [
"queryParams"
],
"properties": {
"queryParams": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"address",
"chain",
"direction"
],
"~standard": {
"vendor": "zod",
"version": 1,
"jsonSchema": {}
},
"properties": {
"chain": {
"enum": [
"ethereum",
"base",
"bsc",
"arbitrum",
"tron"
],
"type": "string",
"description": "Chain the token contract is deployed on. Example: ethereum."
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Results per page. Defaults to 20."
},
"metric": {
"enum": [
"count",
"amount",
"amount_usd"
],
"type": "string",
"default": "count",
"description": "Ranking key: count = transfer frequency, amount = decimal-adjusted token sum, amount_usd = USD value sum (USD lags ~3 days; unreliable for recent windows). Defaults to \"count\"."
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Pagination offset. Defaults to 0."
},
"address": {
"type": "string",
"minLength": 1,
"description": "Token CONTRACT ADDRESS (0x-hex for EVM; Tron accepts base58 T... or 0x-hex). Not a ticker — resolve a symbol via GET /v1/search/token?q={symbol}&chain={chain} and use a returned address whose chain is supported by this endpoint. Example: 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48."
},
"include": {
"type": "string",
"minLength": 1,
"description": "Comma-separated enrichments. labels attaches an entity label per counterparty. Example: labels."
},
"direction": {
"enum": [
"to",
"from"
],
"type": "string",
"description": "Ranking direction: to = top receivers, from = top senders. Example: to."
},
"time_range": {
"enum": [
"1d",
"7d",
"30d",
"90d"
],
"type": "string",
"default": "7d",
"description": "Look-back window (hard 90d cap). Defaults to \"7d\"."
},
"exclude_labels": {
"type": "string",
"minLength": 1,
"description": "Comma-separated entity categories to drop (best-effort): cex, router, amm, bridge. Results may be fewer than limit when top counterparties are infrastructure. Example: cex,router."
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
Result schema
Output fields have not been documented yet.
Additional notes
Rank a token's transfer senders or recipients by the selected metric
How to use this Tool
Use the deployed input fields below. Required fields must be supplied; optional filters narrow the result.
queryParams.chain (Required): Chain the token contract is deployed on. Example: ethereum.
queryParams.limit (Optional): Results per page. Defaults to 20.
queryParams.metric (Optional): Ranking key: count = transfer frequency, amount = decimal-adjusted token sum, amount_usd = USD value sum (USD lags ~3 days; unreliable for recent windows). Defaults to "count".
queryParams.offset (Optional): Pagination offset. Defaults to 0.
queryParams.address (Required): Token CONTRACT ADDRESS (0x-hex for EVM; Tron accepts base58 T... or 0x-hex). Not a ticker — resolve a symbol via GET /v1/search/token?q={symbol}&chain={chain} and use a returned address whose chain is supported by this endpoint. Example: 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.
queryParams.include (Optional): Comma-separated enrichments. labels attaches an entity label per counterparty. Example: labels.
queryParams.direction (Required): Ranking direction: to = top receivers, from = top senders. Example: to.
queryParams.time_range (Optional): Look-back window (hard 90d cap). Defaults to "7d".
queryParams.exclude_labels (Optional): Comma-separated entity categories to drop (best-effort): cex, router, amm, bridge. Results may be fewer than limit when top counterparties are infrastructure. Example: cex,router.
What this Tool returns
Returns ranked transfer counterparties with transfer counts, token/USD amounts, first/last times and available labels.
Response fields and how to read them
The table follows the official response contract, including nested fields and useful response metadata. [] denotes an array item. Required means required within its parent object, not that a conditional parent always exists. A nullable type permits null; an optional field can be absent. Use the documented conditions below to distinguish missing, empty and zero values. Units and reporting windows apply only where explicitly documented.
data.[].amount_usd
number; Optional within parent; format: double
Summed USD value. Absent when no transfers in the window are USD-priced.
data.[].counterparty_address
string; Required within parent
Receiver (direction=to) or sender (direction=from) address.
data.[].first_transfer_at
integer; Required within parent; format: int64
Unix seconds of the first transfer seen in the window.
data.[].label
object; Optional within parent
Entity label for this counterparty. Only present when include=labels.
data.[].label.address
string; Required within parent
Wallet address
data.[].label.entity_name
string; Optional within parent
Name of the associated entity like `Binance` or `Aave`
data.[].label.entity_type
string; Optional within parent
Type of entity like `exchange`, `fund`, or `whale`
data.[].label.labels
array | null; Required within parent
List of labels assigned to this address
data.[].label.labels.[].confidence
number; Optional within parent; format: double
Confidence score 0.0-1.0
data.[].label.labels.[].label
string; Required within parent
Human-readable label for this address like `Binance Hot Wallet`
data.[].last_transfer_at
integer; Required within parent; format: int64
Unix seconds of the last transfer seen in the window.
data.[].transfer_count
integer; Required within parent; format: int64
Number of transfers in the window.
meta.cached
boolean; Required within parent
Whether this response was served from cache
meta.credits_used
integer; Required within parent; format: int64
Credits deducted for this request
meta.empty_reason
string; Optional within parent
Hint explaining why the data array is empty, when applicable
meta.has_more
boolean; Optional within parent
Whether more items may exist beyond this response. For offset-paged endpoints, continue with a larger offset. For time-series endpoints without offset/cursor controls, true means the requested time range hit an upstream cap; narrow from/to to continue. Omitted when exhaustion cannot be proven.
meta.limit
integer; Required within parent; format: int64
Maximum number of items returned in this response
meta.offset
integer; Required within parent; format: int64
Number of items skipped (pagination offset)
meta.total
integer; Optional within parent; format: int64
Total number of matching items (before pagination). Omitted when total is unknown.
meta.watermark
integer; Optional within parent; format: int64
Warehouse watermark (Unix seconds) this response was computed at, on warehouse-backed endpoints (e.g. Hyperliquid /trades/aggregate) — rows up to this time come from the warehouse, newer rows from the live tail. Omitted elsewhere.
Coverage, units and freshness
Sender and recipient rankings describe the selected side and metric. They do not identify unique people or prove current balances.
Inspect any returned observation time, cache status, watermark, pagination and errors using their documented meanings. A successful request alone does not establish complete coverage. Where no freshness or completeness guarantee is documented, treat it as unknown. Saved Examples are historical and viewing them does not refresh data or execute a new call.
Data source and references
Surf supplies this endpoint through its Data API. Response contract and deployed Tool inputs reviewed on 2026-10-03 against official OpenAPI v0.2.102. This is a contract review date, not a data observation time. Coverage depends on the selected endpoint and request.
Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0144 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
Find the most frequent senders
Show wallets that sent [USD Coin] most often over the past [7 days].
Use [public coin page link] to identify the coin, then show the wallets that received its most transfers over [the past 30 days].
Find wallets that sent or received [coin name or public coin page link] most often over [time period]. If I have not said senders or receivers, or several matches appear, ask me to choose. Show transfer counts; dollar values can lag and wallet records do not confirm real people.
Rank by total coins received
For [Tether USD], rank wallets by the total coins they received over [the past 30 days]. Explain if dollar values are missing or delayed.
Questions about this tool.
Inputs, results and details to know before running it.
queryParams.chain (Required): Chain the token contract is deployed on. Example: ethereum. queryParams.limit (Optional): Results per page. Defaults to 20. queryParams.metric (Optional): Ranking key: count = transfer frequency, amount = decimal-adjusted token sum, amount_usd = USD value sum (USD lags ~3 days; unreliable for recent windows). Defaults to "count". queryParams.offset (Optional): Pagination offset. Defaults to 0. queryParams.address (Required): Token CONTRACT ADDRESS (0x-hex for EVM; Tron accepts base58 T... or 0x-hex). Not a ticker — resolve a symbol via GET /v1/search/token?q={symbol}&chain={chain} and use a returned address whose chain is supported by this endpoint. Example: 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48. queryParams.include (Optional): Comma-separated enrichments. labels attaches an entity label per counterparty. Example: labels. queryParams.direction (Required): Ranking direction: to = top receivers, from = top senders. Example: to. queryParams.time_range (Optional): Look-back window (hard 90d cap). Defaults to "7d". queryParams.exclude_labels (Optional): Comma-separated entity categories to drop (best-effort): cex, router, amm, bridge. Results may be fewer than limit when top counterparties are infrastructure. Example: cex,router.
Returns ranked transfer counterparties with transfer counts, token/USD amounts, first/last times and available labels.
Sender and recipient rankings describe the selected side and metric. They do not identify unique people or prove current balances.
Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0144 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
Ask your agent to Rank a token's transfer senders or recipients by the selected metric. Provide the required inputs above. If Toolmu is already connected, reuse that connection; otherwise use the setup instructions on this page. Before a paid execution, the agent must read the current Tool contract and check availability, the credit ceiling, balance, budget and your authorization. It should then execute the Tool and explain the returned fields and limitations.
Inspect any returned observation time, cache status, watermark, pagination and errors using their documented meanings. A successful request alone does not establish complete coverage. Where no freshness or completeness guarantee is documented, treat it as unknown. Saved Examples are historical and viewing them does not refresh data or execute a new call.