Inspect a wallet's recorded DeFi protocol positions. Returns recorded protocol positions, chains, protocol identities, public references and available USD totals. 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
Check a Wallet’s DeFi Protocol Positions · Surf
Inspect a wallet's recorded DeFi protocol positions. Returns recorded protocol positions, chains, protocol identities, public references and available USD totals. 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 recorded protocol positions, chains, protocol identities, public references and available USD totals. Coverage follows supported protocols and available position records. Missing protocols do not establish that a wallet has no position elsewhere.
Start with your task
Paste a public wallet page link, such as its Etherscan page. I’ll use it to identify the wallet and check its recorded DeFi positions.
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
limitqueryParams.limit
integer
Optional
Results per page. Example: 20. Defaults to 20.
Default
20
Minimum
1
Maximum
100
offsetqueryParams.offset
integer
Optional
Pagination offset. Example: 0. Defaults to 0.
Default
0
Minimum
0
Maximum
9007199254740991
addressqueryParams.address
string
Required
Wallet address — must be a raw 0x-prefixed hex address, not an ENS name. Example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045.
Inspect a wallet's recorded DeFi protocol positions
How to use this Tool
Use the deployed input fields below. Required fields must be supplied; optional filters narrow the result.
queryParams.limit (Optional): Results per page. Example: 20. Defaults to 20.
queryParams.offset (Optional): Pagination offset. Example: 0. Defaults to 0.
queryParams.address (Required): Wallet address — must be a raw 0x-prefixed hex address, not an ENS name. Example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045.
What this Tool returns
Returns recorded protocol positions, chains, protocol identities, public references and available USD totals.
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.[].chain
string; Required within parent
Canonical chain name where the protocol operates
data.[].logo_url
string; Optional within parent
Protocol logo image URL
data.[].positions
array | null; Required within parent
Individual positions held in this protocol
data.[].positions.[].balance_usd
number; Required within parent; format: double
Total USD value of this position
data.[].positions.[].borrow_tokens
array | null; Optional within parent
Tokens borrowed in this position
data.[].positions.[].borrow_tokens.[].amount
number; Required within parent; format: double
Token amount held in this position
data.[].positions.[].borrow_tokens.[].chain
string; Required within parent
Canonical chain name like `ethereum` or `polygon`
data.[].positions.[].borrow_tokens.[].name
string; Optional within parent
Full token name
data.[].positions.[].borrow_tokens.[].price
number; Required within parent; format: double
Current token price in USD
data.[].positions.[].borrow_tokens.[].symbol
string; Required within parent
Token ticker symbol
data.[].positions.[].borrow_tokens.[].token_address
string; Optional within parent
Token contract address
data.[].positions.[].lp_tokens
array | null; Optional within parent
LP tokens in this position
data.[].positions.[].lp_tokens.[].amount
number; Required within parent; format: double
Token amount held in this position
data.[].positions.[].lp_tokens.[].chain
string; Required within parent
Canonical chain name like `ethereum` or `polygon`
data.[].positions.[].lp_tokens.[].name
string; Optional within parent
Full token name
data.[].positions.[].lp_tokens.[].price
number; Required within parent; format: double
Current token price in USD
data.[].positions.[].lp_tokens.[].symbol
string; Required within parent
Token ticker symbol
data.[].positions.[].lp_tokens.[].token_address
string; Optional within parent
Token contract address
data.[].positions.[].name
string; Required within parent
Position name or type like `Lending` or `Staking`
data.[].positions.[].reward_tokens
array | null; Optional within parent
Unclaimed reward tokens in this position
data.[].positions.[].reward_tokens.[].amount
number; Required within parent; format: double
Token amount held in this position
data.[].positions.[].reward_tokens.[].chain
string; Required within parent
Canonical chain name like `ethereum` or `polygon`
data.[].positions.[].reward_tokens.[].name
string; Optional within parent
Full token name
data.[].positions.[].reward_tokens.[].price
number; Required within parent; format: double
Current token price in USD
data.[].positions.[].reward_tokens.[].symbol
string; Required within parent
Token ticker symbol
data.[].positions.[].reward_tokens.[].token_address
string; Optional within parent
Token contract address
data.[].positions.[].supply_tokens
array | null; Optional within parent
Tokens supplied/deposited in this position
data.[].positions.[].supply_tokens.[].amount
number; Required within parent; format: double
Token amount held in this position
data.[].positions.[].supply_tokens.[].chain
string; Required within parent
Canonical chain name like `ethereum` or `polygon`
data.[].positions.[].supply_tokens.[].name
string; Optional within parent
Full token name
data.[].positions.[].supply_tokens.[].price
number; Required within parent; format: double
Current token price in USD
data.[].positions.[].supply_tokens.[].symbol
string; Required within parent
Token ticker symbol
data.[].positions.[].supply_tokens.[].token_address
string; Optional within parent
Token contract address
data.[].protocol_name
string; Required within parent
Human-readable protocol name
data.[].site_url
string; Optional within parent
Protocol website URL
data.[].total_usd
number; Required within parent; format: double
Total USD value across all positions in this protocol
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
Coverage follows supported protocols and available position records. Missing protocols do not establish that a wallet has no position elsewhere.
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.
See this wallet’s DeFi positions
Show the positions recorded for [the public Etherscan page link for this wallet], including the app and network for each one.
Share a public wallet page link, such as an Etherscan page. It must clearly identify the wallet. A display name alone is not enough.
Returns recorded protocol positions, chains, protocol identities, public references and available USD totals.
Coverage follows supported protocols and available position records. Missing protocols do not establish that a wallet has no position elsewhere.
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 recorded DeFi protocol positions. 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.