Inspect a wallet's assets, labels, NFT holdings and active chains. Returns available wallet balances, token holdings, NFT holdings, recorded labels, active chains and optional approvals. 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
Wallet Analyzer: Aggregated Wallet Detail · Surf
Inspect a wallet's assets, labels, NFT holdings and active chains. Returns available wallet balances, token holdings, NFT holdings, recorded labels, active chains and optional approvals. 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 available wallet balances, token holdings, NFT holdings, recorded labels, active chains and optional approvals. Approvals are opt-in. Asset sections are bounded and may fail independently; retain errors rather than interpreting missing data as zero holdings.
Start with your task
Please check this public wallet: [wallet page link from Etherscan, Solscan or another explorer]. Explain its available assets in plain language.
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
chainqueryParams.chain
string
Optional
Chain filter for tokens, nft, and approvals. When omitted, inferred from address format: 0x addresses query all EVM chains, base58 addresses query Solana. Example: ethereum.
Comma-separated sub-resources to include. Valid: balance, tokens, labels, nft, approvals. The active_chains field is always returned. approvals is opt-in (not in default) as it triggers additional upstream calls. Example: balance,labels,approvals. Defaults to "balance,tokens,labels,nft".
Default
balance,tokens,labels,nft
Minimum length
1
addressqueryParams.address
string
Required
Wallet address (0x hex for EVM, base58 for Solana). Example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045.
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"
],
"~standard": {
"vendor": "zod",
"version": 1,
"jsonSchema": {}
},
"properties": {
"chain": {
"enum": [
"ethereum",
"polygon",
"bsc",
"avalanche",
"arbitrum",
"optimism",
"fantom",
"base",
"solana"
],
"type": "string",
"description": "Chain filter for tokens, nft, and approvals. When omitted, inferred from address format: 0x addresses query all EVM chains, base58 addresses query Solana. Example: ethereum."
},
"fields": {
"type": "string",
"default": "balance,tokens,labels,nft",
"minLength": 1,
"description": "Comma-separated sub-resources to include. Valid: balance, tokens, labels, nft, approvals. The active_chains field is always returned. approvals is opt-in (not in default) as it triggers additional upstream calls. Example: balance,labels,approvals. Defaults to \"balance,tokens,labels,nft\"."
},
"address": {
"type": "string",
"minLength": 1,
"description": "Wallet address (0x hex for EVM, base58 for Solana). Example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045."
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
Result schema
Output fields have not been documented yet.
Additional notes
Inspect a wallet's assets, labels, NFT holdings and active chains
How to use this Tool
Use the deployed input fields below. Required fields must be supplied; optional filters narrow the result.
queryParams.chain (Optional): Chain filter for tokens, nft, and approvals. When omitted, inferred from address format: 0x addresses query all EVM chains, base58 addresses query Solana. Example: ethereum.
queryParams.fields (Optional): Comma-separated sub-resources to include. Valid: balance, tokens, labels, nft, approvals. The active_chains field is always returned. approvals is opt-in (not in default) as it triggers additional upstream calls. Example: balance,labels,approvals. Defaults to "balance,tokens,labels,nft".
queryParams.address (Required): Wallet address (0x hex for EVM, base58 for Solana). Example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045.
What this Tool returns
Returns available wallet balances, token holdings, NFT holdings, recorded labels, active chains and optional approvals.
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.
Field, type and presence
Meaning and conditions
data.active_chains
array | null; Optional within parent
Chains the wallet has non-zero balances on. Always present (not controlled by fields param). For Solana addresses, returns a single entry.
data.active_chains.[].chain
string; Required within parent
Canonical chain name like `ethereum` or `polygon`
data.active_chains.[].chain_id
integer; Optional within parent; format: int64
EVM chain ID like `1` for Ethereum or `137` for Polygon
data.active_chains.[].usd_value
number; Required within parent; format: double
Total USD value of assets on this chain
data.approvals
array | null; Optional within parent
Token approvals (EVM-only, up to 50). Only present when `approvals` is included in the `fields` param.
data.approvals.[].balance
number; Required within parent; format: double
Current token balance
data.approvals.[].chain
string; Required within parent
Canonical chain name
data.approvals.[].name
string; Optional within parent
Full token name
data.approvals.[].spenders
array | null; Required within parent
List of approved spender contracts
data.approvals.[].spenders.[].allowance
number; Required within parent; format: double
Approved token amount (use -1 for unlimited)
data.approvals.[].spenders.[].spender_address
string; Required within parent
Address of the approved spender contract
data.approvals.[].spenders.[].spender_name
string; Optional within parent
Human-readable name of the spender, absent for unrecognized contracts
data.approvals.[].symbol
string; Required within parent
Token ticker symbol
data.approvals.[].token_address
string; Required within parent
Token contract address
data.errors
array | null; Optional within parent
Per-field errors for any fields that failed to load
data.errors.[].field
string; Required within parent
Field name that failed to load like `evm_balance`, `sol_balance`, `evm_tokens`, `sol_tokens`, `labels`, `nft`, `active_chains`, or `approvals`
data.errors.[].message
string; Required within parent
Error message describing why the field could not be loaded
data.evm_balance
object; Optional within parent
EVM wallet balance. Populated for EVM chains only.
data.evm_balance.address
string; Required within parent
Wallet address
data.evm_balance.chain_balances
array | null; Optional within parent
Per-chain balance breakdown, sorted by value descending (EVM only)
data.evm_balance.chain_balances.[].chain
string; Required within parent
Canonical chain name like `ethereum` or `polygon`
data.evm_balance.chain_balances.[].chain_id
integer; Optional within parent; format: int64
EVM chain ID like `1` for Ethereum or `137` for Polygon
data.evm_balance.chain_balances.[].usd_value
number; Required within parent; format: double
Total USD value of assets on this chain
data.evm_balance.total_usd
number; Required within parent; format: double
Total portfolio value in USD (EVM only)
data.evm_tokens
array | null; Optional within parent
EVM token holdings (up to 50). Populated for EVM chains only.
data.evm_tokens.[].balance
string; Required within parent
Decimal-adjusted token balance as a string
data.evm_tokens.[].chain
string; Optional within parent
Chain name like ethereum, polygon (EVM only)
data.evm_tokens.[].is_verified
boolean; Required within parent
Whether the token is verified (EVM only)
data.evm_tokens.[].logo_url
string; Optional within parent
Token logo image URL
data.evm_tokens.[].name
string; Optional within parent
Full token name
data.evm_tokens.[].price
number; Required within parent; format: double
Current USD price per token (EVM only)
data.evm_tokens.[].symbol
string; Required within parent
Token ticker symbol
data.evm_tokens.[].token_address
string; Required within parent
Token contract address (EVM only)
data.evm_tokens.[].usd_value
number; Required within parent; format: double
Total USD value (balance * price) (EVM only)
data.labels
object; Optional within parent
Address labels and entity attribution
data.labels.address
string; Required within parent
Wallet address
data.labels.entity_name
string; Optional within parent
Name of the associated entity like `Binance` or `Aave`
data.labels.entity_type
string; Optional within parent
Type of entity like `exchange`, `fund`, or `whale`
data.labels.labels
array | null; Required within parent
List of labels assigned to this address
data.labels.labels.[].confidence
number; Optional within parent; format: double
Confidence score 0.0-1.0
data.labels.labels.[].label
string; Required within parent
Human-readable label for this address like `Binance Hot Wallet`
data.nft
array | null; Optional within parent
NFT holdings (EVM-only, top 200 by value)
data.nft.[].chain
string; Optional within parent
Canonical chain name like `ethereum` or `polygon`
data.nft.[].collection_name
string; Optional within parent
NFT collection name
data.nft.[].contract_address
string; Required within parent
NFT contract address
data.nft.[].image_url
string; Optional within parent
NFT image or thumbnail URL
data.nft.[].name
string; Optional within parent
NFT item name or title
data.nft.[].token_id
string; Required within parent
NFT token ID within the collection
data.nft.[].usd_price
number; Optional within parent; format: double
Latest trading price in USD
data.sol_balance
object; Optional within parent
Solana wallet balance from Solscan. Populated for Solana chain only.
data.sol_balance.address
string; Required within parent
Wallet address
data.sol_balance.sol_balance
string; Required within parent
Decimal-adjusted native SOL balance as a string (Solana only)
data.sol_tokens
array | null; Optional within parent
Solana SPL token holdings from Solscan (up to 50). Populated for Solana chain only.
data.sol_tokens.[].balance
string; Required within parent
Decimal-adjusted token balance as a string
data.sol_tokens.[].decimals
integer; Required within parent; format: int64
Token decimal places (Solana only)
data.sol_tokens.[].is_verified
boolean; Required within parent
Whether the token contract is verified
data.sol_tokens.[].logo_url
string; Optional within parent
Token logo image URL
data.sol_tokens.[].name
string; Optional within parent
Full token name
data.sol_tokens.[].symbol
string; Required within parent
Token ticker symbol
data.sol_tokens.[].token_address
string; Required within parent
SPL token mint address (Solana only)
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
Coverage, units and freshness
Approvals are opt-in. Asset sections are bounded and may fail independently; retain errors rather than interpreting missing data as zero holdings.
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.
Paste the wallet's public page link
Paste its public page from Etherscan or another EVM explorer, such as [Etherscan wallet page link].
Paste the public wallet page link from Etherscan, Solscan or another explorer. If the link does not clearly show the wallet, the assistant will ask for another public page link. Never share a password or secret recovery words that could let someone control the wallet. Example: [Etherscan wallet page link].
Returns available wallet balances, token holdings, NFT holdings, recorded labels, active chains and optional approvals.
Approvals are opt-in. Asset sections are bounded and may fail independently; retain errors rather than interpreting missing data as zero holdings.
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 Inspect a wallet's assets, labels, NFT holdings and active chains. 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.