Teardrop
Server Details
Teardrop is the native economic layer for AI agents, providing a robust suite of tools for multi-chain portfolio tracking, DeFi yield analysis, and gas estimation. It enables autonomous agents to securely find Web3 data and manage micro-payments on-chain with zero human intervention.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.3/5 across 27 of 27 tools scored. Lowest: 3.4/5.
Most tools target distinct blockchain/DeFi resources and actions. A few pairs like get_lending_rates vs get_yield_rates and get_defi_positions vs get_liquidation_risk have overlapping boundaries, but detailed descriptions and explicit redundancy notes (e.g., get_eth_balance vs get_wallet_portfolio) reduce confusion.
All tools follow a consistent snake_case verb_noun pattern (e.g., get_block, convert_currency, decode_transaction). The only minor deviations are noun-first names like http_fetch and web_search, but the style is uniform and predictable.
At 27 tools, the server exceeds the 25-tool threshold for 'too many' and feels heavy. While the breadth of DeFi and crypto features justifies some size, the number is unwieldy for an agent to scan efficiently and could be consolidated (e.g., merging balance-related tools).
The tool surface covers a wide range of blockchain data: balances, prices, TVL, yields, DEX quotes, gas, block/transaction details, approvals, and DeFi positions. Gaps include lack of wallet transaction history and NFT support, but these are beyond the server's clear focus on read-only DeFi analytics.
Available Tools
31 toolscalculateCalculateARead-onlyInspect
Evaluate a safe arithmetic expression. Supports +,-,*,/,**,%,sqrt,abs,round,floor,ceil,log,sin,cos,tan,pi,e.
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes | A safe arithmetic expression, e.g. '(3 + 4) * 2 / sqrt(9)' |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| result | No | |
| expression | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey readOnlyHint=true, so the description need not restate read-only. The description adds behavioral context by noting the expression is 'safe' (implying no arbitrary code execution) and explicitly enumerating supported functions and constants, which clarifies what the tool can and cannot evaluate. This goes beyond the schema's simple example.
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, efficient sentence with a front-loaded action ('Evaluate') and a compact enumeration of supported operations. Every word contributes value, with no redundant or vague 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 that the tool has one parameter, an output schema exists, and the readOnly annotation is provided, the description is sufficiently complete. It covers the tool's domain, safe evaluation, and the full set of supported operations, so an agent can invoke it confidently without needing additional behavioral or return-value 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?
The schema description for the 'expression' parameter covers 100% of the parameter, providing an example. The tool description additionally itemizes accepted operators and functions (+, -, *, /, **, %, sqrt, abs, round, etc.), giving the agent a clearer understanding of valid input format and capabilities beyond 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 description uses the specific verb 'evaluate' and clearly identifies the resource as an 'arithmetic expression'. It lists supported operations, making the tool's scope unambiguous and distinguishing it from siblings that deal with currency, stats, transactions, and blockchain 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?
The description implies usage for arithmetic computation by stating 'Evaluate a safe arithmetic expression' and listing supported functions, but it does not explicitly state when to use this tool versus alternatives or provide exclusion criteria. No alternative tools are named, and no when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_currencyConvert CurrencyARead-onlyInspect
Convert between fiat currencies (USD, EUR, GBP, etc.) and crypto assets (BTC, ETH, USDC, SOL, etc.). Returns the converted amount and exchange rate.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Amount to convert | |
| to_currency | Yes | Target currency (e.g. 'USD', 'EUR', 'BTC') | |
| from_currency | Yes | Source currency (e.g. 'ETH', 'USD', 'BTC') |
Output Schema
| Name | Required | Description |
|---|---|---|
| rate | Yes | |
| amount | Yes | |
| source | Yes | |
| to_currency | Yes | |
| from_currency | Yes | |
| converted_amount | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes the tool as non-mutating. The description adds that the tool returns both the converted amount and the exchange rate, which is useful context, but it does not disclose any potential caveats such as rate sourcing, latency, or supported currency limitations. With annotations covering the safety profile, this is adequate but not exceptional.
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, compact sentence that efficiently conveys the tool's purpose and output. It avoids unnecessary words and front-loads the key information, making it easy for an agent to parse.
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 straightforward converter with a simple parameter set and an output schema, the description covers the essential aspects: what it converts, what it returns, and the types of assets involved. It lacks discussion of edge cases or rate specifics, but these are not critical for a basic read-only tool. The description is complete enough to guide 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?
The input schema provides descriptions for all three parameters (amount, from_currency, to_currency) with examples and constraints, achieving 100% coverage. The tool description does not add further semantic detail beyond what the schema offers, so the baseline 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 clearly states that the tool converts between fiat currencies and crypto assets, using the specific verb 'convert' and naming the resource ('currency' and 'assets'). It also specifies the return values (converted amount and exchange rate), which distinguishes it from price-lookup tools like get_token_price.
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 implies the tool is for currency conversion but does not explicitly mention when to prefer it over sibling tools such as get_token_price or get_dex_quote. No exclusions or alternative usage scenarios are provided, leaving the agent to infer the appropriate context from the tool's name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
count_text_statsCount Text StatsARead-onlyInspect
Return word count, character count, sentence count, and paragraph statistics for a given text.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to summarize |
Output Schema
| Name | Required | Description |
|---|---|---|
| word_count | Yes | |
| sentence_count | Yes | |
| character_count | Yes | |
| paragraph_count | Yes | |
| average_words_per_sentence | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a non-destructive operation. The description adds detail about what the tool returns (word, character, sentence, paragraph stats), giving the agent a clear behavioral expectation. It does not dive into tokenization edge cases or the exact meaning of 'paragraph statistics,' but for a tool of this simplicity, the added context is valuable.
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 that directly lists the tool's outputs. Every word earns its place; there is no redundancy or fluff, making it both concise and well-structured.
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 low complexity, the presence of a readOnlyHint, and an output schema (which presumably defines return values), the description is complete enough for an agent to select and invoke the tool correctly. It covers the essence 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?
The input schema has 100% coverage: the only parameter 'text' is described as 'Text to summarize,' and the tool description says 'for a given text,' so the parameter's purpose is clear. The description does not add significantly beyond the schema (e.g., formats, length limits), but the schema already handles this adequately.
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 specifies a concrete verb ('Return') and enumerates the specific outputs (word count, character count, sentence count, paragraph statistics). It unambiguously identifies a text-analysis tool that is distinct from all sibling tools, which are blockchain/defi/web utilities.
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 does not explicitly state when to use this tool vs alternatives, nor does it offer any exclusions or prerequisites. However, the purpose is self-evident: when the agent needs text metrics, this is the obvious choice. This makes usage guidelines only implied rather than explicitly articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decode_transactionDecode TransactionARead-onlyInspect
Decode a transaction's calldata into a human-readable function name and arguments. Also returns transaction status (1=success, 0=revert), gas used, and block number. Optionally provide an ABI for precise decoding; otherwise uses 4byte.directory. Supports Ethereum mainnet and Base.
| Name | Required | Description | Default |
|---|---|---|---|
| tx_hash | Yes | Transaction hash (0x… 64 hex chars) | |
| abi_json | No | Optional ABI JSON array for decoding. If omitted, 4byte.directory is used. | |
| chain_id | No | Chain ID (1=Ethereum, 8453=Base) |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| status | No | 1=success, 0=revert, None=pending |
| tx_hash | Yes | |
| chain_id | Yes | |
| gas_used | Yes | |
| value_eth | Yes | |
| to_address | Yes | |
| block_number | Yes | |
| decoded_args | Yes | |
| from_address | Yes | |
| raw_calldata | Yes | |
| decode_source | Yes | |
| function_name | Yes | |
| function_selector | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description need not restate safety. It adds value by revealing the default fallback to 4byte.directory when no ABI is given, the specific return fields (status, gas used, block number), and chain support. This exceeds the annotation's minimal safety signal without contradicting it.
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, front-loaded with the core action, and every sentence earns its place. No redundant phrasing or filler. The structure is ideal: purpose, return values, then parameter 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 there is an output schema (return shape is documented), the description need not enumerate every field. It covers purpose, parameter behavior, fallback logic, and chain support, which is sufficient for a read-only tool with high schema coverage. No critical gaps 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%, so the schema already documents all three parameters. The description adds little beyond restating that abi_json is optional and that 4byte.directory is the fallback, which aligns with the schema. This is baseline for high coverage; no additional semantic depth is offered.
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 starts with a specific verb and resource: 'Decode a transaction's calldata into a human-readable function name and arguments.' It clearly distinguishes from sibling tools like get_transaction (raw transaction retrieval) and read_contract (state reads) by specifying the calldata decoding purpose. It also lists supplementary outputs (status, gas used, block number), further clarifying scope.
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 on when to use the optional ABI parameter (for precise decoding) versus relying on the default 4byte.directory. It also states supported chains (Ethereum mainnet and Base). However, it does not explicitly contrast with alternative tools (e.g., when to use get_transaction instead), so it stops short of full exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delegate_to_agentDelegate To AgentAInspect
Delegate a task to a remote A2A-compliant agent. Discovers the agent's capabilities via its agent card, sends it a message, and returns the result. Use when a task requires specialist capabilities beyond your own tools.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_url | Yes | Base URL of the remote A2A agent (e.g. https://agent.example.com) | |
| task_type | No | Broad task class for routing telemetry; never include user data or task text. | general |
| task_description | Yes | Natural language description of the task to delegate |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error message, if any |
| result | Yes | Text result extracted from the remote agent's response |
| status | Yes | A2A task state: completed, failed, etc. |
| cost_usdc | No | Cost of this delegation in atomic USDC |
| agent_name | Yes | Name of the remote agent (from its agent card) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already communicate mutability (readOnlyHint=false), external interaction (openWorldHint=true), and non-idempotency. The description adds valuable behavior details: it discovers capabilities via an agent card, sends a message, and returns the result. It does not cover error scenarios or authentication, but the annotation baseline lowers the burden.
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 long and front-loaded with the core action. Every clause contributes meaning—mechanism, result, and usage context—without any filler or redundancy.
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 annotations and output schema, the description covers the essential aspects: purpose, mechanism, when to use, and what to expect. It could mention privacy or side-effect concerns but those are hinted by idempotentHint=false and readOnlyHint=false, so it remains sufficiently complete.
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 schema provides 100% description coverage for all three parameters, so they are already well-documented. The tool description does not add extra parameter context beyond what the schema states, making the baseline score of 3 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 'delegate' and clearly identifies the resource: 'a remote A2A-compliant agent'. It also distinguishes from sibling tools by explaining it offloads to specialist capabilities beyond one's own 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?
Provides explicit when-to-use guidance: 'Use when a task requires specialist capabilities beyond your own tools.' This implies when not to use it (for tasks within one's own toolset) and differentiates from the many local tools listed as siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_blockGet BlockARead-onlyInspect
Get details for an Ethereum or Base block by number, hash, or 'latest'.
| Name | Required | Description | Default |
|---|---|---|---|
| chain_id | No | Chain ID (1=Ethereum, 8453=Base) | |
| block_identifier | No | Block number, block hash, or 'latest'/'earliest'/'pending' | latest |
Output Schema
| Name | Required | Description |
|---|---|---|
| hash | Yes | |
| number | Yes | |
| gas_used | Yes | |
| timestamp | Yes | |
| base_fee_gwei | Yes | |
| transaction_count | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares the safe read-only behavior. The description adds no additional behavioral context such as limits, prerequisites, or edge cases. It remains consistent with the annotation, but does not enrich it beyond the purpose.
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, concise sentence that front-loads the action and purpose. No unnecessary words or repetition.
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?
This is a simple read-only tool with an output schema and fully described optional parameters. The description covers the core purpose and identifier types, making it complete for typical use, though it does not mention default chain_id or block_identifier, which is acceptable given schema defaults.
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 both chain_id and block_identifier. The description mentions 'number, hash, or latest', which is already present in the block_identifier schema description. It does not add new semantics 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 clearly states the tool gets details for an Ethereum or Base block by number, hash, or 'latest'. This is a specific verb+resource with explicit identifier options, distinguishing it from sibling transaction or metrics 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?
No guidance is provided about when to use this tool versus alternatives like get_transaction or get_chain_metrics. The usage context is only implied by the read operation, with no exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_chain_metricsGet Chain MetricsARead-onlyInspect
Compare blockchain ecosystem health using DeFiLlama current TVL, 7-day and 30-day TVL changes, and aggregate fee activity. Pass chains such as ['Ethereum', 'Arbitrum', 'Solana'] for a focused comparison, or omit chains to inspect the highest-TVL ecosystems. Historical and fee fields fail open when DeFiLlama does not cover a chain.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback window used when selecting the historical TVL points to inspect. | |
| limit | No | Maximum number of chain rows to return when the result is not explicitly filtered. | |
| chains | No | Optional chain names to compare, such as ['Ethereum', 'Arbitrum', 'Solana']. When omitted, return the highest-TVL chains up to limit. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| error | No | |
| chains | Yes | |
| error_type | No | |
| provenance | No | Source and freshness metadata for the DeFiLlama response. |
| total_available | Yes | |
| requested_chains | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral detail beyond the readOnlyHint annotation by stating that 'Historical and fee fields fail open when DeFiLlama does not cover a chain.' This discloses important fallback behavior that the annotation does not convey, providing meaningful transparency.
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 three sentences, front-loads the core purpose, then gives usage guidance, and ends with a caveat. Every sentence earns its place with no fluff or redundancy.
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 moderate complexity, the presence of an output schema, and readOnlyHint annotation, the description is complete. It covers purpose, usage patterns, default behavior (highest-TVL), and a key edge case (fail-open), leaving no major 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 100%, so the schema already explains each parameter. The description adds value by illustrating usage of the chains parameter with an example and clarifying the limit behavior ('omit chains to inspect the highest-TVL ecosystems'). However, it doesn't add detail about the days parameter, so a baseline 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 starts with a specific verb and resource: 'Compare blockchain ecosystem health using DeFiLlama current TVL, 7-day and 30-day TVL changes, and aggregate fee activity.' This clearly distinguishes it from sibling tools like get_protocol_tvl or get_dex_volume, which focus on different metrics.
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 usage contexts: 'Pass chains such as [...] for a focused comparison, or omit chains to inspect the highest-TVL ecosystems.' While it doesn't explicitly name alternatives or exclusion cases, it effectively communicates when and how to use the tool, earning a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_datetimeGet DatetimeARead-onlyInspect
Return the current UTC date and time. Optional strftime format parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | strftime format string for the output | %Y-%m-%d %H:%M:%S UTC |
Output Schema
| Name | Required | Description |
|---|---|---|
| iso8601 | Yes | |
| datetime | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already declares the safe read-only nature. The description adds the important context that the time is in UTC, which is a meaningful behavioral detail. No other behavioral traits are disclosed, but none are expected for such a simple tool.
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 concise sentence that front-loads the core function and mentions the optional parameter. Every word earns its place.
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 low complexity, presence of an output schema, and the read-only annotation, the description is complete. It does not need to explain return values because the output schema covers that.
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 schema fully documents the 'format' parameter with a default and description (100% coverage). The description only says 'Optional strftime format parameter' which adds little beyond the schema, so the baseline 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 the specific verb 'Return' with the resource 'current UTC date and time', clearly stating the tool's function. It distinguishes from sibling tools as the only datetime-related tool among crypto-focused siblings.
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 prefer this tool over alternatives. Since there are no obvious alternatives, this is a minor gap, but the description does not explicitly state usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_defi_positionsGet Defi PositionsARead-onlyInspect
Aggregate DeFi positions for a wallet across Aave v3, Compound v3, Uniswap v3 LP, and canonical Ethereum (chain_id=1) or Base (chain_id=8453). Returns Aave aggregate account health (collateral, debt, health factor, LTV) with per-reserve breakdown for major assets, Compound v3 Comet market positions (supply, borrow, per-asset collateral, liquidation flag), and Uniswap v3 LP positions by token ID (token pair, fee tier, tick range, liquidity, uncollected fees). On Ethereum, also returns canonical Lido stETH/wstETH balances and the current wstETH-to-stETH equivalent. Per-protocol failures are isolated — other protocols still return.
| Name | Required | Description | Default |
|---|---|---|---|
| chain_id | No | Chain ID (1=Ethereum, 8453=Base) | |
| wallet_address | Yes | Wallet address (0x…) |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| errors | No | |
| aave_v3 | No | |
| chain_id | Yes | |
| uniswap_v3 | No | |
| compound_v3 | No | |
| lido_staking | No | |
| wallet_address | Yes | |
| data_block_number | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses detailed behavior: only reads data, returns specific Aave/Compound/Uniswap breakdowns, includes Lido balances on Ethereum, and isolates per-protocol failures so other protocols still return results. This is comprehensive and adds significant value beyond the annotation.
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 information-dense but not bloated. Four sentences cover purpose, return details, chain-specific behavior, and error isolation—every sentence earns its place and the main purpose 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?
Given the high complexity of aggregating multiple protocols, the description is complete: it covers chains, protocols, return contents for each protocol, chain-specific extras, and failure handling. The output schema exists, and the description still provides additional useful context, making it fully sufficient.
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 schema already explains both parameters (wallet_address and chain_id). The description restates chain_id values but adds minimal new meaning beyond the schema, so a 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 ('aggregate') and identifies the exact resource ('DeFi positions for a wallet') plus the protocols and chains covered (Aave v3, Compound v3, Uniswap v3 LP, Ethereum/Base). It clearly distinguishes from sibling tools like get_wallet_portfolio by naming the precise protocols and scope.
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 on what the tool does (aggregating multiple DeFi protocols), so an agent can infer when to use it. However, it does not explicitly name alternatives or state when NOT to use it, falling short of the highest level of guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dex_quoteGet Dex QuoteARead-onlyInspect
Get the best Uniswap v3 swap quote on Ethereum (chain_id=1) or Base (chain_id=8453) via direct on-chain QuoterV2 calls. Queries all four fee tiers (100/500/3000/10000 bps) in parallel and returns the tier with the highest output amount, along with per-tier breakdown. Inputs are raw uint256 amounts and EIP-55 checksummed addresses; native ETH is not quoted directly — pass the WETH address. Returns no_liquidity=true when no pool exists for the pair. Point-in-time quote at the returned block_number; do not cache.
| Name | Required | Description | Default |
|---|---|---|---|
| chain_id | No | 1 = Ethereum mainnet, 8453 = Base mainnet. Other chains unsupported. | |
| token_in | Yes | EIP-55 checksummed address of the token being sold. For native ETH, pass the WETH address (Ethereum: 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; Base: 0x4200000000000000000000000000000000000006). | |
| amount_in | Yes | Input amount in RAW uint256 units (e.g. '1000000' for 1 USDC, '1000000000000000000' for 1 WETH). Must be > 0 and < 2^128. Common token decimals: WETH/ETH/DAI/wstETH/cbETH/weETH 18, WBTC/cbBTC 8, USDC/USDT 6. Do not call read_contract to look up decimals — use these values directly. | |
| token_out | Yes | EIP-55 checksummed address of the token being bought. |
Output Schema
| Name | Required | Description |
|---|---|---|
| chain_id | Yes | |
| token_in | Yes | |
| amount_in | Yes | |
| token_out | Yes | |
| amount_out | Yes | |
| block_number | Yes | |
| no_liquidity | Yes | |
| fee_tier_used | Yes | |
| effective_rate | Yes | |
| quotes_per_tier | Yes | |
| amount_out_human | Yes | |
| amount_in_decimals | Yes | |
| amount_out_decimals | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description enriches the readOnlyHint annotation with critical behavioral details: it queries four fee tiers in parallel, returns the best tier plus a breakdown, reports no_liquidity=true when no pool exists, and returns a block_number for point-in-time quotes. It also cautions against caching. This goes well beyond the annotation's safety signal.
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, information-dense paragraph. Every sentence contributes unique value: purpose, mechanism, input formats, native ETH caveat, no-liquidity behavior, and point-in-time nature. There is no redundancy or fluff.
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 complexity (multi-chain, four fee tiers, specific input constraints), the description covers all essentials: supported chains, parallel tier queries, output choice, no-liquidity handling, and freshness caveat. It even warns against caching. The presence of an output schema means return values need not be fully described, and the description is complete enough for an agent to use the 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?
Schema description coverage is 100%, so the schema already thoroughly documents token_in, token_out, amount_in, and chain_id. The description adds a brief note about raw uint256 amounts and EIP-55 addresses, but this largely duplicates schema content. Since the schema handles parameter explanations, the description adds minimal additional semantic value.
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: obtaining the best Uniswap v3 swap quote on Ethereum or Base. It specifies the method (direct on-chain QuoterV2), the resource (Uniswap v3), and the scope (chain_ids 1 and 8453). This distinguishes it from sibling tools like get_token_price or get_dex_volume.
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: it is for on-chain swap quotes, explicitly lists supported chains, and explains that native ETH is not quoted directly (use WETH). It also warns against caching due to point-in-time quotes. While it does not explicitly name alternative tools, the intended usage is unmistakable given the specific inputs and behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dex_volumeGet Dex VolumeARead-onlyInspect
Compare decentralized exchange activity from DeFiLlama. Returns 24-hour, 7-day, and 30-day volume, period-over-period changes, and each protocol's share of reported global 24-hour DEX volume. Filter by protocol names or DeFiLlama slugs and rank by a 1-, 7-, or 30-day lookback window.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of DEX protocols to return. | |
| protocols | No | Optional protocol names or DeFiLlama slugs, such as ['uniswap-v3', 'curve-dex']. When omitted, return the largest DEX protocols. | |
| lookback_days | No | Window used to rank the returned protocols: 1, 7, or 30 days (nearest supported window is used). |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| dexes | Yes | |
| error | No | |
| error_type | No | |
| total_matching | Yes | |
| total_available | Yes | |
| volume_share_basis | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers the safety profile, and the description adds meaningful behavioral detail: it lists the exact metrics returned (24h/7d/30d volume, period-over-period changes, share of global volume) and the source. It does not contradict the annotations or hide any obvious side effects beyond what a read-only tool implies.
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 front-loads the primary purpose, and the second enumerates the key metrics and filtering/ranking options. Every phrase earns its place with no redundancy or 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?
With a read-only annotation, a fully documented 3-parameter schema, and an output schema present, the description provides sufficient selection and invocation context. It names the data source, return metrics, filtering options, and ranking window, leaving no obvious gaps for an agent to misuse the tool.
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 provides 100% coverage of all three parameters with clear descriptions, so the description does not add significant meaning beyond the schema. It restates the filtering/ranking semantics, but the schema already documents limit, protocols, and lookback_days accurately, warranting the baseline score.
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 ('Compare') and resource ('decentralized exchange activity from DeFiLlama'), making the tool's purpose immediately clear. It also distinguishes itself from siblings like get_dex_quote and get_protocol_tvl by focusing on volume comparison metrics.
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 clearly establishes when to use the tool (when comparing DEX activity from DeFiLlama) and how to tailor it via protocol filters and lookback windows. However, it does not explicitly name alternative tools or state when not to use this tool, so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_erc20_balanceGet Erc20 BalanceBRead-onlyInspect
Get the ERC-20 token balance of a wallet, including symbol and decimals.
| Name | Required | Description | Default |
|---|---|---|---|
| chain_id | No | Chain ID (1=Ethereum, 8453=Base) | |
| token_address | Yes | ERC-20 token contract address (0x…) | |
| wallet_address | Yes | Wallet address (0x…) |
Output Schema
| Name | Required | Description |
|---|---|---|
| chain_id | Yes | |
| balance_raw | Yes | |
| token_symbol | Yes | |
| token_address | Yes | |
| token_decimals | Yes | |
| wallet_address | Yes | |
| balance_formatted | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already signals this as a safe read operation, and the description adds little beyond the return data hint ('including symbol and decimals'), which is also covered by the output schema. No additional behavioral context such as chain support limitations, error conditions, or rate limits is provided.
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. Every word contributes to stating the tool's purpose, making it appropriately 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 simple nature of the tool, the detailed schema, the read-only annotation, and the presence of an output schema, the description is sufficient. It could mention that chain_id defaults to Ethereum, but that is already in the schema, so no major gaps exist.
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?
All three parameters (chain_id, token_address, wallet_address) are fully described in the schema with clear descriptions, so the description adds no new meaning. The schema coverage is 100%, so a baseline 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 clearly states the tool's function: retrieving an ERC-20 token balance for a given wallet, with the added detail of returning symbol and decimals. While it is specific and distinguishes from generic balance tools, it does not explicitly differentiate from sibling tools like get_eth_balance or get_wallet_portfolio.
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 implies use for querying ERC-20 balances but offers no explicit guidance on when to choose this over alternatives, nor any exclusions or prerequisites. The use case is inferred from the tool name and description rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_eth_balanceGet Eth BalanceARead-onlyInspect
Get the native ETH balance of an Ethereum or Base address. NOTE: get_wallet_portfolio already includes the native ETH balance in its holdings list — only call get_eth_balance when you need a standalone ETH balance without a full portfolio scan.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Ethereum address (0x…) | |
| chain_id | No | Chain ID (1=Ethereum, 8453=Base) |
Output Schema
| Name | Required | Description |
|---|---|---|
| address | Yes | |
| chain_id | Yes | |
| balance_eth | Yes | |
| balance_wei | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already discloses that this is a safe read operation. The description adds useful context by mentioning the portfolio overlap, but does not go deeper into behaviors like return format, error handling, or network specifics beyond schema. With annotations carrying the safety profile, this is adequate but not rich (consistent with the calibration example).
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 exactly two sentences. The first sentence states purpose, the second provides a critical usage note. No redundant words, no filler. Every sentence earns its place, and the note about get_wallet_portfolio is essential for correct 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?
For a simple 2-parameter read-only tool with an output schema, the description covers what it does, when to use it, and which sibling to avoid. The existence of an output schema means return-value details are not required in the description. It is complete within the context of the tool's complexity.
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%: both address and chain_id are fully described in the input schema. The description adds nothing new about the parameters themselves, only reinforcing the Ethereum/Base chain support. Baseline of 3 applies because 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 ('Get'), a clear resource ('native ETH balance'), and a scope ('Ethereum or Base address'). It explicitly distinguishes itself from get_wallet_portfolio, which is a sibling tool, by noting the balance is already included there. This is a precise, non-tautological purpose statement.
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 explicit guidance on when to use the tool ('only call get_eth_balance when you need a standalone ETH balance without a full portfolio scan') and names the alternative (get_wallet_portfolio). This is a clear usage vs. alternative distinction, exceeding mere implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gas_priceGet Gas PriceARead-onlyInspect
Get current EIP-1559 gas fees on Ethereum or Base. Returns base fee, priority fee, and next-block base fee estimate (useful for timing transactions). gas_used_ratio indicates network congestion (>0.5 = busy, >0.9 = very congested). Optional USD estimates include ETH spot price and rough transfer/swap costs. Results cached 10 seconds per chain.
| Name | Required | Description | Default |
|---|---|---|---|
| chain_id | No | Chain ID (1=Ethereum, 8453=Base) | |
| include_usd_estimate | No | If true, include ETH spot price and rough USD cost estimates for a simple transfer (21k gas) and a swap-like transaction (150k gas). |
Output Schema
| Name | Required | Description |
|---|---|---|
| chain_id | Yes | |
| base_fee_gwei | Yes | |
| eth_price_usd | No | |
| gas_price_gwei | Yes | |
| gas_used_ratio | Yes | |
| priority_fee_gwei | Yes | |
| next_base_fee_gwei | Yes | |
| estimated_swap_cost_usd | No | |
| estimated_transfer_cost_usd | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds valuable behavioral details: results are cached for 10 seconds per chain, gas_used_ratio thresholds for congestion are defined, and optional USD estimates are explained. This gives the agent a comprehensive understanding of data freshness and interpretation, complementing the annotation.
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 three sentences, with the primary purpose front-loaded in the first sentence. Each sentence provides distinct value: purpose, core outputs and congestion interpretation, and optional extras/caching. No fluff or repetition, making it highly concise and well-structured.
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 simplicity (two optional parameters, output schema present), the description is complete. It covers the purpose, key output fields, congestion thresholds, optional USD estimates, and caching. The agent has sufficient context to select and invoke the tool correctly without unmet informational needs.
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 schema already provides full descriptions for both parameters, achieving 100% coverage. The description adds minimal extra meaning, such as clarifying that USD estimates include rough transfer and swap costs. This is a baseline 3 where the schema does the heavy lifting, and the description offers marginal additional 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 clearly states the tool gets current EIP-1559 gas fees on Ethereum or Base, with a specific verb and resource. It distinguishes itself from sibling tools like get_token_price or get_block by focusing on gas fees and listing specific outputs. The first sentence is explicit and 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?
The description provides clear usage context: it is useful for timing transactions and network congestion assessment via gas_used_ratio. However, it lacks explicit alternatives or when-not-to-use guidance, though no sibling tool directly competes for this purpose. A 4 reflects strong context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lending_ratesGet Lending RatesARead-onlyInspect
Get current on-chain lending supply/borrow rates for expanded Aave v3 reserves and Compound v3 markets on Ethereum or Base. Returns per-asset APY snapshots and Compound utilization where available. Useful for protocol-specific stablecoin yield comparisons (e.g., USDC on Aave vs Compound).
| Name | Required | Description | Default |
|---|---|---|---|
| assets | No | Optional asset-symbol filter (e.g., ['USDC','DAI']). Case-insensitive. Max 20 symbols. | |
| chain_id | No | Chain ID (1=Ethereum, 8453=Base). | |
| protocol | No | Protocol to query: 'aave-v3', 'compound-v3', or 'all'. | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| rates | Yes | |
| errors | No | |
| chain_id | Yes | |
| protocol | Yes | |
| data_block_number | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds value by disclosing the return format: 'per-asset APY snapshots and Compound utilization where available.' It also includes the caveat 'where available,' which clarifies behavior when data may be incomplete. No contradictions with 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, each with a specific purpose: what it returns, return details, and a use-case example. No fluff or redundant information. Front-loaded with the primary action ('Get current on-chain lending supply/borrow rates').
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 has an output schema, so return values need not be explained, but the description still mentions APY snapshots and utilization, which helps. The description covers the protocols, chains, and a concrete use case, making it complete for a read-only list-style tool with well-documented parameters and annotations.
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% (all parameters have descriptions), so the baseline is 3. The description adds context about protocol and chain coverage ('Aave v3 reserves and Compound v3 markets on Ethereum or Base') but does not add meaning for the assets filter or chain_id beyond what the schema already provides. The description does not compensate for any parameter gaps because there are none.
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') with a clear resource ('on-chain lending supply/borrow rates') and explicitly scopes it to 'expanded Aave v3 reserves and Compound v3 markets on Ethereum or Base.' It also distinguishes from siblings like get_yield_rates by emphasizing protocol-specific lending rates, not general yields.
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 indicates when to use this tool: 'Useful for protocol-specific stablecoin yield comparisons (e.g., USDC on Aave vs Compound).' This provides clear context, but it does not explicitly mention sibling tools as alternatives or state when NOT to use it. No exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_liquidation_riskGet Liquidation RiskARead-onlyInspect
Assess DeFi liquidation risk for up to 50 wallets across expanded Aave v3 and Compound v3 coverage on Ethereum (chain_id=1) or Base (chain_id=8453). Returns per-wallet health factor and tiered risk classification (liquidatable, critical, warning, caution, healthy, no_debt) plus an overall_tier aggregate across protocols, and a summary count for alert dashboards. Per-protocol failures are isolated — a Compound RPC error does not blank the Aave result (and vice versa). View-only (eth_call) against hardcoded protocol addresses; duplicate wallet addresses are silently removed.
| Name | Required | Description | Default |
|---|---|---|---|
| chain_id | No | Chain ID (1=Ethereum, 8453=Base) | |
| wallet_addresses | Yes | Wallet addresses to assess (max 50; duplicates are silently removed). |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| results | Yes | |
| summary | Yes | |
| chain_id | Yes | |
| data_block_number | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true, and the description reinforces with 'View-only (eth_call)' plus adds valuable behavioral details: per-protocol failure isolation, silent duplicate removal, and hardcoded addresses. These go beyond the annotation and give the agent confidence about side-effect-free operation and error handling.
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, front-loaded with purpose, then output summary, then edge-case behaviors. No fluff; every sentence contributes value and the structure is logical.
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 types are already documented. The description adds failure isolation, deduplication, and the full tier list, covering edge cases. No major gaps 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 coverage is 100% with descriptions for both chain_id and wallet_addresses. The description repeats the max 50 and chain IDs but doesn't add new parameter-level meaning beyond the schema. Baseline of 3 is appropriate since the schema already 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 clearly states the tool's function with a specific verb and resource: 'Assess DeFi liquidation risk for up to 50 wallets across expanded Aave v3 and Compound v3 coverage.' It names the chains, protocols, and output types, distinguishing it from sibling tools like get_defi_positions or get_lending_rates.
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 implies usage for liquidation risk assessment, but it doesn't explicitly state when to prefer this tool over alternatives or mention exclusions. It mentions expanded coverage, which hints at comprehensiveness, but lacks direct comparison such as 'for alternative, use X instead.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_protocol_tvlGet Protocol TvlARead-onlyInspect
Get Total Value Locked (TVL) data for a DeFi protocol from DeFiLlama. Returns current TVL in USD, 7-day and 30-day percentage change, and a per-chain breakdown. Set include_historical=True to also retrieve a daily TVL series for trend analysis. When DeFiLlama reports them, also returns current fees and revenue in USD with 7-day and 30-day percentage change. You can also batch multiple protocols via protocols=[...]. Supports 3,000+ protocols including Aave, Uniswap, Curve, Compound, Lido, MakerDAO, and more. Batch responses retain one compact economic summary per requested protocol; single-protocol calls include chain and historical detail. A revenue_error_type identifies an upstream revenue lookup failure. Use the DeFiLlama slug format: 'aave-v3', 'uniswap-v3', 'curve-dex'. Common aliases such as 'spark-protocol' and 'compound' are auto-corrected.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback window in days for the historical series (only used when include_historical=True). | |
| protocol | No | DeFiLlama protocol slug (e.g. 'aave-v3', 'uniswap-v3', 'curve-dex'). Use lowercase with hyphens as shown on DeFiLlama. Tip: 'aave' works for the combined Aave TVL; 'aave-v3' for V3 only. Optional when using batch mode via protocols=[...]. | |
| protocols | No | Optional batch mode: list of DeFiLlama protocol slugs. When provided, the tool returns one TVL result object per protocol. | |
| include_historical | No | If true, return a daily historical TVL series for the requested window. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true; description does not contradict. Adds beyond annotations by describing batch vs single-protocol response differences (compact summary vs detailed chain/history), revenue_error_type, and that historical series is optional. No mention of rate limits or auth, but readonly annotation covers safety.
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?
Description is 4-5 sentences, front-loaded with purpose and key outputs. Each sentence adds value (supported protocols, batch behavior, error type). Could be slightly tightened but no waste.
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 4 optional params, no output schema, and moderate complexity, the description covers return values, batch vs single differences, historical option, fees/revenue when available, and error identifier. Provides comprehensive context for an AI agent to select and invoke the 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?
Schema coverage is 100% (4 params all described in schema). Description adds significant context: explains slug format with examples, distinguishes 'aave' vs 'aave-v3', clarifies days usage only when include_historical=True, and describes batch mode behavior. Greatly exceeds 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 gets TVL data for DeFi protocols from DeFiLlama, specifying returned metrics (current TVL, 7/30-day change, chain breakdown, optional historical, fees/revenue). It differentiates from sibling tools like get_dex_volume or get_lending_rates by being protocol-level TVL specific.
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?
Provides explicit usage guidance: slug format, batch mode via protocols=[...], auto-correction of aliases, and context for when to use single vs batch. Lacks explicit when-not-to-use or comparisons to alternatives, but purpose is narrow enough that it's clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_token_approvalsGet Token ApprovalsARead-onlyInspect
Audit ERC-20 token allowances for a wallet address. By default, returns all non-zero approvals for assets in the shared tracked-asset registry across curated DeFi protocol spenders (Uniswap, Aave, Compound, 1inch, 0x, OpenSea). Flags unlimited approvals with risk levels: high=unknown spender, medium=trusted protocol, low=bounded amount. Use before swaps to verify approval state, or after security incidents to detect active exploit vectors. Ethereum mainnet and Base only.
| Name | Required | Description | Default |
|---|---|---|---|
| tokens | No | Token contract addresses to check (max 50). Defaults to the platform tracked token list. | |
| chain_id | No | Chain ID (1=Ethereum, 8453=Base) | |
| spenders | No | Spender contract addresses to check (max 20). Defaults to the curated DeFi protocol list. | |
| wallet_address | Yes | Wallet address (0x…) |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| error | No | |
| chain_id | Yes | |
| approvals | Yes | |
| risk_summary | Yes | |
| wallet_address | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses default behavior (returns non-zero approvals from tracked-asset registry and curated protocol spenders) and output semantics (flags unlimited approvals with risk levels). It also provides network limitations, giving substantial behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the primary purpose, and each sentence adds value: purpose, defaults, risk flags, use cases, and network restrictions. No wasted words.
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 exists and all parameters are described, the description fully covers the tool's behavior, use cases, and limitations. No critical information 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% as all four parameters have detailed descriptions in the schema. The description adds minimal extra meaning, mostly reinforcing defaults (e.g., 'shared tracked-asset registry' vs schema's 'platform tracked token list'). No significant new parameter semantics are introduced.
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 purpose with a specific verb ('Audit') and resource ('ERC-20 token allowances for a wallet address'). It distinguishes itself from sibling tools by focusing on approvals/allowances and risk flagging, rather than balances or 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?
The description provides explicit usage scenarios: 'Use before swaps to verify approval state, or after security incidents to detect active exploit vectors.' It also states an exclusion: 'Ethereum mainnet and Base only,' clarifying when the tool is not applicable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_token_priceGet Token PriceARead-onlyInspect
Get current price, 24h change, market cap, fully-diluted valuation, and volume for one or more crypto tokens. Accepts ticker symbols (BTC, ETH, LQTY), full token names (Bitcoin, Liquity, Chainlink), or CoinGecko IDs. Unknown symbols are resolved automatically against the full CoinGecko coin list. Supports batch queries up to 50 tokens. Bare 0x contract addresses are not resolvable by CoinGecko and should be treated as unknown. If get_wallet_portfolio already returned price_usd/value_usd for a held token, reuse that value instead of calling get_token_price again.
| Name | Required | Description | Default |
|---|---|---|---|
| tokens | Yes | Token symbols or CoinGecko IDs (e.g. ['BTC', 'ETH', 'SOL']) | |
| vs_currency | No | Quote currency (usd, eur, gbp, btc, eth) | usd |
Output Schema
| Name | Required | Description |
|---|---|---|
| prices | Yes | |
| vs_currency | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint true. The description goes beyond by explaining unknown symbol auto-resolution against 'the full CoinGecko coin list', the unsupported nature of 'Bare 0x contract addresses', and the batch cap. These are meaningful behavioral details not present in the annotation.
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?
Six sentences, each carrying specific information: purpose, accepted input forms, resolution behavior, batch limit, address limitation, and reuse guidance. No filler or redundant phrasing; the main purpose 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?
With an output schema present, return-value documentation is unnecessary. The description covers input flexibility, resolution behavior, batch constraints, and a reuse recommendation, making it comprehensive for a token-price lookup tool. There are no obvious missing behavioral expectations.
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 parameter descriptions already present, so the baseline is 3. The description adds value by revealing that full token names are accepted and that unknown symbols resolve automatically, which the schema does not mention. This enriches parameter understanding.
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?
Description states 'Get current price, 24h change, market cap, fully-diluted valuation, and volume for one or more crypto tokens' — a specific verb and resource, clearly distinguishing it from siblings like get_token_price_historical by emphasizing 'current'. The tool's scope 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?
Explicitly instructs 'If get_wallet_portfolio already returned price_usd/value_usd for a held token, reuse that value instead of calling get_token_price again', providing a clear when-not-to-use alternative. It also spells out accepted identifier types (symbols, names, CoinGecko IDs) and the 50-token batch limit, offering concrete selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_token_price_historicalGet Token Price HistoricalARead-onlyInspect
Get historical price data for crypto tokens over a specified time window (1–365 days). Returns period statistics (start, end, % change, high, low) plus a downsampled daily price series, plus high_30d (raw observation maximum), std_30d (population standard deviation of daily returns as a decimal), and dca_baseline_90d (weekly samples over the preceding 90 UTC days, excluding the latest observation). dca_baseline_90d_partial identifies incomplete history. Use for period comparisons (month-over-month, YTD), trend analysis, and price charts. Prefer over web_search for time-comparative financial queries. Pass stats_only=true when the daily series is unnecessary. These metrics are pre-computed and should not be re-derived with calculate.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback window in days (1–365). 1=5-min granularity, 2-90=hourly, 91+=daily. | |
| tokens | Yes | Token symbols or CoinGecko IDs (e.g. ['BTC', 'ETH']). Max 10 per call. | |
| stats_only | No | If true, omit the daily price series and return period stats plus precomputed 30-day high/volatility and 90-day DCA baseline metrics. | |
| vs_currency | No | Quote currency (usd, eur, gbp, btc, eth). Lowercase 3–10 letters. | usd |
Output Schema
| Name | Required | Description |
|---|---|---|
| days | Yes | |
| tokens | Yes | |
| vs_currency | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, but the description adds substantial context beyond that: it explains how dca_baseline_90d is computed (weekly samples over preceding 90 UTC days, excluding latest observation), notes dca_baseline_90d_partial identifies incomplete history, and warns that metrics are pre-computed and should not be re-derived with calculate. No contradiction with 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 core purpose, then compactly enumerates return metrics and usage guidance. Every sentence serves a distinct function—purpose, output details, edge-case identifier, use cases, alternative, and optimization. No redundancy or 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?
The tool is complex with multiple precomputed metrics, but the description covers all key aspects: return value composition, granularity caveats, partial history handling, and guidance on avoiding re-derivation. An output schema exists, so return values need not be exhaustively spelled out, yet the description still provides a rich overview.
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 adds a small amount of semantic value by clarifying when stats_only is useful ('when the daily series is unnecessary'), but most parameter meaning is already fully documented in the schema. No significant gap to compensate.
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+resource ('Get historical price data for crypto tokens') and details the exact outputs (period statistics, daily price series, high_30d, std_30d, dca_baseline_90d). It distinguishes from siblings like get_token_price and web_search by focusing on historical time windows and time-comparative analysis.
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 use cases are given ('Use for period comparisons (month-over-month, YTD), trend analysis, and price charts'), with a direct alternative ('Prefer over web_search for time-comparative financial queries') and a conditional optimization ('Pass stats_only=true when the daily series is unnecessary'). This is textbook usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transactionGet TransactionARead-onlyInspect
Get details and receipt for an Ethereum or Base transaction by hash. Includes bounded calldata, normalized event logs, transaction index, and receipt-derived effective gas price and fee when available.
| Name | Required | Description | Default |
|---|---|---|---|
| tx_hash | Yes | Transaction hash (0x…) | |
| chain_id | No | Chain ID (1=Ethereum, 8453=Base) |
Output Schema
| Name | Required | Description |
|---|---|---|
| logs | No | |
| status | No | 1=success, 0=revert, None=pending |
| fee_eth | No | |
| fee_wei | No | |
| tx_hash | Yes | |
| chain_id | Yes | |
| gas_used | Yes | |
| value_eth | Yes | |
| input_data | No | Hex calldata, bounded to 8 KiB |
| to_address | Yes | |
| block_number | Yes | |
| from_address | Yes | |
| gas_price_gwei | Yes | |
| logs_truncated | No | |
| transaction_index | No | |
| input_data_truncated | No | |
| effective_gas_price_gwei | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds meaningful behavioral context: it includes specific fields like bounded calldata and normalized event logs, and notes the fee is included 'when available', indicating conditional behavior. This goes beyond merely restating 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?
Two tightly packed sentences with no filler. Each clause adds value: the first defines the core action and scope, the second lists key return fields and conditional behavior. Excellent structure for quick comprehension.
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 the purpose, scope, and key output details, and the output schema exists to define return structure. It lacks error behavior or prerequisites, but for a simple read tool with full annotations and an output schema, it is sufficiently complete to guide an agent.
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?
Input schema covers 100% of parameters with descriptions (tx_hash format, chain_id with Ethereum/Base values). The description provides no additional parameter-level semantics beyond what the schema already states, so it rests at the baseline for full schema coverage.
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'), a specific resource ('details and receipt for an Ethereum or Base transaction by hash'), and enumerates distinctive outputs (bounded calldata, normalized event logs, transaction index, effective gas price). This clearly distinguishes it from siblings like decode_transaction.
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 implies usage (when you have a transaction hash and need details/receipt) but does not explicitly state when to use this tool over alternatives, nor does it provide exclusions. The sibling decode_transaction could benefit from a note, but the context is not misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wallet_approvalsGet Wallet ApprovalsARead-onlyInspect
Inspect a wallet's current ERC-20 token authorization exposure on one DeBank-supported chain. Returns discovered spenders, USD exposure, protocol attribution, and hacked or abandoned protocol flags. This is broader than the curated block-accurate get_token_approvals tool.
| Name | Required | Description | Default |
|---|---|---|---|
| chain_id | Yes | DeBank chain identifier, for example eth, arb, or base | |
| wallet_address | Yes | EVM wallet address (0x-prefixed) |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| errors | No | |
| chain_id | Yes | |
| approvals | No | |
| provenance | Yes | |
| data_complete | Yes | |
| wallet_address | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is known. The description adds useful behavioral context about the return contents (spenders, USD exposure, protocol attribution, and hacked/abandoned flags) and the broader scope relative to the sibling. No destructive behavior is implied, and no contradiction exists.
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-loaded with the core purpose, then return highlights, then a comparative pointer. Every sentence earns its place with no redundancy or fluff.
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 are documented. The description covers what the tool does, its chain scope, the parameters (implicitly), the type of data returned, and its relationship to a key sibling. This is complete for an agent to select and call the tool.
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 describes both parameters with 100% coverage. The description adds no additional parameter-level detail beyond tying 'wallet' and 'chain' to the context. Baseline 3 applies because the schema carries the 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 clearly states the tool inspects a wallet's ERC-20 token authorization exposure on a specific chain, with a specific verb ('inspect') and resource. It also immediately distinguishes itself from the sibling get_token_approvals by noting it is broader, so an agent can differentiate.
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 a clear alternative by comparing to get_token_approvals and characterizing it as 'curated block-accurate', implying when the narrower tool is appropriate. However, it doesn't explicitly state 'use this when' or 'do not use when', leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wallet_historyGet Wallet HistoryARead-onlyInspect
Get one page of decoded transaction history for an EVM wallet across DeBank-supported chains. Returns send, receive, and approval categories with protocol, token, exchange, gas, and USD metadata. Use the returned next_cursor as start_time to page backward.
| Name | Required | Description | Default |
|---|---|---|---|
| chain_ids | No | Optional DeBank chain identifiers; omit to query all supported chains. | |
| page_count | No | Number of history entries to request (maximum 20). | |
| start_time | No | Return entries earlier than this Unix timestamp for cursor pagination. | |
| wallet_address | Yes | EVM wallet address (0x-prefixed) |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| errors | No | |
| cex_dict | No | |
| has_more | No | |
| chain_ids | Yes | |
| page_count | Yes | |
| provenance | Yes | |
| start_time | Yes | |
| token_dict | No | |
| next_cursor | No | |
| history_list | No | |
| project_dict | No | |
| data_complete | Yes | |
| wallet_address | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint=true, so the safety profile is covered. The description adds important behavioral details beyond annotations: it reveals that the tool returns 'decoded' transactions with categories and metadata, and explains the pagination mechanism using next_cursor. This transparency is helpful and goes beyond 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?
Two sentences, front-loaded with the primary purpose, followed by return details and pagination guidance. Every sentence earns its place, and there is no redundancy or 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?
The tool is moderately complex (4 params, output schema present). The description clearly covers what the tool returns, the scope of chains, and how to page through results. It is complete and actionable without needing to explain return values due to the output 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% for all parameters, so baseline is 3. The description adds value by explaining how start_time relates to the returned next_cursor for cursor pagination, which provides practical semantic meaning not fully captured in the parameter description 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 description clearly states the tool's function: 'Get one page of decoded transaction history for an EVM wallet across DeBank-supported chains.' It specifies the resource (wallet history), the scope (one page, EVM, DeBank-supported chains), and includes return categories, distinguishing it from sibling tools like get_transaction or get_wallet_approvals.
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 usage instruction for pagination: 'Use the returned next_cursor as start_time to page backward.' It implies when to use this tool (for browsing transaction history) but does not explicitly state when not to use it or name alternatives among siblings. Still, the pagination guidance is actionable and valuable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wallet_portfolioGet Wallet PortfolioARead-onlyInspect
Get aggregated token holdings with USD values for a wallet address. Tracks 19 major assets on Ethereum and 12 on Base, including spot, lending, liquid-staking, restaking, and stablecoin assets. Sorted by USD value. Returns up to 20 holdings. Includes native ETH balance in the holdings list — calling get_eth_balance separately after this is redundant.
| Name | Required | Description | Default |
|---|---|---|---|
| chain_id | No | Chain ID (1=Ethereum, 8453=Base) | |
| wallet_address | Yes | Wallet address (0x…) |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| chain_id | Yes | |
| holdings | Yes | |
| fetch_errors | No | |
| wallet_address | Yes | |
| total_value_usd | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite having readOnlyHint annotation, the description adds valuable context: it lists asset categories, chain coverage, sorting by USD value, a hard limit of 20 holdings, and the inclusion of native ETH. This goes well beyond the annotation to set expectations about the returned data.
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, each providing distinct information: overall function, coverage/scope, and a usage caveat. No wasted words, and the most important detail 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?
With an output schema present and read-only annotation, the description fully covers the tool's behavior, including limits, sorting, and coverage. It provides enough context for an agent to decide when to call it.
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?
Both parameters have detailed descriptions in the schema (wallet address, chain_id with chain IDs). The description reinforces the chain coverage but does not add new parameter-specific information, so schema carries the burden.
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 ('Get aggregated token holdings with USD values') and clearly identifies the resource (wallet address). It also distinguishes from siblings by noting that native ETH balance is included, making a subsequent get_eth_balance call redundant.
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 warns against calling get_eth_balance separately, which is a clear exclusion. It also implies this tool is for broad portfolio views across supported chains, though it doesn't enumerate all alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wallet_positionsGet Wallet PositionsARead-onlyInspect
Get a wallet's DeFi positions across all DeBank-supported chains and protocols. Returns protocol-level positions, asset/debt/net USD values, token lists, and optional all-chain net worth. Set include_token_balances=true to also return DeBank's complete cross-chain wallet token list. This covers substantially more protocols and chains than the block-accurate get_defi_positions tool. Use raw-RPC tools for liquidation, swap quotes, or other transaction-critical questions.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_address | Yes | EVM wallet address (0x…) | |
| include_net_worth | No | Include all-chain net worth and per-chain balances; disable to avoid that additional provider request. | |
| include_token_balances | No | Include DeBank's complete cross-chain token balance list; adds a billable provider request. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| errors | No | |
| positions | No | |
| provenance | Yes | |
| data_complete | Yes | |
| chain_balances | No | |
| token_balances | No | |
| wallet_address | Yes | |
| include_net_worth | Yes | |
| staleness_seconds | No | Max age in seconds of the underlying DeBank position data (from per-item update_at), or None when unavailable. |
| total_net_worth_usd | No | |
| include_token_balances | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes safety, and the description adds meaningful context: it returns protocol-level positions, asset/debt/net values, optional all-chain net worth, and complete cross-chain token lists when requested. It also notes that include_token_balances adds a billable provider request (though part of that is in the schema). No contradiction with 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 focused sentences deliver the core purpose, return contents, key parameter behavior, comparison to an alternative, and usage boundary. Every sentence earns its place with no redundancy or 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?
The tool is moderately complex (cross-chain DeFi positions), but the description plus a rich input schema and output schema fully cover scope, return types, optional parameters, tool differentiation, and important exclusions. The agent has enough context to select and invoke 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?
Schema coverage is 100% with clear parameter descriptions, so the baseline is 3. The description reinforces include_token_balances behavior and mentions optional net worth, but adds little beyond what the schema already states. It does not provide unique semantic value for wallet_address 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 clearly states the tool gets a wallet's DeFi positions across all DeBank-supported chains and protocols. It explicitly distinguishes itself from the sibling get_defi_positions by noting it covers substantially more protocols and chains, making its purpose 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?
Provides explicit guidance: use this for broad DeFi position retrieval, and use raw-RPC tools for liquidation, swap quotes, or transaction-critical questions. It also names the alternative get_defi_positions and explains the difference, giving clear when-to-use and when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_yield_ratesGet Yield RatesARead-onlyInspect
Get DeFi yield pool rates from DeFiLlama, covering 1,000+ protocols across all chains. Returns pools sorted by APY with TVL, base rate, reward APY, and 7d/30d mean APY context. Filter by protocol (e.g. 'aave-v3', 'compound-v3'), chain (e.g. 'Ethereum', 'Base'), minimum TVL, and minimum APY. Use this to answer questions like 'Where can I get the best USDC yield?', 'What is Aave's current APY on Ethereum?', or 'Compare Aave vs Compound yields'. Returns up to 50 pools. Call once per query unless a genuinely disjoint filter is required. The returned symbol field contains the underlying tokens (e.g. 'USDC', 'ETH-USDC', 'WBTC'); filter on the client side by inspecting symbol rather than re-calling with different arguments. Use min_apy, max_apy, min_tvl_usd, and symbols_any to prune noise in a single call. symbols_any matches whole symbol tokens (e.g. 'USDC' matches 'USDC' and 'ETH-USDC' but not 'TULIPAUSDC') and returns the highest-ranked pools for EACH requested symbol, so one call gives a complete per-symbol comparison; symbols with no matching pool are named in note. Set max_apy (e.g. 30) to exclude leveraged/boosted pools so genuine yields surface. Set stable_only=true when you need consistent stablecoin yield screening; this ranks by 30d mean APY first and still returns spot/base/reward components.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Filter by chain name (e.g. 'Ethereum', 'Base', 'Arbitrum'). Case-insensitive. None = all chains. | |
| limit | No | Maximum number of pools to return, sorted by APY descending. | |
| max_apy | No | Exclude pools with APY above this value (%). Default None = no upper bound. Use to filter out leveraged/boosted pools (e.g. max_apy=30) so genuine stablecoin yields surface. | |
| min_apy | No | Exclude pools with APY below this value (%). Default 0 includes all. | |
| protocols | No | Filter by DeFiLlama project slugs (e.g. ['aave-v3', 'compound-v3']). None or empty list = include all protocols. | |
| min_tvl_usd | No | Exclude pools with TVL below this threshold (USD). Default $1M filters noise. | |
| stable_only | No | When true, return only stablecoin pools and rank by 30d mean APY first to emphasize consistency over short-term spikes. | |
| symbols_any | No | Optional symbol filter. If provided, include pools whose symbol field contains at least one token from this list (case-insensitive). Use held token symbols from get_wallet_portfolio to focus results. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| pools | Yes | |
| provenance | No | Source and freshness metadata for the DeFiLlama response. |
| total_matching | Yes | |
| filters_applied | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds rich behavioral detail beyond the readOnlyHint annotation: describes return fields, the 50-pool cap, symbols_any whole-token matching and per-symbol ranking, the note field for unmatched symbols, and the effect of stable_only and max_apy on ranking and filtering. This gives the agent a strong mental model of the tool's 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 front-loaded with a clear purpose, then provides dense, high-value guidance on filtering and edge cases. It is longer than average, but every sentence adds information relevant to using the tool correctly, and it maintains a logical flow from what it does to how to use specific parameters.
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 8 optional parameters, an output schema, and only a readOnlyHint annotation, the description fully compensates: it covers use cases, parameter interpretation, edge-case behavior, and client-side filtering instructions. The tool's behavior is thoroughly specified, leaving no significant ambiguity for the agent.
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?
Even though the schema already covers all parameters, the description adds meaning beyond schema entries: it explains that symbols_any returns the highest-ranked pool per requested symbol and notes missing symbols in the note field, clarifies stable_only's ranking change, and recommends max_apy=30 to exclude leveraged pools. These details are not in the schema and materially improve parameter understanding.
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 gets DeFi yield pool rates from DeFiLlama, covers 1,000+ protocols across chains, and returns pools sorted by APY with specific fields. It includes example queries that make the purpose and scope unambiguous, and its focus on yield rates with protocol/chain filters distinguishes it from sibling tools like get_lending_rates and get_defi_positions.
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?
Provides explicit when-to-use guidance via example questions and specific strategies like 'Call once per query unless a genuinely disjoint filter is required' and 'filter on the client side by inspecting symbol rather than re-calling'. However, it does not explicitly name alternatives or state when not to use this tool in favor of a sibling, so it falls short of a perfect 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
http_fetchHttp FetchARead-onlyInspect
Fetch a web page and extract its main text content. Useful for reading articles, documentation, and web resources. Returns cleaned text, not raw HTML.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to fetch (http or https only) | |
| max_chars | No | Maximum characters of extracted content to return |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| title | Yes | |
| content | Yes | |
| truncated | Yes | |
| content_length | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a safe read operation. The description adds useful behavioral context by stating that it 'extracts main text content' and 'returns cleaned text, not raw HTML,' which sets expectations for the output. It does not disclose potential failures like JS-dependent pages or redirects, but the annotation lowers the burden.
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 short sentences that are front-loaded with the core purpose, then provide a use case and output format. Every sentence adds value and there is no redundancy or padding.
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 two-parameter tool with an output schema, a read-only annotation, and a clear description of behavior and output format, the description is complete. The cleaned-text return behavior is explicitly stated, and schema details cover the rest.
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 schema descriptions cover 100% of the parameters, providing details on URL format and max_chars bounds/defaults. The description itself adds no extra parameter semantics beyond the schema's coverage, so 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 uses a specific verb ('Fetch') and resource ('a web page') and clearly states the operation ('extract its main text content'). It also differentiates from sibling tools like web_search by focusing on fetching a given URL rather than searching, and notes the output is cleaned text, not raw HTML.
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 clear use cases: 'reading articles, documentation, and web resources.' However, it does not explicitly mention alternatives or when not to use this tool (e.g., 'use web_search when searching for pages'), so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_contractRead ContractARead-onlyInspect
Call any view/pure function on a smart contract and return the result. Provide the ABI fragment (JSON array) and function name. State-changing functions (payable/nonpayable) are rejected for safety. Supports historical queries via block_identifier (block number or 'latest') and optional caller_address context for msg.sender-dependent views. Calls use Teardrop's bounded RPC timeout and rate-limit retry policy.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | DEPRECATED: Positional arguments for the function call. Use 'args_json' for complex objects or Gemini compatibility. | |
| chain_id | No | Chain ID (1=Ethereum, 8453=Base) | |
| args_json | No | Optional JSON array string of positional arguments for the function call. Use this instead of 'args' for complex types or when calling via Google/Gemini. | |
| abi_fragment | Yes | JSON array containing the ABI for the function to call. Supports both modern (stateMutability: view/pure) and legacy (constant: true) formats. Only read-only functions are allowed. | |
| function_name | Yes | Name of the function to call | |
| caller_address | No | Optional EVM address to supply as msg.sender for caller-dependent view functions. This does not sign or submit a transaction. | |
| block_identifier | No | Block number, block hash, or 'latest'/'earliest'/'pending' | latest |
| contract_address | Yes | Contract address (0x…) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | |
| chain_id | Yes | |
| function_name | Yes | |
| caller_address | No | |
| block_identifier | Yes | |
| contract_address | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses that state-changing functions are rejected, that historical queries are supported, and that calls use a bounded RPC timeout and rate-limit retry policy. This adds meaningful behavioral context about safety and reliability that is not available from annotations alone.
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 concise at five sentences, front-loaded with the core purpose. Each sentence adds value, covering safety, historical queries, caller context, and RPC policy. It is slightly longer than necessary but remains efficient and well-structured.
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 complexity (8 parameters, output schema, readOnlyHint), the description covers key functional aspects: arbitrary view/pure calls, ABI requirements, rejection of state-changing functions, historical block support, caller context, and timeout/retry behavior. It does not explain return formatting, but the output schema covers this, and not all parameter semantics are repeated, which is acceptable.
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 schema descriptions cover 100% of parameters, so the description adds little extra information. It mentions providing the ABI fragment and block_identifier, but these are already well-documented in the schema. The description does not clarify ambiguous parameters like args vs args_json, so it remains at the baseline for high schema coverage.
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 calls any view/pure function on a smart contract and returns the result. It specifically distinguishes itself by noting state-changing functions are rejected, making it distinct from sibling tools that perform specific reads or 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?
The description provides clear context by stating it is for view/pure functions, explicitly excluding state-changing functions for safety. It also mentions support for historical queries and caller_address, which guides when to use these features. However, it does not explicitly mention when to prefer sibling tools like get_erc20_balance for specific token reads.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_predictionsRecord PredictionsARead-onlyInspect
Record a complete structured prediction document for downstream evaluation. Call once with the exact machine-readable prediction; provide the human-readable report separately.
| Name | Required | Description | Default |
|---|---|---|---|
| predictions | Yes | The complete structured prediction document for this run. |
Output Schema
| Name | Required | Description |
|---|---|---|
| recorded | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'record,' which strongly implies a write operation, while the annotation readOnlyHint=true declares the operation as read-only. This is a direct contradiction. No other behavioral context is provided.
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, front-loaded with the purpose, then usage instruction. Every word is necessary, with no filler or repetition.
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 gives basic usage but leaves the side-effect ambiguity unresolved due to the contradiction between 'record' and readOnlyHint. A single nested object parameter and an output schema exist, yet the description fails to clarify whether or how data is persisted, making it incomplete.
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 already describes the 'predictions' parameter with 100% coverage. The description adds meaningful format guidance: 'exact machine-readable prediction' and separating the human-readable report, which enriches the parameter's intended use 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 uses a specific verb ('record') with a clear object ('complete structured prediction document') and purpose ('for downstream evaluation'). It clearly distinguishes this tool from siblings, which are mostly read-only getters or calculations.
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 explicit usage instructions: call once with the exact machine-readable prediction, and provide the human-readable report separately. It does not name alternative tools, but no sibling appears to serve the same recording function, making context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_ensResolve EnsARead-onlyInspect
Resolve an ENS name (e.g. 'vitalik.eth') to an Ethereum address, or pass an Ethereum address for reverse lookup to its primary ENS name. Also returns the avatar text record when available. Mainnet only.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ENS name (e.g. 'vitalik.eth') to resolve to an address, or an Ethereum address (0x…) for reverse lookup to a primary ENS name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| error | No | |
| avatar | No | |
| address | Yes | |
| resolved | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds value by disclosing additional behavior: reverse lookup capability, avatar text record availability, and the mainnet-only restriction. It does not contradict annotations and goes beyond basic safety hints, but stops short of describing edge cases like unregistered names or error handling.
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, each with clear purpose. The core resolution is stated first, followed by the avatar addition and network constraint. No fluff or repetition; it is both concise and well-structured.
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 tool with an output schema, the description covers all essential aspects: the input formats (name/address), the output direction (address/primary name), the avatar record, and the network (mainnet). The presence of an output schema means return value details are already provided, so the description is fully sufficient.
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 parameter is already fully documented in the schema. The description essentially restates the same info ('ENS name' or 'Ethereum address') without adding new semantics. 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 uses a specific verb ('resolve') and clearly defines the resource (ENS names/addresses). It covers both forward and reverse resolution, which distinguishes it from sibling tools like balance checkers and transaction fetchers. The mention of avatar records and mainnet-only adds specificity without ambiguity.
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 implies its use case by explaining exactly what it does, and the 'Mainnet only' constraint provides a clear exclusion. However, there is no explicit 'use this when' statement or mention of alternatives, though no sibling tool directly overlaps with ENS resolution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_searchWeb SearchARead-onlyInspect
Real-time web search via Tavily. Use for current events, fact-checking, and research. Set search_depth='advanced' for complex research queries (higher quality, higher cost). Set topic='news' for recent headlines or 'finance' for market information.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query | |
| topic | No | Search topic: 'general' for web, 'news' for headlines, 'finance' for markets | general |
| num_results | No | Number of web search results to return (1–20, default 5). | |
| search_depth | No | 'basic' for fast results, 'advanced' for thorough research (higher cost) | basic |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| query | Yes | |
| results | Yes | |
| num_results | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description does not need to restate that. It adds valuable behavioral context by noting that search_depth='advanced' incurs higher cost and that topic='news' or 'finance' narrows results, insights not present in the annotations. This goes beyond the structured data, though it does not mention potential rate limits or pagination, which could be useful.
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 three sentences, front-loaded with the primary purpose, followed by parameter guidance. Every sentence adds distinct value, with no filler or redundancy. It is appropriately concise while covering purpose, use cases, and parameter nuances.
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 moderate complexity, full schema coverage, and read-only annotation, the description supplies all essential information: what it does, when to use it, and how to tailor parameters. The presence of an output schema means return value details are unnecessary, so the description is fully sufficient for agent 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 coverage is 100%, so the baseline is 3, but the description enriches parameter meaning by linking search_depth to complex research queries and cost, and topic to specific content domains (news, finance). These usage-oriented hints help the agent make better parameter choices than the bare schema descriptions 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 description clearly identifies the tool as a real-time web search via Tavily, stating its purpose for current events, fact-checking, and research. This distinguishes it from the sibling tools, which are specific data lookups or calculations, leaving no ambiguity about what this tool does.
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 use cases (current events, fact-checking, research) and practical guidance on when to adjust parameters (search_depth for complex queries, topic for news/finance). However, it does not explicitly compare with alternatives like http_fetch or delegate_to_agent, so it lacks explicit exclusionary guidance, earning a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- AlicenseAqualityAmaintenanceGTM signal intelligence suite for AI agents. Six tools: hiring signals, tech stack detection, company-to-LinkedIn resolution, ICP scoring, job board scanning, and a combined signals aggregator. Built for outbound sales workflows.117371MIT

industrylens-mcpofficial
Flicense-qualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.- -license-qualityCmaintenanceA Voice of Customer pipeline that cross-references feedback from calls, reviews, chat, and other sources to surface only corroborated patterns, routing actionable insights with exact customer quotes to the right people.
- AlicenseAqualityAmaintenanceDetects hiring intent signals by scanning job boards for specific companies. Returns structured role data for outbound sales targeting.1761MIT