Agent Data Tools: Chain data
Server Details
58 pay-per-call tools for AI agents: balances, tokens, blocks, gas, transactions, receipts, nonces and logs on Base, Ethereum, Arbitrum, Optimism and Polygon, plus Bitcoin fees and addresses, Lightning invoices and ENS. USDC via x402.
- Status
- Healthy
- Uptime
- 100.0% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 360 tools
Most tools are cleanly separated by chain prefix and resource/action (balance vs token_balance vs nft_owner), so an agent can usually tell them apart. However, aggregate tools overlap substantially: wallet_balance and wallet_balances have nearly identical descriptions, wallet overlaps both, and pack_* tools duplicate per-chain and per-transaction tools. Descriptions cross-reference some alternatives, but the boundaries between single-chain, aggregate, and pack tools remain fuzzy.
The dominant pattern is a consistent chain-prefix + snake_case action (eth_token_balance, base_nft_owner, op_gas_history), repeated predictably across chains. Deviations are minor: abbreviated chain prefixes (arb, op, avax), singular versus plural (wallet_balance vs wallet_balances), and some chains lacking the NFT family that others have. The overall convention is easy to read and anticipate.
360 tools is an extreme mismatch for a coherent tool set. The surface is largely the same 15-20 read operations replicated across roughly 18 EVM chains, plus packs and aggregate tools, producing a huge menu for an agent to navigate. This is far beyond the 3-15 well-scoped range and well past the 50+ threshold for an extreme count.
For a read-only multi-chain data server, coverage is broad: native and ERC-20 balances, NFTs, gas, blocks, transactions, receipts, logs, proxies, storage, ABI, ENS, BTC, Solana, Merkle and signature utilities. Gaps are minor: NFT tools are missing on several supported EVM chains, transaction history is limited to recent logs rather than full histories, and there is little block-by-hash or generic multi-chain token transfer coverage. Agents can work around these with existing eth_call/log tools.
Available Tools
360 toolsarb_allowanceToken allowance, Arbitrum ERC-20ARead-onlyInspect
ERC-20 token allowance on Arbitrum One: how much a spender may move from an owner's wallet (allowance), raw and in token units, and whether the approval is unlimited. Use to check an approval before a swap or to audit risky open approvals; for the owner's balance use arb_token_balance. Token is a ticker (USDC, USDT, WETH…) or a 0x contract; a missing contract is 404 and a non-ERC-20 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | 0x wallet that gave the approval | |
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address | |
| spender | Yes | 0x contract or wallet allowed to spend (the example is Uniswap Permit2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnly, non-destructive) but the description adds the pricing model ($0.01/call, first 25 free, failures free), the error contract (404 for missing contract, 422 for non-ERC-20, both uncharged), and explains why idempotentHint=false matters: 'each call is charged, so repeats are not free.' That is real value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense paragraph, front-loaded with what/why, then input resolution, then pricing. Every sentence carries information, though the pricing sentence is long and could be split for scanability.
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?
No output schema exists, and the description compensates by naming the return fields (raw allowance, token-denominated allowance, unlimited flag). Combined with the error and pricing contract, an agent has everything needed to call this correctly and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description still adds resolution semantics the schema lacks: token accepts a ticker or a 0x contract, with 404/422 behavior on bad input. It doesn't extend owner/spender meaning, but those are already well documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+chain - ERC-20 allowance on Arbitrum One - and spells out the three returned facts (raw allowance, token units, unlimited flag). Explicitly distinguishes itself from arb_token_balance, which the sibling list confirms exists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives both positive triggers ('check an approval before a swap', 'audit risky open approvals') and an explicit alternative with its condition ('for the owner's balance use arb_token_balance'). An agent can route without opening either schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arb_balanceArbitrum balance, native coinARead-onlyInspect
Native ETH balance (eth_getBalance) of any 0x wallet address on Arbitrum One at the latest block, in wei and in ETH. Use to check whether a wallet can pay gas or a transfer; for ERC-20 tokens use arb_token_balance, for all holdings at once use wallet_portfolio. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet or contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds substantive context beyond them: the read is at the latest block, results come in both wei and ETH, malformed addresses are rejected with 400 and not charged, pricing is $0.002/call with the first 25 free and failed calls free, and repeats are not free because each call is billed. The pricing/charging detail also operationalizes the otherwise puzzling idempotentHint=false.
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 capability, then alternatives, error behavior, example, and pricing in a logical order with no filler. The clause 'reads or computes only and changes nothing' partially restates readOnlyHint, but the remaining sentences all earn their place given the pay-per-call model.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description covers everything an agent needs: what is read, on which chain, at which block, in which units, what the address must look like, what happens on bad input, what it costs, and which siblings handle adjacent 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?
With one parameter at 100% schema coverage, the schema already documents the address field. The description still adds value by constraining the format to 0x addresses, stating that malformed input is rejected with 400 rather than silently failing, and supplying a concrete example address. It stops short of noting contract-address behavior or checksum requirements, keeping it off a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource (native ETH balance of a 0x address), pins the chain (Arbitrum One), the underlying call (eth_getBalance), the block (latest), and the units returned (wei and ETH). It explicitly distinguishes itself from arb_token_balance and wallet_portfolio, so an agent can route correctly without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete use case (check whether a wallet can pay gas or a transfer) and names both alternatives with the condition that selects each: arb_token_balance for ERC-20, wallet_portfolio for all holdings at once. That is explicit when-to-use plus when-to-use-something-else.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arb_blockArbitrum block numberARead-onlyInspect
Latest block number and block details on Arbitrum One, or any block by decimal number: hash, timestamp, transaction count, gas used and limit, base fee in gwei and producer. Use for timestamps and confirmation counts; for current fees use arb_gas. A block that does not exist yet returns 404, uncharged. Example: number=latest. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| number | No | Block number, or 'latest' (default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, and the description reinforces 'reads or computes only and changes nothing' rather than adding to it. However, it does add genuinely new behavioral facts the annotations cannot carry: a nonexistent block returns 404 uncharged, and failed calls are free, which matters for retry strategy. The pricing detail ('$0.002/call', 'first 25 free') explains why idempotentHint=false ('repeats are not free'), making the non-idempotent hint concrete. With annotations covering the safety profile, this lands at a solid mid-range: useful additions but no return-shape or pagination detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and returned fields, then usage routing, then error/pricing edge cases in decreasing priority – a good ordering. It is slightly long: 'each call is charged, so repeats are not free' restates 'Price $0.002/call' and the pricing block sits inside the same sentence cluster as the functional description.
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?
There is no output schema, so the description compensates by listing the returned fields (hash, timestamp, tx count, gas used/limit, base fee, producer) and covers the error path (404, uncharged) and cost model. What is missing is minor: no detail on units beyond gwei, and no note on how base fee behaves on a nonexistent future block beyond the 404.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented as 'Block number, or latest (default)'. The description does add one thing the schema omits: the number must be decimal, and 'number=latest' confirms the accepted sentinel. That is a real but small increment over a fully documented 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?
States a specific verb and resource ('Latest block number and block details on Arbitrum One, or any block by decimal number') and enumerates the returned fields, so the agent knows exactly what it gets. It also names the chain and the sibling it is not (arb_gas), distinguishing it from both same-chain and cross-chain (eth_block, base_block) lookalikes.
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 routes the agent: 'Use for timestamps and confirmation counts; for current fees use arb_gas.' That is a named alternative plus the condition that selects it, so no inference is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arb_callEth call, Arbitrum contract callARead-onlyInspect
Read-only contract call on Arbitrum One (eth_call): send ABI-encoded calldata to a contract at the latest block and get the raw return data, without a transaction or gas. Use to read any view function that has no dedicated tool (the example reads USDC totalSupply, selector 0x18160ddd); decode the result with the function's ABI. Calldata up to 8 KB; a call that reverts is 422 with the reason, uncharged. Example: to=0xaf88d065e77c8cC2239327C5EDb3A432268e5831, data=0x18160ddd. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x contract address to call | |
| data | Yes | 0x ABI-encoded calldata: 4-byte selector plus arguments | |
| from | No | Optional 0x sender address for calls that check msg.sender |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive/non-idempotent, so the bar is lower, but the description still adds real context: 8 KB calldata cap, reverts return 422 with the reason and are uncharged, execution pinned to the latest block, and the pricing model ($0.01/call, first 25 free). The 'repeats are not free' note is consistent with idempotentHint=false rather than 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?
Front-loaded with what the tool is and when to use it, and every sentence contributes (limits, pricing, revert behavior). It is a single dense paragraph and the pricing/credits detail is slightly over-weighted relative to its selection value, keeping it just under a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description discharges that burden by explaining the return is raw undecoded return data that must be decoded with the function's ABI. Together with block semantics, revert behavior, and cost, an agent has everything needed to invoke and interpret the result 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%, so baseline would be 3, but the description adds meaning beyond the schema: the calldata format is spelled out (4-byte selector plus arguments) and demonstrated with a real selector, and the 8 KB size limit is only stated here. The optional 'from' parameter is left to the schema, which is acceptable given full 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?
States a specific verb and resource ('Read-only contract call on Arbitrum One (eth_call)') plus the exact scope: ABI-encoded calldata to a contract at the latest block, raw return data, no transaction or gas. It also distinguishes itself from the family of dedicated readers like arb_token_balance/arb_token_info by saying it covers 'any view function that has no dedicated tool'.
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 routes the agent: use this for view functions lacking a dedicated tool, and the concrete example (USDC totalSupply, selector 0x18160ddd) shows the intended call shape. Cost and retry conditions (charged per call, repeats not free, failed calls free) are stated, which is the practical guidance an agent needs before calling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arb_estimate_gasEstimate gas, ArbitrumARead-onlyInspect
Estimate the gas a transaction would use on Arbitrum One (eth_estimateGas) and what it would cost at the current gas price, in gas units, gwei and ETH. Give to, plus value in ETH and calldata for a contract call, and the sender when the call depends on it. Use before sending a transaction or to price a batch; for the gas price alone use arb_gas. A transaction that would revert is 422 with the reason, uncharged. Example: to=0x000000000000000000000000000000000000dEaD. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x recipient or contract address | |
| data | No | Optional 0x calldata for a contract call | |
| from | No | 0x sender address (default: an empty address) | |
| value | No | Amount of ETH to send, in ETH (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive, non-idempotent, open-world, but the description adds genuinely new behavior: reverting transactions return 422 with the reason and are uncharged, and each successful call is billed so repeats are not free. The pricing/payment path (x402 USDC, card key, first 25 free) further clarifies cost consequences. Only the precise response shape for success is left implicit, which is minor for a no-output-schema 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?
Front-loaded with the verb and resource, then inputs, then alternatives, then behavior and pricing — a sensible ordering with no filler sentences. It is slightly long, and the payment/billing block is dense, but every clause carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter, read-only estimator with no output schema, the description covers what is returned (gas units, gwei, ETH), the failure mode (422 with revert reason, uncharged), the cost model, and which sibling to use instead. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds real nuance: value is expressed in ETH and the sender is required only when the call depends on it. The inclusion of a concrete example address (to=0x...dEaD) also anchors the expected address format beyond the schema's generic '0x recipient or contract address'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — estimate gas for a transaction on Arbitrum One — and names the underlying method (eth_estimateGas) plus exactly what is returned (gas units, gwei, ETH cost). It explicitly distinguishes itself from the sibling arb_gas, which only reports gas price, so an agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use triggers ('before sending a transaction or to price a batch') and an explicit when-not/alternative ('for the gas price alone use arb_gas'). It also states the preconditions for inputs ('sender when the call depends on it'), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arb_gasArbitrum One gas priceARead-onlyInspect
Current gas price on Arbitrum One (eth_gasPrice): gas price, base fee and suggested priority fee in gwei, plus what a plain ETH transfer (21,000 gas) costs right now. Takes no input. Use before sending a transaction or to decide whether to wait; for the fee a past transaction actually paid use arb_receipt. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Optional: comma-separated top-level result keys to keep, for a smaller answer (for example only=price,symbol); unknown keys are ignored and an empty match returns the full result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: cost per call ($0.002 via x402 USDC or card key), a 25-call free tier, failed calls free, and that repeats are charged — which usefully explains the idempotentHint=false in billing terms. It also restates that the tool reads/computes only and changes nothing, which the readOnlyHint already carries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and returned values, then usage, then billing. Dense but every clause carries information; the pricing/free-tier sentence is the longest and is only marginally over-explained for a single call decision.
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 no output schema, the description correctly enumerates the returned fields and adds the practical 21,000-gas cost framing. The one gap is that the optional `only` projection is never mentioned and is actively denied, leaving the answer slightly incomplete relative to the actual response shape.
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 `only` filter is fully documented in the schema, but the description asserts 'Takes no input,' which is inaccurate for a tool that accepts an optional `only` projection parameter. That statement could cause an agent to skip a useful result-slimming option, so it falls below the baseline-3 case where the description is merely silent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Current gas price on Arbitrum One') and enumerates exactly what is returned: gas price, base fee, suggested priority fee in gwei, plus the 21,000-gas transfer cost. That detail distinguishes it cleanly from arb_gas_history (historical) and arb_estimate_gas (per-transaction estimation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance ('before sending a transaction or to decide whether to wait') and names the alternative for the adjacent need ('for the fee a past transaction actually paid use arb_receipt'). Nothing is left to inference about which sibling to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arb_gas_historyArbitrum gas history, gas priceARead-onlyInspect
Gas price history on Arbitrum One (eth_feeHistory): base fee in gwei for each of the last N blocks (5-100, default 20), how full each block was, and the 10th, 50th and 90th percentile priority fees, with the low, average and high base fee over the window. Use to judge whether fees are rising, pick a priority fee or time a transaction; for the current price alone use arb_gas. Example: blocks=20. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks, 5-100 (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, but the description adds substantive context beyond them: the pricing model ($0.01/call via x402 USDC or card key, first 25 free, failed calls free) and the clarification that each call is charged so repeats are not free — which explains the otherwise puzzling idempotentHint=false. It could have gone further on latency or response size, but the cost and repeat-charging disclosure is genuinely 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?
It is front-loaded with what the tool returns, then usage, then cost — a sensible order with no filler sentences. It is dense and slightly long, and the blocks example is largely redundant with the stated default, which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description compensates by enumerating the returned metrics (per-block base fee, fill ratio, percentile priority fees, window low/average/high), so an agent knows what comes back. Combined with cost, safety, and the arb_gas alternative, it is nearly complete; only things like pagination or per-block metadata limits are unaddressed.
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 single parameter already documents 'How many recent blocks, 5-100 (default 20)'; the description restates that range and default verbatim rather than adding new meaning. The 'Example: blocks=20' adds little since 20 is already the default. Baseline 3 applies when the schema carries the parameter documentation.
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 names a specific chain (Arbitrum One), a specific RPC method (eth_feeHistory), and enumerates exactly what is returned: base fee in gwei per block, block fullness, 10th/50th/90th percentile priority fees, and low/average/high base fee over the window. It explicitly distinguishes itself from the sibling arb_gas, noting that tool is for the current price alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives three concrete use cases (judge whether fees are rising, pick a priority fee, time a transaction) and names the alternative for the current-price case: 'for the current price alone use arb_gas'. This is an explicit when-to-use plus when-to-use-something-else routing statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arb_is_contractArbitrum is-contract checkARead-onlyInspect
Check whether a 0x address on Arbitrum One is a smart contract or a plain wallet: bytecode size, and whether it is an EIP-1167 minimal proxy and which implementation it points to. Use before sending funds or approving a spender; for a fuller risk verdict use check_counterparty. A malformed address is rejected with 400, uncharged. Example: address=0xaf88d065e77c8cC2239327C5EDb3A432268e5831. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description discloses pricing ($0.01/call, first 25 free, failed calls free), that malformed input returns 400 uncharged, and that repeat calls are billed, which usefully explains the otherwise surprising idempotentHint=false. It omits return-format details such as the field names the agent will receive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and return facts are front-loaded, followed by usage guidance and then commercial/error details in a logical order. The pricing and free-tier clauses are dense but each supports a real agent decision, so there is little true 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?
There is no output schema, and the description largely compensates by naming the results (contract vs wallet, bytecode size, proxy type, implementation). It stops short of describing the actual response shape and does not mention whether unverified or precompile addresses are handled, which is a modest gap for a one-parameter read 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?
With only one parameter and 100% schema coverage, the schema carries the baseline; the description still adds value by providing a concrete example address and stating the validation outcome for a malformed address. Chain scoping (Arbitrum One only) is another useful constraint not present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (check whether), a specific resource (a 0x address on Arbitrum One), and the returned facts (bytecode size, EIP-1167 minimal-proxy status, implementation address). It does not explain how it differs from the sibling arb_proxy, which also inspects proxy/implementation relationships, so sibling differentiation is incomplete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete decision context (before sending funds or approving a spender) and points to an alternative for a fuller risk verdict. The weakness is that the named alternative, check_counterparty, is not among the sibling tools listed, so the routing pointer may not resolve for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arb_logsArbitrum event logsARead-onlyInspect
Recent contract event logs on Arbitrum One (eth_getLogs): the events a contract emitted over the last N blocks (1-1,000, default 50), optionally filtered by topic0 (the 0x 32-byte event signature hash). Returns up to 100 logs with block, transaction hash and topics. Use to watch transfers or contract events; for one transaction's outcome use arb_receipt. Example: address=0xaf88d065e77c8cC2239327C5EDb3A432268e5831. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks to scan (1-1000, default 50) | |
| topic0 | No | Optional 0x event signature hash to filter by | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/idempotent annotations, the description discloses result limits (up to 100 logs, block lookback 1–1,000 default 50), the shape of returned fields (block, tx hash, topics), and pricing/billing behavior (per-call charge, first 25 free, failed calls free, repeats not free). The note that repeats are not free is precisely the kind of behavior an agent needs to avoid redundant calls, which the annotations alone could not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and method are front-loaded in the opening clause, with limits, returns, alternatives, pricing, and safety trailing in a logical order. It runs long, and folding the pricing and example into the same paragraph makes it denser than necessary, but no sentence is truly wasted information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter read-only tool with no output schema, the description covers inputs, return shape, caps, and cost, which is enough to call it correctly. The one minor gap is not saying what happens when a block window matches more than 100 logs (silent truncation vs. error), but the stated cap gives the agent enough to plan around 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?
Schema coverage is 100%, so all three parameters already carry descriptions, making the baseline 3. The description adds only marginal value — clarifying topic0 as a 32-byte event signature hash and providing a concrete address example — while the blocks range/default merely restates 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 names a specific verb and resource ('Recent contract event logs on Arbitrum One'), ties it to the underlying RPC method (eth_getLogs), and states the scope (last N blocks, topic0 filter, up to 100 logs). It also distinguishes itself from the nearest sibling by pointing to arb_receipt for single-transaction outcomes, so an agent can separate it from arb_tx/arb_receipt without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit usage context ('Use to watch transfers or contract events') plus an exclusion with a named alternative ('for one transaction's outcome use arb_receipt'). The only weakness is that 'watch transfers' could also route to arb_token_transfers, which is not acknowledged, leaving a small ambiguity in the guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arb_nft_balanceNFT balance, ArbitrumARead-onlyInspect
How many NFTs of one ERC-721 collection a wallet holds on Arbitrum One (balanceOf), with the collection's name and symbol. Use to check a holder before a token-gated action or to see whether a wallet still holds a collection; for who holds one token id use arb_nft_owner. Both inputs are 0x addresses; a missing contract is 404, a contract that is not ERC-721 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet address | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/no-destroy/open-world status, but the description adds real value beyond them: error contracts (404 missing contract, 422 non-ERC-721, both uncharged), pricing ($0.01/call via x402 or card key, first 25 free, failed calls free), and that repeats are billed — consistent with idempotentHint=false. It never states the response shape beyond name/symbol, and doesn't mention rate limits, which keeps it shy of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core operation and the sibling disambiguation, then error and billing facts. Dense but mostly earned; the pricing/charging sentences are the longest portion relative to the operation's simplicity, so not perfectly tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description discloses what comes back (balance plus collection name and symbol), the two failure modes and their billing treatment, and the prerequisite that both arguments are 0x addresses. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description still adds meaning by saying both inputs are 0x addresses and that the contract must be a valid ERC-721 collection (else 422), which ties the parameter to a failure mode. It adds no format examples or distinctions beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource: counts how many NFTs of one ERC-721 collection a wallet holds on Arbitrum One (balanceOf), plus returns collection name and symbol. Explicitly distinguishes itself from arb_nft_owner ('for who holds one token id use arb_nft_owner'), so an agent can pick between the two without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names two concrete use cases (gate check before a token-gated action; verifying a wallet still holds a collection) and routes the alternative case (who holds a specific token id) to arb_nft_owner. Both when-to-use and when-not-to-use are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arb_nft_metadataNFT metadata, ArbitrumARead-onlyInspect
NFT metadata on Arbitrum One: the token URI of one ERC-721 token id (tokenURI) and the JSON it points to (name, description, image, attributes), read from data: URIs, https or ipfs:// (through ipfs.io). Strings over 1,000 characters, such as on-chain SVG images, are shortened. Use to show or check what an NFT is; for its owner use arb_nft_owner. A token that does not exist is 422, uncharged; unreachable metadata is reported in metadataError. Example: contract=0xC36442b4a4522E871399CD717aBDD847Ab11FE88, tokenId=1. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | Token id, a whole number | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses output truncation for strings over 1,000 chars (e.g. on-chain SVG), 422-uncharged for nonexistent tokens, metadataError for unreachable metadata, the ipfs.io gateway path, and the $0.01/call price with a 25-call free tier. The note that repeats are charged is consistent with idempotentHint=false and explains the cost model annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The capability and its distinguishing scope are front-loaded, then behavior, error cases, example, and pricing in a sensible order. It is dense and the pricing/cost sentence is long, but no sentence is 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?
There is no output schema, so the description carries the return contract — it names the returned fields, the truncation rule, and the metadataError signal. Combined with the error and pricing notes, an agent has everything needed to call and interpret this 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?
Schema coverage is 100%, so the baseline is 3; the description adds a concrete worked example (contract=0xC364...FE88, tokenId=1) that fixes the expected address and token-id format for call construction. It does not add further constraints beyond that, so it lands just above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — reads the tokenURI and the resolved JSON metadata (name, description, image, attributes) for one ERC-721 token id on Arbitrum One. It also names the sibling it is not (arb_nft_owner) and its chain-specific scope, so an agent can distinguish it from eth_/base_/op_/polygon_nft_metadata without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use to show or check what an NFT is; for its owner use arb_nft_owner" gives an explicit when-to-use plus the routing alternative. It also names the supported metadata sources (data:, https, ipfs://) so an agent knows which tokens it can resolve.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arb_nft_ownerArbitrum NFT ownerARead-onlyInspect
Owner of an NFT on Arbitrum One: the wallet that holds one ERC-721 token id right now (ownerOf), plus the collection's name and symbol. Use to verify who holds an NFT before a trade, a mint gate or an airdrop; for how many a wallet holds use arb_nft_balance, for the token's metadata arb_nft_metadata. A missing contract is 404, a token that does not exist 422, both uncharged. Example: contract=0xC36442b4a4522E871399CD717aBDD847Ab11FE88, tokenId=1. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | Token id, a whole number | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, open-world. The description adds genuinely new behavior: 404 for a missing contract, 422 for a nonexistent token, both uncharged; $0.01 per call via x402 or a card key with the first 25 free and failed calls free; and repeats are re-charged, which explains the non-idempotent hint. It stops short of describing return shape ordering or chain-reorg caveats, so a 4 rather than 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the definition, then alternatives, then error/pricing facts — a logical order with no filler. It is dense and slightly overpacked (example and pricing detail in the same breath as semantics), keeping it just under a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still names the returned data (owner wallet, collection name and symbol), covers failure modes, and states the cost model. An agent has everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still adds value with a worked example (a real Uniswap V3 position-manager contract plus tokenId=1) that shows the expected address format and that tokenId is a bare integer. It doesn't explain edge cases such as burned tokens or non-ERC-721 contracts, so it stays at 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: returns the owner (ownerOf) of one ERC-721 token id on Arbitrum One, plus the collection name and symbol. It explicitly contrasts with arb_nft_balance and arb_nft_metadata, so an agent can pick it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete occasions to use it (verifying a holder before a trade, mint gate, or airdrop) and names the two sibling alternatives with the condition that selects each. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arb_nonceArbitrum nonce, account nonceARead-onlyInspect
Read the transaction count (nonce) of a 0x address on Arbitrum One, both confirmed and including pending transactions. Use to build the next transaction or to tell whether an address has ever sent anything; for its balance use arb_balance. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the supplied annotations: malformed addresses are rejected with 400 and not charged, pricing is $0.01/call via x402 USDC or a card key with the first 25 free, and failed calls are free. It also explains the practical consequence of idempotentHint=false — each call is billed, so repeating it is not free — which is exactly the kind of context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the definition, then uses, then the sibling pointer, then failure/pricing notes, then the example — a sensible ordering with little filler. It is dense but each sentence carries operational information; the example and pricing sentence could be trimmed for a tighter read but they earn their place for an agent that must budget calls.
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 no output schema, the description should clarify what comes back; 'both confirmed and including pending transactions' strongly implies two counts but leaves the exact shape slightly ambiguous. Everything else an agent needs — chain, input format, cost, error behavior, safety profile — is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one parameter, so the baseline is 3; the description still adds value by demonstrating the exact address format with a worked example and by specifying the failure mode for a malformed address. It does not add syntax details beyond that, so it sits just above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the transaction count (nonce) of a 0x address') and pins the chain ('on Arbitrum One'), which is what distinguishes it from the many sibling *_nonce tools for other networks. It also scopes the result ('both confirmed and including pending transactions'), so an agent knows exactly what it retrieves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases (build the next transaction; detect whether an address has ever sent anything) and routes the balance question to the sibling arb_balance. It stops short of explicit exclusions, such as when to prefer arb_tx or arb_receipt for historical transaction detail, so it falls under 'clear context, no exclusions' rather than a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arb_proxyProxy implementation, ArbitrumARead-onlyInspect
Find the implementation behind a proxy contract on Arbitrum One: reads the EIP-1967 implementation, beacon and admin slots, EIP-1822 (UUPS), the older OpenZeppelin layout and EIP-1167 minimal-proxy bytecode, and names the kind found. Use before trusting or decoding a contract whose code can be swapped by its admin; for a fuller risk verdict use contract_risk. A malformed address is 400; an address without code is 404, both uncharged. Example: address=0xaf88d065e77c8cC2239327C5EDb3A432268e5831. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so safety framing is partially redundant rather than additive. What the description genuinely adds is cost behavior (per-call charge, repeats not free, failures uncharged) and the failure taxonomy (400 malformed vs 404 no code) — useful, but the pricing paragraphs are commercial boilerplate that wouldn't change a tool-selection decision. It stops short of saying what the response contains beyond 'names the kind found'.
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 capability and the alternative routing are front-loaded in the first two sentences, which is the right ordering. Efficiency is slightly hurt by three clauses of payment/credits detail at the end that most callers won't act on, but nothing is genuinely redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still indicates the return content ('names the kind found') and lists the proxy standards checked, which is enough to set expectations. Failure modes and cost are covered; only the exact shape of the response is left to discovery, a minor gap for a single-parameter read 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?
Only one parameter and schema description coverage is 100%, so the schema already carries the meaning and the baseline is 3. The description does add a concrete address example and implicitly ties the parameter to the Arbitrum chain, which is modest added value, but no format constraints beyond the schema's '0x contract address'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Find the implementation behind a proxy contract on Arbitrum One') and enumerates exactly which storage slots / bytecode patterns it inspects, so an agent knows the precise capability. The chain is named, which separates it from the eth_proxy/base_proxy/op_proxy/polygon_proxy siblings despite the parallel naming scheme.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use condition ('before trusting or decoding a contract whose code can be swapped by its admin') and an explicit alternative with a selection rule ('for a fuller risk verdict use contract_risk'). The 400/404 semantics also tell the agent what failure looks like without trial and error.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arb_receiptArbitrum One transaction receiptARead-onlyInspect
Transaction receipt on Arbitrum One (eth_getTransactionReceipt): success or reverted, gas used, effective gas price, fee paid in ETH, number of event logs and any contract created. Use to confirm a payment or call went through; for sender, value and calldata use arb_tx. Input is a 0x-prefixed 64-hex hash; a pending or unknown hash returns 404, uncharged. Example: hash=0xf03682db039f7b1b72ddf4d17572738f142cf63ecb36c90afa570430ea9774c4. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/non-idempotent annotations, the description adds important operational context: pending hashes return 404 uncharged, failed calls are free, pricing is $0.01/call via x402 or card key, and repeats are charged again. These are material behavioral and billing details an agent should know before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and return content are front-loaded, and the description is dense but readable. Some clauses repeat annotation-level facts, such as read-only behavior and non-free repeats, but the extra pricing and error details generally earn their 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?
For a one-parameter tool with no output schema, the description supplies enough detail: it enumerates the receipt fields, explains the 404 case, and discloses billing behavior. An agent has what it needs to call and interpret 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%, so the single hash parameter is already well documented. The description still adds a concrete example and clarifies that a pending or unknown hash produces a 404 rather than a normal receipt, which is useful handling 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 states a specific resource and chain (transaction receipt on Arbitrum One / eth_getTransactionReceipt) and enumerates the returned fields: status, gas used, effective gas price, fee, logs, and contract creation. It explicitly distinguishes itself from arb_tx by saying sender, value, and calldata belong there.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit use case — confirming that a payment or call went through — and names arb_tx as the alternative for sender/value/calldata. It also explains the pending/unknown-hash case as a 404 response.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arb_storageStorage slot read, ArbitrumARead-onlyInspect
Read one raw storage slot of a contract on Arbitrum One (eth_getStorageAt): the 32-byte word, as a number and, when it holds one, as an address. Slot is a decimal index or a 0x 32-byte key (mapping and proxy slots). Use to inspect contract state that has no getter, owners or implementation pointers; for proxies use arb_proxy. A malformed address or slot is rejected with 400, uncharged. Example: address=0xaf88d065e77c8cC2239327C5EDb3A432268e5831. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | Slot: a decimal index (0, 1, 2…) or a 0x 32-byte key | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly/openWorld/non-destructive/non-idempotent), the description adds material operational facts: malformed address or slot returns 400 and is uncharged, failed calls are free, and each successful call is charged so repeats are not free. It also discloses the dual return representation. This is real context rather than restatement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and return shape, then usage, errors, pricing in a sensible order. Slightly redundant at the tail: 'each call is charged, so repeats are not free' restates the earlier 'Price $0.01/call' clause and could be trimmed.
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?
No output schema exists, and the description compensates by describing the returned 32-byte word in both numeric and address form. Combined with error behavior and cost model, an agent has everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns an increment by explaining that a slot may be a decimal index or a 0x 32-byte key and that keyed form is used for mapping and proxy slots — meaning the schema does not convey. It also supplies a concrete address example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Read one raw storage slot of a contract on Arbitrum One (eth_getStorageAt)'. It also pins the return shape (32-byte word as number, and as address when applicable), which lets an agent distinguish it from arb_call, arb_balance, and the other arb_* readers without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the use case ('contract state that has no getter, owners or implementation pointers') and routes the proxy case to the sibling: 'for proxies use arb_proxy'. Both when-to-use and when-to-use-something-else are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arb_token_balanceArbitrum One ERC-20 balanceARead-onlyInspect
ERC-20 token balance of a wallet on Arbitrum One (USDC, USDT, WETH or any token, via balanceOf): raw amount, decimals, symbol and the human-readable amount, live from the token contract. Use to check stablecoin or token holdings before a transfer or trade; for the native coin use arb_balance. Both inputs are 0x addresses (40 hex characters); no contract returns 404 and a non-ERC-20 contract 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC, USDT, WETH or DAI, or the 0x ERC-20 contract address | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: discloses pricing ($0.01/call via x402 or credits, first 25 free, failed calls free), error semantics (404 for no contract, 422 for a non-ERC-20 contract, both uncharged), and confirms nothing is mutated. 'Each call is charged, so repeats are not free' also explains the otherwise puzzling idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the result shape and the sibling distinction, which is the right ordering, and every clause carries information. It is a dense single paragraph with mild redundancy — pricing is stated and then restated as 'each call is charged, so repeats are not free'.
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 no output schema, the description correctly compensates by describing the return fields, and it covers errors, cost, and the sibling alternative. The only substantive gap is the mischaracterization of the token parameter's accepted forms, which is the one thing an agent could get wrong when calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does add the 40-hex-character address format, but its claim that 'Both inputs are 0x addresses' conflicts with the schema's token parameter, which accepts tickers like USDC or WETH — an agent reading only the prose could wrongly reject a ticker input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (fetch an ERC-20 balanceOf result for a wallet on Arbitrum One) and enumerates exactly what comes back: raw amount, decimals, symbol, human-readable amount. It explicitly separates itself from arb_balance for the native coin, so an agent can pick it over the dozens of sibling *balance tools without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case ('check stablecoin or token holdings before a transfer or trade') and names the alternative with the condition that selects it ('for the native coin use arb_balance'). None of the other 90+ siblings are confused with it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arb_token_infoArbitrum token info, ERC-20ARead-onlyInspect
Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Arbitrum One, live from the contract. Use to identify an unknown token address or to format raw amounts; for a holder's balance use arb_token_balance. Input is a ticker (USDC, WETH…) or the token's 0x contract address; an address that is not an ERC-20 contract returns 422, uncharged. Example: token=0xaf88d065e77c8cC2239327C5EDb3A432268e5831. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, open-world, non-idempotent; the description adds pricing ($0.01/call, 25 free), that failed calls are free, and that repeats are not free — which explains the otherwise puzzling idempotentHint=false on a read. It does not mention caching or latency, a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what is returned and how to use it, then pricing and error semantics. Dense but every sentence carries information; the final sentence bundles read-only, charge, and repeat-nonfree facts a bit tightly.
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?
No output schema exists, yet the description enumerates the returned fields (name, symbol, decimals, total supply) and covers the single input's two forms, error behavior, and cost — everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description adds that a bare ticker is accepted as well as a 0x address and supplies a worked example address, clarifying input flexibility beyond the schema's one-liner.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Arbitrum One') and scopes it to a chain, so it is clearly distinguishable from the dozens of sibling *_token_info tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives both positive use cases (identify an unknown token address, format raw amounts) and an explicit alternative with its condition ('for a holder's balance use arb_token_balance'), plus the failure case (non-ERC-20 address returns 422).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arb_token_transfersToken transfers, Arbitrum OneARead-onlyInspect
List a wallet's recent transfers of one ERC-20 token (default USDC) on Arbitrum One, in and out, over the last N blocks (1-2,000, default 1,000): direction, counterparty, amount and transaction, newest first, up to 50. Use to confirm a payment arrived or see what was sent; for the current balance use arb_token_balance. Malformed addresses are rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Token: a ticker such as USDT or WETH, or the 0x ERC-20 contract (default: USDC on this network) | |
| blocks | No | How many recent blocks to scan (1-2000, default 1000; 2,000 blocks is about 8 minutes on Arbitrum One) | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: result cap of 50, newest-first ordering, default token, and the crucial clarification that repeats are not free because billing — not state — drives idempotentHint=false. The only gap is that it doesn't say what an empty result or a token with no transfers looks like, but the read-only/non-destructive profile is fully consistent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and every clause carries information (scope, ordering, cap, alternative, error path, pricing). It is dense to the point of being a single run-on block, and the pricing/credits tail is longer than most agents need.
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?
There is no output schema, and the description compensates by enumerating the returned fields (direction, counterparty, amount, transaction) and their ordering and cap. Inputs, caveats and cost model are all covered, so nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns extra by restating the blocks range (1-2,000, default 1,000), the USDC token default, and giving a concrete checksummed address example. It doesn't clarify ticker-vs-contract resolution edge cases, which stays in 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?
States a specific verb and resource ('List a wallet's recent transfers of one ERC-20 token'), plus chain, direction (in and out), window and result cap. It also names the sibling it is not (arb_token_balance for current balance), so an agent can distinguish it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use cases ('confirm a payment arrived or see what was sent') and an explicit alternative ('for the current balance use arb_token_balance'). It even covers the failure path: malformed addresses are rejected with 400 and uncharged.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arb_txArbitrum transactionARead-onlyInspect
Look up an Arbitrum One transaction by hash: sender, recipient, value in ETH, nonce, gas limit, the 4-byte function selector and its block. Use to see what was sent or whether it exists; for success or failure and fees paid use arb_receipt, for emitted events arb_logs. Input is a 0x-prefixed 64-hex hash; an unknown hash returns 404, uncharged. Example: hash=0xf03682db039f7b1b72ddf4d17572738f142cf63ecb36c90afa570430ea9774c4. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, open-world, non-idempotent, so safety is covered. The description still adds real behavioral context: unknown hash returns 404 uncharged, failed calls are free, each successful call costs $0.01 via x402 USDC or card key, and the first 25 are free. It does not describe the response envelope or field types, which is the main remaining gap. A 3 reflects solid but incomplete disclosure beyond 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?
Front-loaded with purpose and alternatives, then input format, then pricing. Dense but every clause carries information. The pricing and example sentences make it longer than average, though they earn their place for a paid endpoint; minor run-on quality keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description compensates by listing exactly which fields come back. Combined with the input format, error behavior, and cost model, an agent has everything needed to call it and interpret the result without further context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented as a 0x-prefixed 64-hex hash, so the baseline is 3. The description reinforces the format and supplies a concrete example hash plus the 404-on-unknown consequence, which helps validation, but adds no new syntactic or semantic dimensions 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?
States a specific verb and resource ("Look up an Arbitrum One transaction by hash") and enumerates the returned fields: sender, recipient, value in ETH, nonce, gas limit, 4-byte selector, block. It explicitly names the sibling tools arb_receipt and arb_logs as the places to go for complementary data, so the agent can discriminate without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a positive use case ("see what was sent or whether it exists") plus explicit routing rules: use arb_receipt for success/failure and fees, arb_logs for emitted events. No alternative is left implicit among the many *_tx/*_receipt/*_logs siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_allowanceToken allowance, AvalancheARead-onlyInspect
ERC-20 token allowance on Avalanche: how much a spender may move from an owner's wallet (allowance), raw and in token units, and whether the approval is unlimited. Use to check an approval before a swap or to audit risky open approvals; for the owner's balance use avax_token_balance. Token is a ticker (USDC, USDT, WETH…) or a 0x contract; a missing contract is 404 and a non-ERC-20 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | 0x wallet that gave the approval | |
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address | |
| spender | Yes | 0x contract or wallet allowed to spend (the example is Uniswap Permit2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/destructive/openWorld, but the description adds real context beyond them: the $0.01/call x402 USDC or card-key billing, the first 25 calls free, failed calls free, and that repeats are charged — which explains the non-obvious idempotentHint=false in economic rather than state terms. Only gap is that it does not detail casing/rounding of the returned units, which is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the definition and use cases, then error codes, then pricing — a sensible information order where every sentence carries actionable content. Slightly dense with several clauses in one paragraph, and 'reads or computes only and changes nothing' partly restates readOnlyHint=true.
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?
Only 3 required params, no nested objects, no output schema — yet the description still tells the agent what comes back (raw and human-unit allowance, unlimited flag) and what errors to expect. Nothing needed to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description earns an extra point by adding meaning beyond the schema — the ticker-or-0x-contract duality of 'token' is tied to concrete error outcomes (404 for missing contract, 422 for non-ERC-20), which the schema does not state. It doesn't add anything for 'owner' or 'spender' beyond the schema's own descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: reads ERC-20 allowance on Avalanche (owner → spender), and even enumerates the return values (raw amount, token units, unlimited flag). It explicitly names the sibling it is not ('for the owner's balance use avax_token_balance'), so an agent can route between avax_allowance and avax_token_balance without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use cases ('check an approval before a swap', 'audit risky open approvals') plus an explicit exclusion pointing to avax_token_balance. It also documents the failure branches (missing contract = 404, non-ERC-20 = 422) so the agent knows what invalid input looks like.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_balanceAvalanche balance, native coinARead-onlyInspect
Native AVAX balance (eth_getBalance) of any 0x wallet address on Avalanche at the latest block, in wei and in AVAX. Use to check whether a wallet can pay gas or a transfer; for ERC-20 tokens use avax_token_balance, for all holdings at once use wallet_portfolio. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet or contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/destructive, but the description goes well beyond them: it discloses pricing ($0.01/call, first 25 free, failed calls free), that a malformed address returns 400 uncharged, and that repeated calls are re-charged — which explains the non-obvious idempotentHint=false. That billing and error behavior is exactly the context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and chain, then siblings, then error/billing notes, then the read-only reassurance. Dense but every sentence carries information; the billing tail is slightly repetitive ('each call is charged, so repeats are not free' after already stating price per call).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description supplies the return shape (wei and AVAX, latest block), the error path, the cost model, and the sibling routing. Nothing an agent needs to call it correctly or interpret the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is self-explanatory, so the baseline is 3. The description adds real meaning on top: a concrete example address and the behavior for a malformed value (rejected with 400, uncharged), which tells the agent what valid input looks like and what a bad input costs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: native AVAX balance of a 0x address on Avalanche at the latest block, returned in wei and AVAX. It also names the underlying call (eth_getBalance) and explicitly distinguishes itself from avax_token_balance (ERC-20) and wallet_portfolio (all holdings), so an agent can route without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case (checking whether a wallet can pay gas or a transfer) and names both alternatives with the condition that selects each: ERC-20 tokens go to avax_token_balance, all holdings go to wallet_portfolio. When-not guidance is implicit but unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_blockAvalanche block numberARead-onlyInspect
Latest block number and block details on Avalanche, or any block by decimal number: hash, timestamp, transaction count, gas used and limit, base fee in gwei and producer. Use for timestamps and confirmation counts; for current fees use avax_gas. A block that does not exist yet returns 404, uncharged. Example: number=latest. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| number | No | Block number, or 'latest' (default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces that with 'reads or computes only and changes nothing.' What it adds beyond annotations is cost behavior: $0.01/call, first 25 free, failed calls free, and the explicit note that repeats are not free — which explains the otherwise puzzling idempotentHint=false. It stops short of describing pagination or response shape, but for a single-block lookup that is minor.
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 first sentence front-loads purpose and return fields, following sentences handle alternatives, edge cases, and pricing. It is dense but nearly every clause earns its place; the only slight redundancy is restating the per-call charge twice ('$0.01/call' and 'each call is charged, so repeats are not free'), though the second instance does clarify non-idempotency.
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 no output schema, the description carries the return-value burden and does so by listing the block fields returned. Combined with the 404 behavior, example call, and cost model, an agent has everything needed to invoke this correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented, so the baseline is 3. The description still adds value by specifying 'decimal number' format and giving a concrete example (number=latest), which removes ambiguity about hex vs decimal input and confirms 'latest' as the default.
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+resource (fetch block number or block details) scoped to Avalanche, and enumerates exactly what comes back (hash, timestamp, tx count, gas used/limit, base fee, producer). It is clearly separable from siblings like avax_gas and avax_tx without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the use cases (timestamps and confirmation counts) and explicitly routes the agent to avax_gas for current fees, which is the main adjacent-sibling ambiguity. It also states the edge case that a future block returns 404 and is uncharged, so the agent knows the failure mode in advance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_callEth call, AvalancheARead-onlyInspect
Read-only contract call on Avalanche (eth_call): send ABI-encoded calldata to a contract at the latest block and get the raw return data, without a transaction or gas. Use to read any view function that has no dedicated tool (the example reads USDC totalSupply, selector 0x18160ddd); decode the result with the function's ABI. Calldata up to 8 KB; a call that reverts is 422 with the reason, uncharged. Example: to=0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E, data=0x18160ddd. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x contract address to call | |
| data | Yes | 0x ABI-encoded calldata: 4-byte selector plus arguments | |
| from | No | Optional 0x sender address for calls that check msg.sender |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond annotations: 8 KB calldata cap, revert behavior (422 with reason, uncharged), and full pricing model ($0.01/call, first 25 free, failed calls free, repeats not free). That last point reconciles the billing implications of idempotentHint=false, which annotations alone would not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then limits, then pricing; every line is informative. The pricing sentence is dense and could be split, but nothing is truly wasted for a paid API.
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?
No output schema exists, and the description compensates by stating the return is raw hex return data that must be decoded with the function ABI. Error behavior, size limit, and cost model are all covered, so an agent has what it needs to call and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and describes all three params, so the schema carries the load; the description still reinforces that data is selector+args and shows a real to/data pair. The optional 'from' parameter (msg.sender checks) is not mentioned in the description, leaving a small gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('read-only contract call ... eth_call', 'send ABI-encoded calldata ... get raw return data') on a named chain. The line 'use to read any view function that has no dedicated tool' lets an agent distinguish it from the dozens of specific avax_* readers without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use: any view function lacking a dedicated tool, with a concrete worked example (USDC totalSupply). It implies the alternative class (dedicated tools) but never names one, and doesn't address when to use avax_call vs the equivalent eth_call/arb_call on another chain.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_estimate_gasEstimate gas, AvalancheARead-onlyInspect
Estimate the gas a transaction would use on Avalanche (eth_estimateGas) and what it would cost at the current gas price, in gas units, gwei and AVAX. Give to, plus value in AVAX and calldata for a contract call, and the sender when the call depends on it. Use before sending a transaction or to price a batch; for the gas price alone use avax_gas. A transaction that would revert is 422 with the reason, uncharged. Example: to=0x000000000000000000000000000000000000dEaD. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x recipient or contract address | |
| data | No | Optional 0x calldata for a contract call | |
| from | No | 0x sender address (default: an empty address) | |
| value | No | Amount of AVAX to send, in AVAX (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered; the description adds genuinely new context beyond that: $0.01/call via x402 or credits, first 25 free, failed calls free, and revert outcomes as 422 with reason and uncharged. It stops short of describing pagination or latency, but the pricing and failure behavior are exactly the kind of extra detail that helps an agent decide whether to call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return units, then usage, then pricing and failure behavior; every clause is informative. It is dense rather than bloated, though the pricing sentence and the 'reads or computes only' restatement of readOnlyHint could be trimmed slightly.
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?
There is no output schema, and the description compensates by naming the return units (gas units, gwei, AVAX) and the revert error shape (422 with reason, uncharged). Combined with the example address and billing terms, an agent has everything needed to call and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents each field; the description nonetheless adds semantic guidance by clarifying that value is in AVAX, that data is calldata for a contract call, and that from is needed 'when the call depends on it'. That conditional framing is useful routing information not present in 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?
States a specific verb and resource ('Estimate the gas a transaction would use on Avalanche') and explicitly names the underlying RPC method (eth_estimateGas) plus what it returns (gas units, gwei, AVAX). It distinguishes itself from the gas-price sibling by scoping that tool out in the next sentence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('before sending a transaction or to price a batch') and a named alternative for the adjacent case ('for the gas price alone use avax_gas'). It also specifies the condition for supplying the from parameter, leaving no routing ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_gasAvalanche gas priceARead-onlyInspect
Current gas price on Avalanche (eth_gasPrice): gas price, base fee and suggested priority fee in gwei, plus what a plain AVAX transfer (21,000 gas) costs right now. Takes no input. Use before sending a transaction or to decide whether to wait; for the fee a past transaction actually paid use avax_receipt. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Optional: comma-separated top-level result keys to keep, for a smaller answer (for example only=price,symbol); unknown keys are ignored and an empty match returns the full result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses pricing ($0.01/call via x402 USDC or card key, first 25 free, failed calls free), which explains why idempotentHint is false — "each call is charged, so repeats are not free" turns a bare annotation flag into actionable cost behavior. It also restates the read-only nature and the fact that it accepts no required input, so the agent knows there are no side effects or prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core answer (current gas price and the three components), then usage routing, then cost/safety. Dense but every clause carries information an agent needs, though the pricing sentence is long enough to blunt the one-screen readability.
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?
There is no output schema, yet the description specifies the returned fields and their units (gwei), plus a derived figure (21k-gas transfer cost), so the agent knows what it will get. Cost, free tier, and read-only semantics cover the remaining risk for a pay-per-call read 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?
Schema coverage is 100%, so the single optional `only` projection parameter is fully documented in the schema, which sets the baseline at 3. The description adds nothing about `only` and in fact says "Takes no input," which slightly understates the tool's optional projection capability rather than enriching it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — current gas price on Avalanche — and enumerates exactly what is returned (gas price, base fee, suggested priority fee in gwei, plus the cost of a 21,000-gas AVAX transfer). It also cites the underlying RPC method and names the sibling it is not (avax_receipt), so an agent can distinguish it from avax_gas_history/avax_estimate_gas without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use before sending a transaction or to decide whether to wait" gives an explicit use context, and "for the fee a past transaction actually paid use avax_receipt" names an alternative with the condition that selects it. It stops short of routing against avax_gas_history (historical trend) and avax_estimate_gas (per-transaction estimate), which are the closest siblings here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_gas_historyAvalanche gas history, gas priceARead-onlyInspect
Gas price history on Avalanche (eth_feeHistory): base fee in gwei for each of the last N blocks (5-100, default 20), how full each block was, and the 10th, 50th and 90th percentile priority fees, with the low, average and high base fee over the window. Use to judge whether fees are rising, pick a priority fee or time a transaction; for the current price alone use avax_gas. Example: blocks=20. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks, 5-100 (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint=true, destructiveHint=false), and the description adds genuinely new operational facts: it 'reads or computes only and changes nothing', each call is charged, repeats are not free, failed calls are free, and payment works via x402 USDC or a card key at /credits with 25 free calls. This also explains the otherwise puzzling idempotentHint=false. Slight gap: no mention of latency, caching, or what happens if the node returns fewer than N blocks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and return contents before the routing hint and the commercial boilerplate. It is one dense paragraph, and the pricing/credits tail is longer than an agent needs, but every sentence carries information and none is a restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the full burden of describing the return payload, and it does so precisely (per-block base fee, fullness, three priority-fee percentiles, window summary). With a single optional parameter and complete usage/cost guidance, an agent has everything needed to call it and interpret the result.
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 documents 'How many recent blocks, 5-100 (default 20)', which the description largely repeats along with an example (blocks=20). The one added value is that the prose range is trustworthy where the raw minimum/maximum in the schema are sentinel numbers, but that is a thin increment over structured data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Gas price history on Avalanche') and enumerates exactly what comes back: base fee in gwei per block, block fullness, 10th/50th/90th percentile priority fees, and low/average/high base fee over the window. It also names the sibling it is not ('for the current price alone use avax_gas'), so it is separable from avax_gas, arb_gas_history, base_gas_history and the dozens of other per-chain gas tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives three concrete use cases ('judge whether fees are rising, pick a priority fee or time a transaction') and an explicit exclusion routing to avax_gas for a single current price. The when-not condition is stated, not inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_is_contractAvalanche is-contract checkARead-onlyInspect
Check whether a 0x address on Avalanche is a smart contract or a plain wallet: bytecode size, and whether it is an EIP-1167 minimal proxy and which implementation it points to. Use before sending funds or approving a spender; for a fuller risk verdict use check_counterparty. A malformed address is rejected with 400, uncharged. Example: address=0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that — pricing, free failures, and the 'each call is charged, so repeats are not free' caveat that explains the idempotentHint=false. It stops short of describing the response shape (e.g. whether an is_contract boolean is returned alongside bytecode size and proxy info), which is left implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the key caveat (proxy detection) are front-loaded, and most sentences carry information an agent needs. The pricing/payment sentence is dense (x402, card key, first 25 free, failed calls free) and slightly crowds out the return-value detail, costing one point.
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 no output schema and one parameter, the description carries most of the burden and mostly does: it explains what is computed, the error case, and the cost model. It never spells out the returned field names or the is-contract boolean explicitly, so an agent still infers the response shape.
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 a single 'address' field, so the baseline would be 3. The description goes a step further by supplying a concrete example address and specifying the accepted form (0x-prefixed) and the rejection behaviour for malformed input, which is real meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Check whether a 0x address on Avalanche is a smart contract or a plain wallet') and then names the actual payload: bytecode size, EIP-1167 minimal-proxy detection, and implementation address. That detail separates it from the many sibling *_proxy and *_balance 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?
It states the concrete trigger ('Use before sending funds or approving a spender') and routes heavier needs elsewhere ('for a fuller risk verdict use check_counterparty'). It also covers the failure path ('malformed address is rejected with 400, uncharged'), so an agent knows what a bad call costs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_logsAvalanche event logsARead-onlyInspect
Recent contract event logs on Avalanche (eth_getLogs): the events a contract emitted over the last N blocks (1-1,000, default 50), optionally filtered by topic0 (the 0x 32-byte event signature hash). Returns up to 100 logs with block, transaction hash and topics. Use to watch transfers or contract events; for one transaction's outcome use avax_receipt. Example: address=0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks to scan (1-1000, default 50) | |
| topic0 | No | Optional 0x event signature hash to filter by | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations by disclosing cost ($0.01/call via x402 USDC or card key), that the first 25 calls are free and failed calls are free, and that repeats are charged — consistent with idempotentHint=false. It also bounds the output ('up to 100 logs with block, transaction hash and topics'), which annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Core semantics, the alternative pointer and an example are front-loaded in the first two sentences; the pricing/cost sentence is long but earns its place for an agent budgeting calls. Slight density, but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers return shape, filterable fields, cost model and the read-only guarantee, which is sufficient for a 3-parameter read tool with no output schema. It stops short of stating what happens when a query matches more than 100 logs (truncation vs error), the main residual ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents blocks, topic0 and address with ranges and defaults. The description adds only a small gloss on topic0 (32-byte signature hash) and a concrete example address; it does not explain truncation behavior when more than 100 logs match. Baseline 3 is appropriate since 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?
States a specific verb and resource (eth_getLogs event logs for a contract on Avalanche), fixes the scan window (1-1,000 blocks, default 50) and the topic0 filter, and explicitly names the sibling it is not (avax_receipt) for single-transaction outcomes. An agent can distinguish it from avax_logs-style siblings on other chains and from avax_receipt without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a positive use case ('watch transfers or contract events') and an explicit exclusion pointing to avax_receipt for one transaction's outcome. One gap: for pure transfer watching, the sibling avax_token_transfers is arguably the better fit and is not mentioned, so routing is slightly incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_nft_balanceNFT balance, AvalancheARead-onlyInspect
How many NFTs of one ERC-721 collection a wallet holds on Avalanche (balanceOf), with the collection's name and symbol. Use to check a holder before a token-gated action or to see whether a wallet still holds a collection; for who holds one token id use avax_nft_owner. Both inputs are 0x addresses; a missing contract is 404, a contract that is not ERC-721 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet address | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint/destructiveHint annotations, it discloses that failures are uncharged and that repeat calls cost money — directly explaining the idempotentHint=false flag in cost terms — plus the pricing model ($0.01/call, x402 USDC or card key via /credits, first 25 free). That is meaningful behavioral context an agent cannot get from the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core semantics and alternatives before pricing and error codes, so it is scannable despite being a single dense paragraph. Minor waste: 'Reads or computes only and changes nothing' largely duplicates the readOnlyHint/destructiveHint annotations.
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 no output schema, the description still tells the agent what comes back (count plus collection name and symbol); with only two required params, the schema covers inputs. Error codes, cost model, and the sibling routing together make it complete enough to invoke correctly on the first attempt.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both properties already document themselves as '0x ... address'. The description's 'Both inputs are 0x addresses' restates that without adding format, checksum, or validation nuance, so it neither compensates for nor detracts from the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — count of NFTs held in one ERC-721 collection by one wallet on Avalanche — and names the underlying call (balanceOf) plus the returned extras (name, symbol). It explicitly distinguishes itself from the closest sibling, avax_nft_owner, so an agent can pick between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases (gate a holder before a token-gated action, check whether a wallet still holds a collection) and an explicit alternative with its selection condition ('for who holds one token id use avax_nft_owner'). It goes further and states the failure surface: missing contract is 404, non-ERC-721 contract is 422.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_nft_metadataNFT metadata, AvalancheARead-onlyInspect
NFT metadata on Avalanche: the token URI of one ERC-721 token id (tokenURI) and the JSON it points to (name, description, image, attributes), read from data: URIs, https or ipfs:// (through ipfs.io). Strings over 1,000 characters, such as on-chain SVG images, are shortened. Use to show or check what an NFT is; for its owner use avax_nft_owner. A token that does not exist is 422, uncharged; unreachable metadata is reported in metadataError. Example: contract=0x655C406EBFa14EE2006250925e54ec43AD184f8B, tokenId=1. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | Token id, a whole number | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/destructive/openWorld, but the description adds substantive behavior beyond them: 1,000-char truncation of on-chain SVG strings, 422 for nonexistent tokens (uncharged), metadataError for unreachable metadata, and cost/charge semantics that explain why idempotentHint is false. This is unusually rich disclosure for a read 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?
Purpose and scope are front-loaded, followed by supported URI schemes, edge cases, alternatives, an example, and pricing. It is dense but nearly every sentence carries information; the pricing sentence is long but relevant to cost-sensitive agents.
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 no output schema, the description still explains the return shape (name, description, image, attributes), truncation behavior, and both error channels (422 and metadataError). Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description goes slightly further with a concrete example (contract=0x655C..., tokenId=1) that shows the expected value shapes, plus notes on how the returned URI may be data:/https/ipfs – helpful context for interpreting the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: reads the tokenURI of one ERC-721 token id and the JSON it resolves to, on Avalanche. It distinguishes itself from the nearest sibling by naming avax_nft_owner for owner lookups, so an agent can route without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'Use to show or check what an NFT is; for its owner use avax_nft_owner' names the alternative and the condition that selects it. The failed-call and pricing notes further clarify when the call is worth making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_nft_ownerAvalanche NFT ownerARead-onlyInspect
Owner of an NFT on Avalanche: the wallet that holds one ERC-721 token id right now (ownerOf), plus the collection's name and symbol. Use to verify who holds an NFT before a trade, a mint gate or an airdrop; for how many a wallet holds use avax_nft_balance, for the token's metadata avax_nft_metadata. A missing contract is 404, a token that does not exist 422, both uncharged. Example: contract=0x655C406EBFa14EE2006250925e54ec43AD184f8B, tokenId=1. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | Token id, a whole number | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, destructive=false, idempotent=false, so the safety profile is known; the description nonetheless adds real behavior: 404 on missing contract, 422 on nonexistent token, both uncharged, plus the charging model and that repeat calls are not free. The only minor gap is it does not state the response shape beyond the fields named, which is largely implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the definition and alternatives, then errors, example, and pricing — a sensible ordering with no filler. The pricing information is stated twice in effect ('Price $0.01/call… first 25 free' and 'each call is charged, so repeats are not free'), a small redundancy in an otherwise dense paragraph.
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?
There is no output schema, yet the description still tells the agent what comes back (owner address, collection name, symbol), how failures behave, what it costs, and that it mutates nothing. For a two-parameter read tool that is everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds a worked example (contract=0x655C..., tokenId=1) that shows the expected address/id formats, and ties the two parameters to distinct failure modes (missing contract vs nonexistent token). That is meaningful meaning beyond the schema's one-line field notes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'the wallet that holds one ERC-721 token id right now (ownerOf)' — and explicitly delimits scope to a single token on Avalanche, plus names the collection name/symbol as extra return data. It is unmistakably distinct from avax_nft_balance (counts) and avax_nft_metadata (token metadata).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case ('verify who holds an NFT before a trade, a mint gate or an airdrop') and routes to two named alternatives with their selecting conditions ('for how many a wallet holds use avax_nft_balance, for the token's metadata avax_nft_metadata'). Both when-to-use and when-to-use-something-else are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_nonceAvalanche nonce, account nonceARead-onlyInspect
Read the transaction count (nonce) of a 0x address on Avalanche, both confirmed and including pending transactions. Use to build the next transaction or to tell whether an address has ever sent anything; for its balance use avax_balance. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint=false, and the description redundantly restates that nothing changes. However, it adds material context beyond the structured fields: pricing ($0.01/call, 25 free), that failed calls are free, the 400 rejection for malformed addresses without charge, and that 'each call is charged, so repeats are not free' — which meaningfully explains the idempotentHint=false 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?
Front-loaded with purpose, then usage, then error/cost behavior — good ordering with no filler. It is slightly dense and run-on in the pricing/immutability sentence, but every clause carries information an agent would otherwise have to discover by calling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description covers purpose, scope, error handling, cost, and the confirmed-vs-pending distinction. It could be marginally more complete by describing the shape of the returned nonce(s), but nothing critical to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the single 'address' parameter is documented structurally; the description adds format validation behavior (malformed → 400, uncharged) and a concrete example address. It does not explain what the return value looks like (confirmed vs pending count fields), leaving a small gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Starts with a specific verb and resource: 'Read the transaction count (nonce) of a 0x address on Avalanche,' and adds scope ('both confirmed and including pending transactions'). It also explicitly distinguishes itself from the sibling avax_balance, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases ('build the next transaction', 'tell whether an address has ever sent anything') and names the alternative tool plus the condition that selects it ('for its balance use avax_balance'). No inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_proxyProxy implementation, AvalancheARead-onlyInspect
Find the implementation behind a proxy contract on Avalanche: reads the EIP-1967 implementation, beacon and admin slots, EIP-1822 (UUPS), the older OpenZeppelin layout and EIP-1167 minimal-proxy bytecode, and names the kind found. Use before trusting or decoding a contract whose code can be swapped by its admin; for a fuller risk verdict use contract_risk. A malformed address is 400; an address without code is 404, both uncharged. Example: address=0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/non-destructive annotations, the description discloses concrete behavioral traits: malformed address returns 400, no-code address returns 404, failed calls are free, calls are charged and not idempotent in cost terms, and pricing details. It also explicitly says the tool reads/computes only and changes nothing.
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 usage guidance, error behavior, an example, and pricing. Sentences are dense but each carries useful operational information for a paid read-only proxy tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with annotations and no output schema, it is nearly complete: it explains what is inspected, what kind of result is named, error behavior, and cost. It could more explicitly describe the return structure, such as whether implementation, admin, and beacon values are always included, but the essential contract is clear.
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 single address parameter is fully documented by the schema, so baseline is 3. The description adds a concrete example address and ties malformed input to a 400 response, improving meaningfulness beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: find the implementation behind a proxy contract on Avalanche. It lists the exact mechanisms read (EIP-1967, beacon/admin slots, UUPS, OpenZeppelin layout, EIP-1167) and says it names the kind found, which clearly distinguishes it from generic storage or call 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?
It gives explicit usage context: use before trusting or decoding upgradeable contracts, and directs agents to contract_risk for a fuller risk verdict. This names both when to use it and the main alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_receiptAvalanche transaction receiptARead-onlyInspect
Transaction receipt on Avalanche (eth_getTransactionReceipt): success or reverted, gas used, effective gas price, fee paid in AVAX, number of event logs and any contract created. Use to confirm a payment or call went through; for sender, value and calldata use avax_tx. Input is a 0x-prefixed 64-hex hash; a pending or unknown hash returns 404, uncharged. Example: hash=0x186570f66bdbd9565ee4f5fe7ef9fc110ec5417f5838c3e7e322967cd1a7d3e2. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses the 404-without-charge behavior for pending/unknown hashes, per-call pricing ($0.01 via x402 USDC or card key), a 25-call free tier, free failed calls, and that repeats are billed again. That last point is consistent with idempotentHint=false and explains it rather than merely restating 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?
Front-loaded with what the tool returns and who it competes with, then the input format and example, then billing. It is dense and slightly overloaded with pricing terms, but nearly every clause carries information an agent needs before spending money on a call.
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?
There is no output schema, so the description correctly enumerates the fields returned, plus error behavior and cost. Minor gap: it says 'number of event logs' but doesn't indicate whether the logs themselves are included, which matters for an agent deciding between avax_receipt and avax_logs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents the 0x-prefixed 64-hex format, so the description's baseline is 3. It adds a concrete worked example hash plus the semantics of a bad/unresolved hash (404), which is genuine value beyond the schema, though the format detail is partly duplicated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Transaction receipt on Avalanche'), names the underlying RPC (eth_getTransactionReceipt), and enumerates the returned facts (status, gas used, gas price, fee in AVAX, log count, created contract). It also explicitly differentiates itself from the sibling avax_tx, so an agent can pick between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the use case ('confirm a payment or call went through') and names the exact alternative for the complementary job ('for sender, value and calldata use avax_tx'). The failure condition (pending/unknown hash → 404, uncharged) is also stated, which is the kind of routing detail agents need.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_storageStorage slot read, AvalancheARead-onlyInspect
Read one raw storage slot of a contract on Avalanche (eth_getStorageAt): the 32-byte word, as a number and, when it holds one, as an address. Slot is a decimal index or a 0x 32-byte key (mapping and proxy slots). Use to inspect contract state that has no getter, owners or implementation pointers; for proxies use avax_proxy. A malformed address or slot is rejected with 400, uncharged. Example: address=0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | Slot: a decimal index (0, 1, 2…) or a 0x 32-byte key | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses pricing ($0.01/call, 25 free, failed calls free), rejection behavior (400, uncharged), and explicitly explains why repeated calls are not free — which is the reason the annotations mark idempotentHint=false. It only lightly repeats readOnlyHint with 'changes nothing', so the added context is real. It could be stronger on whether the returned word is always present or null for an empty slot.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the return shape, then the routing rule, then pricing. Dense but every element (pricing, 400 behavior, example, sibling pointer) earns its place. Slightly overpacked into a single block, which costs it a point.
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?
No output schema exists, yet the description explains what comes back (32-byte word as a number, and as an address when it holds one). With annotations covering safety and the description covering return shape, routing, failure mode, and cost, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already documents both parameters, so the description only needs to add value — it does by explaining that slots are decimal indices or 0x 32-byte keys used for mapping and proxy slots, and by giving a concrete address example. This exceeds the baseline-3 case where schema carries all meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (read one raw storage slot of a contract on Avalanche), maps it to the underlying RPC (eth_getStorageAt), and describes the return shape. It also names the sibling it is not (avax_proxy), so an agent can distinguish it without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('contract state that has no getter, owners or implementation pointers') with an explicit alternative and routing rule ('for proxies use avax_proxy'). The when-not case and failure condition (malformed address/slot -> 400, uncharged) are both stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_token_balanceAvalanche ERC-20 balanceARead-onlyInspect
ERC-20 token balance of a wallet on Avalanche (USDC, USDT, WETH or any token, via balanceOf): raw amount, decimals, symbol and the human-readable amount, live from the token contract. Use to check stablecoin or token holdings before a transfer or trade; for the native coin use avax_balance. Both inputs are 0x addresses (40 hex characters); no contract returns 404 and a non-ERC-20 contract 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC, USDT, WETH or DAI, or the 0x ERC-20 contract address | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing error semantics (no contract returns 404, non-ERC-20 contract 422, both uncharged), pricing model ($0.01/call via x402 USDC or card key, first 25 free, failed calls free), and that it reads/computes only with each call charged. This clarifies exactly why idempotentHint=false is set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what it returns, then usage, then input constraints, then error/pricing behavior. The pricing and free-tier sentences are dense but relevant to cost-aware agents; the sentence count is near the upper bound for a two-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description nonetheless enumerates the returned fields (raw amount, decimals, symbol, human-readable amount) and covers error cases and billing. An agent has everything needed to call it and interpret the result.
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 both parameters are already documented; the description adds a useful format constraint that both inputs must be 0x addresses of 40 hex characters and reinforces that 'token' accepts a ticker or contract address. That is a modest but real addition over the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: ERC-20 token balance of a wallet on Avalanche via balanceOf, with enumerated return fields. It explicitly distinguishes itself from the native-coin sibling ('for the native coin use avax_balance'), so an agent can route between the two without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete usage context ('check stablecoin or token holdings before a transfer or trade') and names the alternative for the native coin case. It does not address the reverse case (when NOT to use this, e.g. use avax_allowance for approvals or avax_token_info for metadata), which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_token_infoAvalanche token info, ERC-20ARead-onlyInspect
Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Avalanche, live from the contract. Use to identify an unknown token address or to format raw amounts; for a holder's balance use avax_token_balance. Input is a ticker (USDC, WETH…) or the token's 0x contract address; an address that is not an ERC-20 contract returns 422, uncharged. Example: token=0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: data is read live from the contract, non-ERC-20 addresses return 422 and are uncharged, pricing is $0.01/call with 25 free calls, and repeated identical calls are still billed (consistent with idempotentHint=false). This is exactly the payment and failure-mode context the annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and output fields, then usage, then input, then cost. Dense with semicolon chains and pricing detail in the final sentence, but no sentence is pure 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?
There is no output schema, and the description compensates by enumerating the returned fields. Input format, failure semantics, and billing are all covered, so an agent can call this correctly on the first attempt.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the description only needs to add value and it does: it clarifies that the same field accepts either a ticker or a 0x address, supplies a worked example, and documents the error behavior for an address form input. It stops short of tie-breaking guidance such as ticker ambiguity across tokens.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (look up name, symbol, decimals, total supply of an ERC-20 contract on Avalanche) and explicitly names the sibling it is not (avax_token_balance for holder balances). An agent can distinguish it from the dozens of avax_* siblings and the cross-chain token_info tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases (identify an unknown token address, format raw amounts) and an explicit exclusion routing balance queries to avax_token_balance. The 422-on-non-ERC20 note further tells the agent when this tool is the wrong call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_token_transfersToken transfers, AvalancheARead-onlyInspect
List a wallet's recent transfers of one ERC-20 token (default USDC) on Avalanche, in and out, over the last N blocks (1-2,000, default 1,000): direction, counterparty, amount and transaction, newest first, up to 50. Use to confirm a payment arrived or see what was sent; for the current balance use avax_token_balance. Malformed addresses are rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Token: a ticker such as USDT or WETH, or the 0x ERC-20 contract (default: USDC on this network) | |
| blocks | No | How many recent blocks to scan (1-2000, default 1000; 2,000 blocks is about 32 minutes on Avalanche) | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, and the description adds substantial context on top: errors are rejected with 400 and uncharged, the first 25 calls are free, failed calls are free, each successful call costs $0.01 via x402 or a card key, and repeats are not free despite being safe. That pricing and error-charging behavior is exactly the kind of trait annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph that front-loads the scope (wallet, token, window, result shape) before usage, errors and pricing. It is long but almost every clause carries a distinct fact; the only waste is mild redundancy between 'first 25 free / failed calls free' and the closing 'each call is charged, so repeats are not free.'
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 3-parameter read tool with no output schema, the description covers everything an agent needs: what is returned and in what order, the result cap, the address format with an example, the failure mode and its cost, and the billing model. No material gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents token, blocks range/default and address, and the description largely repeats it (default USDC, 1-2,000 blocks, default 1,000). The one genuine addition is a worked address example (0xd8dA...6045) showing the expected 0x format, which is useful but marginal against a fully documented 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?
States a specific verb and resource (list recent ERC-20 transfers for one wallet on Avalanche) plus the exact shape of the result: in/out, direction, counterparty, amount, transaction, newest first, capped at 50. It also pins the default token (USDC) and the block window, so an agent can distinguish it from avax_token_balance and from the other per-chain transfer tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case (confirm a payment arrived or see what was sent) and names the alternative with the condition that selects it: 'for the current balance use avax_token_balance.' Nothing about when-to-use is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avax_txAvalanche transactionARead-onlyInspect
Look up an Avalanche transaction by hash: sender, recipient, value in AVAX, nonce, gas limit, the 4-byte function selector and its block. Use to see what was sent or whether it exists; for success or failure and fees paid use avax_receipt, for emitted events avax_logs. Input is a 0x-prefixed 64-hex hash; an unknown hash returns 404, uncharged. Example: hash=0x186570f66bdbd9565ee4f5fe7ef9fc110ec5417f5838c3e7e322967cd1a7d3e2. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations by disclosing the pricing model ($0.01/call, first 25 free, failed calls free), the 404-on-unknown-hash behavior being uncharged, and that repeated identical calls are charged again — which explains and reinforces the idempotentHint=false annotation rather than 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?
Purpose, returned fields, sibling routing, parameter format, error behavior and cost all appear in a compact block with the core purpose front-loaded. It runs long as a single paragraph and the pricing sentence is dense, but no sentence is truly wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description names the returned fields, the error case (404, uncharged), the input format, and the billing implications — everything an agent needs to decide to call it and to interpret a failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the single hash parameter. The description still adds value by restating the 0x-prefixed 64-hex format and supplying a concrete example hash, which makes correct invocation easier without contradicting 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?
States a specific verb+resource ('Look up an Avalanche transaction by hash') and enumerates the fields returned (sender, recipient, value in AVAX, nonce, gas limit, selector, block). It explicitly distinguishes itself from the two nearest siblings, avax_receipt and avax_logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the selection rule directly: use this to see what was sent or whether it exists, use avax_receipt for success/failure and fees, use avax_logs for emitted events. Both alternatives are named with the condition that selects them, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base_allowanceERC-20 token approval check on Base: check how much of a token a spender is approved to move on BaseARead-onlyInspect
Check how much of a wallet's ERC-20 token a spender contract is approved to move on Base: the raw and formatted allowance, the token symbol and decimals, and whether the approval is unlimited. Use before a swap or deposit to see if an approve transaction is needed, and to audit a wallet for risky unlimited approvals. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Wallet address that holds the token (0x...) | |
| token | Yes | ERC-20 token contract address on Base (0x...) | |
| spender | Yes | Address allowed to spend, usually a router or protocol contract (0x...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and non-destructive, but the description adds information annotations cannot convey: pricing ($0.002/call via x402 USDC or card key, first 25 free, failed calls free) and the explicit warning that repeat calls are charged, which materially explains the idempotentHint=false billing behavior. It also reaffirms 'reads or computes only and changes nothing' and enumerates the return payload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what is checked and why, then behavior and pricing; three sentences with no filler. The pricing/free-tier clause is dense but justified for a paid tool, though it slightly crowds the middle of an otherwise tight definition.
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 no output schema, the description compensates by listing the exact return fields, and it covers cost, safety profile, and intended workflow for a simple 3-parameter read tool. An agent has everything needed to decide to call it and interpret the result.
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 all three parameters (owner, token, spender) are documented in the schema with role and address format. The description restates the owner/spender relationship but adds no format, constraint, or edge-case detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource ('check how much of a wallet's ERC-20 token a spender contract is approved to move on Base') and even enumerates what comes back (raw/formatted allowance, symbol, decimals, unlimited flag). The 'approved to move' phrasing cleanly separates it from the sibling balance tools (base_token_balance) and the chain prefix separates it from eth_allowance/arb_allowance etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete usage contexts: pre-swap/pre-deposit approve checks and auditing risky unlimited approvals. It does not name an alternative tool or state when-not to use it, so it stops short of the explicit routing a 5 requires.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base_balanceBase balance, native coinARead-onlyInspect
Native ETH balance (eth_getBalance) of any 0x wallet address on Base at the latest block, in wei and in ETH. Use to check whether a wallet can pay gas or a transfer; for ERC-20 tokens use base_token_balance, for all holdings at once use wallet_portfolio. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet or contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds real context: latest block only, dual unit output, 400 rejection of malformed addresses with no charge, and per-call pricing with 25 free calls. The note that repeats are not free usefully explains the idempotentHint=false flag rather than contradicting it. It stops short of describing the exact response envelope, which is the only minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core operation and units, then routing guidance, then validation and pricing. The pricing/billing sentence is the longest and only marginally relevant to invocation, but every other clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description covers return units (wei and ETH), block scope (latest), error behavior, and costs. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds that the address may be a wallet or contract, that any 0x address works, and supplies a concrete example value. It also specifies the failure behavior for malformed input, which the schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: native ETH balance (eth_getBalance) of any 0x address on Base at the latest block, reported in wei and ETH. It explicitly separates itself from base_token_balance (ERC-20) and wallet_portfolio (all holdings), so an agent can pick it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case (check whether a wallet can pay gas or make a transfer) and names both alternatives with the condition that selects each. No inference is needed to route between this and its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base_blockBase block numberARead-onlyInspect
Latest block number and block details on Base, or any block by decimal number: hash, timestamp, transaction count, gas used and limit, base fee in gwei and producer. Use for timestamps and confirmation counts; for current fees use base_gas. A block that does not exist yet returns 404, uncharged. Example: number=latest. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| number | No | Block number, or 'latest' (default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, open-world, non-idempotent and non-destructive, but the description adds real behavioral detail beyond them: 404 and uncharged for not-yet-existing blocks, failed calls free, and per-call billing that makes repeats non-free. Pricing and failure semantics are the kind of context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the resource, returned fields, alternative tool, and error behavior come before the pricing tail. The billing sentence is somewhat repetitive ('each call is charged, so repeats are not free' restates the price) but remains operationally relevant.
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 no output schema, the description compensates by listing exactly what a block response contains (hash, timestamp, tx count, gas used/limit, base fee in gwei, producer) and covers the missing-block case and default parameter, which is everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'number' parameter is already documented with its 'latest' default, so the description only reinforces the default via the example 'number=latest'. Useful but largely duplicative of 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?
States a specific verb and resource ('Latest block number and block details on Base, or any block by decimal number') and enumerates the returned fields, so it is clearly distinguishable from siblings like base_tx or base_gas.
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 names intended uses ('timestamps and confirmation counts') and names the alternative tool for the adjacent need ('for current fees use base_gas'), giving both when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base_callEth call, Base contract callARead-onlyInspect
Read-only contract call on Base (eth_call): send ABI-encoded calldata to a contract at the latest block and get the raw return data, without a transaction or gas. Use to read any view function that has no dedicated tool (the example reads USDC totalSupply, selector 0x18160ddd); decode the result with the function's ABI. Calldata up to 8 KB; a call that reverts is 422 with the reason, uncharged. Example: to=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, data=0x18160ddd. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x contract address to call | |
| data | Yes | 0x ABI-encoded calldata: 4-byte selector plus arguments | |
| from | No | Optional 0x sender address for calls that check msg.sender |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: latest block semantics, an 8 KB calldata cap, revert behavior (422 with reason, uncharged), pricing model ($0.01/call via x402 or card key, first 25 free), and the crucial warning that each call is charged so repeats are not free — which explains the idempotentHint=false. The 'changes nothing' clause reinforces readOnlyHint/destructiveHint without merely repeating them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what the tool is and when to use it, then constraints, then economics — good ordering with no filler. The pricing/free-tier sentence is dense and slightly overloaded into one line, but every clause carries information an agent needs (cost per call, free retries on failure).
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?
There is no output schema, and the description compensates by stating the return is raw return data requiring ABI decoding, plus the revert path. Combined with the size limit, pricing, and block semantics, an agent has everything needed to invoke and interpret results without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real value: a worked example pairing a live Base USDC address with selector 0x18160ddd, the note that calldata is '4-byte selector plus arguments' in context, and the 8 KB size constraint. The optional `from` parameter is not mentioned in the description, leaving that entirely to 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?
States a specific verb+resource (read-only eth_call on Base) plus the exact scope: ABI-encoded calldata in, raw return data out, at latest block. It also distinguishes itself from the many sibling wrappers (eth_call, arb_call, op_call, polygon_call) by naming its chain, and from dedicated tools via 'any view function that has no dedicated tool'.
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?
Clearly says when to use it: view functions that lack a dedicated tool, with a concrete USDC totalSupply example. It implies the alternatives (base_token_balance, base_storage, etc.) exist by saying 'no dedicated tool' but never names a single sibling, so the routing decision still requires the agent to scan the tool list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base_estimate_gasEstimate gas, BaseARead-onlyInspect
Estimate the gas a transaction would use on Base (eth_estimateGas) and what it would cost at the current gas price, in gas units, gwei and ETH. Give to, plus value in ETH and calldata for a contract call, and the sender when the call depends on it. Use before sending a transaction or to price a batch; for the gas price alone use base_gas. A transaction that would revert is 422 with the reason, uncharged. Example: to=0x000000000000000000000000000000000000dEaD. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x recipient or contract address | |
| data | No | Optional 0x calldata for a contract call | |
| from | No | 0x sender address (default: an empty address) | |
| value | No | Amount of ETH to send, in ETH (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, idempotentHint=false), and the description adds value beyond them: reverting transactions return 422 with the reason and are uncharged, each successful call is billed at $0.002 via x402 USDC or card key with the first 25 free, and retries are not free. That is exactly the operational context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool does and when to use it, then examples, error semantics, and billing. The billing sentence is longer than strictly needed for tool selection but carries decision-relevant cost information, so only minor trimming would be warranted.
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 four-parameter read-only estimation tool with no output schema, the description covers return units, error behavior, cost, and the one non-obvious parameter interaction (from). Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description still adds meaning beyond the schema: it clarifies that value is denominated in ETH, that calldata is for a contract call, and notably that the sender matters only when the call depends on it, which guides correct use of the optional from field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource with the underlying RPC method (eth_estimateGas on Base) and the exact output dimensions (gas units, gwei, ETH). It is immediately distinguishable from base_gas and base_call by naming what it computes versus what those return.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (before sending a transaction, pricing a batch) and an explicit alternative with its selecting condition ('for the gas price alone use base_gas'). The revert case and the billing conditions are also stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base_gasBase gas price and fee estimate: current gas price and transaction fee estimate on BaseARead-onlyInspect
Live gas prices on Base (chain 8453) read from the latest block: base fee and priority fee in gwei, suggested maxFeePerGas and maxPriorityFeePerGas in wei for an EIP-1559 transaction, how full the latest block is, and the estimated execution fee in ETH for an ETH transfer and an ERC-20 transfer. Use before sending a transaction on Base or to decide whether to wait for lower fees. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Optional: comma-separated top-level result keys to keep, for a smaller answer (for example only=price,symbol); unknown keys are ignored and an empty match returns the full result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: discloses pricing ($0.002/call via x402 USDC or card key, first 25 free, failed calls free) and that each call is charged so repeats are not free -- which explains the otherwise puzzling idempotentHint=false. It also confirms 'reads or computes only and changes nothing', consistent with readOnlyHint=true. Cost and billing behavior is exactly the kind of operational detail annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the resource and chain, then the returned fields, then usage, then cost -- a sensible priority order with no filler sentences. It is on the long side because the return-field enumeration and the billing caveats are both spelled out, but each sentence carries information an agent needs.
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?
There is no output schema, so the description usefully enumerates units (gwei vs wei) and the concrete computed values returned. Combined with the stated safety profile (read-only, no side effects) and the billing model, an agent has everything needed to call this correctly and predict the cost.
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?
Only one optional parameter (`only`), and the schema description already covers it at 100% with an example and fallback behavior. The description says nothing about `only` or the result-key projection it enables, so it adds no meaning beyond the schema. Baseline 3 applies when the schema does the full job.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource -- live gas prices read from the latest Base block (chain 8453) -- and enumerates exactly what is returned (base fee, priority fee in gwei, maxFeePerGas/maxPriorityFeePerGas in wei, block fullness, ETH/ERC-20 transfer fee estimates). This lets an agent separate it from base_estimate_gas (per-transaction estimation) and base_gas_history (historical series) without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit timing guidance: 'Use before sending a transaction on Base or to decide whether to wait for lower fees.' That is a clear use context with no exclusions. It stops short of naming the sibling alternatives (base_estimate_gas, base_gas_history, pack_gas_tracker) or stating when not to use it, so it lands at 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base_gas_historyBase gas history, gas priceARead-onlyInspect
Gas price history on Base (eth_feeHistory): base fee in gwei for each of the last N blocks (5-100, default 20), how full each block was, and the 10th, 50th and 90th percentile priority fees, with the low, average and high base fee over the window. Use to judge whether fees are rising, pick a priority fee or time a transaction; for the current price alone use base_gas. Example: blocks=20. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks, 5-100 (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered; the description goes further by disclosing the billing model ($0.01/call via x402 USDC or card key, first 25 free, failed calls free) and explaining why repeats are not free — which reconciles the non-obvious idempotentHint=false. It also describes the returned fields, which matters since there is no output schema. It stops short of documenting rate limits or error behavior beyond 'failed calls free'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, returned fields, use cases, the sibling alternative and the cost model all appear in one front-loaded paragraph with little waste. It is dense and slightly crammed (pricing detail runs long relative to the core purpose), but no sentence is purely filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-optional-parameter read tool with no output schema, the description covers what is returned, when to use it, which sibling to prefer for the simpler case, and the pricing consequences of repeat calls. Nothing an agent needs in order to select and call this correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'blocks' parameter is fully documented in the schema with the same '5-100 (default 20)' range and default that the description repeats. The description adds only an illustrative 'blocks=20', so the baseline 3 applies — the schema does the real work here.
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 names a specific verb and resource — gas price history on Base via eth_feeHistory — and spells out exactly which fields come back (base fee in gwei, block fullness, 10th/50th/90th percentile priority fees, low/avg/high over the window). It also names the sibling it is not ('for the current price alone use base_gas'), so an agent can route between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states explicit use cases ('judge whether fees are rising, pick a priority fee or time a transaction') and an explicit exclusion with the alternative to use instead ('for the current price alone use base_gas'). The only missing piece is what to do on a non-Base chain, but the tool name scopes that already.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base_is_contractBase is-contract checkARead-onlyInspect
Check whether a 0x address on Base is a smart contract or a plain wallet: bytecode size, and whether it is an EIP-1167 minimal proxy and which implementation it points to. Use before sending funds or approving a spender; for a fuller risk verdict use check_counterparty. A malformed address is rejected with 400, uncharged. Example: address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-idempotent/non-destructive, and the description goes further by noting each call is charged and repeats are not free, which explains the idempotentHint=false in practical terms. It also documents the 400-and-uncharged behavior for malformed addresses and the x402 pricing model. The remaining gap is what the success payload looks like beyond 'bytecode size' and proxy info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the operation, then usage, then error behavior, example and pricing, so an agent can stop reading early. The pricing sentences are dense and slightly over-detailed for tool selection, but they carry real behavioral information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with no output schema, the description covers purpose, returns (bytecode size, proxy status, implementation), error behavior, cost and safety. Nothing material an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one parameter, so the baseline is 3; the description adds a concrete example address and states the malformed-address failure mode, which gives the agent a validation signal the schema does not. It does not say whether non-0x inputs like ENS names are accepted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: check if a 0x address on Base is a contract or plain wallet, returning bytecode size plus EIP-1167 minimal-proxy status and implementation address. That is enough to separate it from balance/token siblings and from the risk-oriented check_counterparty.
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 names the trigger ('before sending funds or approving a spender') and routes the agent to check_counterparty when a full risk verdict is wanted. The only small gap is that it does not contrast itself with the sibling base_proxy tool, which also deals with proxies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base_logsBase event logsARead-onlyInspect
Recent contract event logs on Base (eth_getLogs): the events a contract emitted over the last N blocks (1-1,000, default 50), optionally filtered by topic0 (the 0x 32-byte event signature hash). Returns up to 100 logs with block, transaction hash and topics. Use to watch transfers or contract events; for one transaction's outcome use base_receipt. Example: address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks to scan (1-1000, default 50) | |
| topic0 | No | Optional 0x event signature hash to filter by | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond annotations by disclosing cost and billing mechanics ('$0.01/call via x402 USDC or a card key', 'first 25 free', 'failed calls free') which gives real meaning to idempotentHint=false — retries are not free. It also caps the return at 100 logs and names the return fields, though it doesn't discuss pagination or how to reach logs beyond that cap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the eth_getLogs equivalent and the block window, then usage, then return shape, then pricing — a sensible order. It is somewhat dense and repeats the 1-1,000/default-50 detail already in the schema, but almost every sentence carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description steps in by naming the returned fields ('block, transaction hash and topics') and the 100-log ceiling, and it covers cost and safety. What's left implicit is behavior at the 100-log cap and whether results are ordered, which matter slightly for a log-scanning 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?
Schema coverage is 100%, so the schema already documents all three parameters and the baseline applies. The description restates the block range and default and clarifies topic0 as a '0x 32-byte event signature hash', which is only marginally more than the schema's own wording; the example address shows form but not what the address must be.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Recent contract event logs on Base (eth_getLogs)') plus the exact scope: events a contract emitted over the last N blocks. It also distinguishes itself from base_receipt by name, so an agent can separate the two without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says what to use it for ('watch transfers or contract events') and redirects to the correct sibling for a different need ('for one transaction's outcome use base_receipt'). The when-not is stated, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base_nft_balanceNFT balance, BaseARead-onlyInspect
How many NFTs of one ERC-721 collection a wallet holds on Base (balanceOf), with the collection's name and symbol. Use to check a holder before a token-gated action or to see whether a wallet still holds a collection; for who holds one token id use base_nft_owner. Both inputs are 0x addresses; a missing contract is 404, a contract that is not ERC-721 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet address | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing error semantics (404 for missing contract, 422 for non-ERC-721, both uncharged), the pricing model ($0.01/call, 25 free, failed calls free), and that repeat calls are charged — which explains why idempotentHint is false. It also confirms read-only/no-mutation, consistent with readOnlyHint=true and destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the sibling routing are front-loaded in the first two sentences, and the error/pricing details are genuinely decision-relevant. It is dense but slightly sprawling, with payment mechanics taking up roughly half the text.
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 no output schema, the description still says what comes back (balance plus collection name and symbol). Combined with error codes, cost model, and read-only confirmation, an agent has everything needed to call this correctly and interpret failures.
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 both parameters already documented as '0x wallet address' and '0x ERC-721 collection contract address'. The description only restates that both inputs are 0x addresses, adding no format, validation, or edge-case detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — NFT balance of one ERC-721 collection for a wallet on Base — and even names the underlying call (balanceOf). It explicitly separates itself from base_nft_owner ('for who holds one token id use base_nft_owner'), so an agent can pick between the two siblings without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use cases (check a holder before a token-gated action, verify a wallet still holds a collection) and an explicit exclusion routing to base_nft_owner. When-to-use, when-not-to-use, and the alternative are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base_nft_metadataNFT metadata, BaseARead-onlyInspect
NFT metadata on Base: the token URI of one ERC-721 token id (tokenURI) and the JSON it points to (name, description, image, attributes), read from data: URIs, https or ipfs:// (through ipfs.io). Strings over 1,000 characters, such as on-chain SVG images, are shortened. Use to show or check what an NFT is; for its owner use base_nft_owner. A token that does not exist is 422, uncharged; unreachable metadata is reported in metadataError. Example: contract=0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1, tokenId=1. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | Token id, a whole number | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile, but the description adds substantial behavioral context beyond them: supported URI schemes, IPFS resolution through ipfs.io, truncation of strings over 1,000 characters, 422 handling for nonexistent tokens, metadataError reporting for unreachable metadata, pricing, and that repeat calls are charged. No contradiction with readOnlyHint/destructiveHint.
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 and return shape, then adds only operationally relevant details: URI support, truncation, failure behavior, sibling routing, pricing, and mutation safety. Every sentence contributes to correct invocation or interpretation.
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?
There is no output schema, but the description explains the return values (token URI plus JSON fields), truncation behavior, metadataError, and the 422 case. Combined with full parameter coverage and rich annotations, an agent has enough to call and interpret 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 description coverage is 100%, so both parameters are already documented as contract address and token id. The description adds a concrete example and confirms tokenURI behavior, but it does not add syntax or validation rules beyond the schema, 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 states a specific verb and resource: read the token URI and pointed-to JSON metadata for one ERC-721 token id on Base. It also explicitly distinguishes itself from the sibling base_nft_owner, making the scope 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?
It gives an explicit use case ('Use to show or check what an NFT is') and names the alternative for a different need ('for its owner use base_nft_owner'). This is clear when/when-not guidance, not mere implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base_nft_ownerBase NFT ownerARead-onlyInspect
Owner of an NFT on Base: the wallet that holds one ERC-721 token id right now (ownerOf), plus the collection's name and symbol. Use to verify who holds an NFT before a trade, a mint gate or an airdrop; for how many a wallet holds use base_nft_balance, for the token's metadata base_nft_metadata. A missing contract is 404, a token that does not exist 422, both uncharged. Example: contract=0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1, tokenId=1. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | Token id, a whole number | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/destructiveHint=false annotations, it discloses billing behavior ($0.01/call via x402 USDC or card key, first 25 free, failed calls free) and explains why repeated calls are not free, which gives meaning to idempotentHint=false. Error semantics (missing contract 404, nonexistent token 422, both uncharged) and the 'reads only, changes nothing' guarantee remove the usual ambiguity for a paid read 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?
Front-loaded with purpose and the distinguishing alternatives, and the pricing/error clauses each carry real decision value. It is dense in a single paragraph, though the billing sentence plus the 'repeats are not free' restatement overlap slightly.
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 no output schema, the description partially covers return content (owner wallet, collection name, symbol) and fully covers failure modes and cost, which is what an agent needs before calling. The exact response shape (field names, address casing) is left implicit.
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 both parameters are already documented, and the description adds a concrete worked example (contract=0x03a5..., tokenId=1) that demonstrates the expected address format and id type. It stops short of adding constraints beyond the schema, so it sits just above the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: returns the wallet holding a given ERC-721 token id on Base via ownerOf, plus the collection name and symbol. It explicitly distinguishes itself from base_nft_balance (count held) and base_nft_metadata (token metadata), so an agent can pick it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use cases (verify holder before a trade, mint gate, airdrop) and names both alternatives with the condition that selects them (how many a wallet holds -> base_nft_balance; metadata -> base_nft_metadata). The 404/422 error conditions are also spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base_nonceBase nonce, account nonceARead-onlyInspect
Read the transaction count (nonce) of a 0x address on Base, both confirmed and including pending transactions. Use to build the next transaction or to tell whether an address has ever sent anything; for its balance use base_balance. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses the cost model ($0.01/call via x402 or card key, first 25 free, failed calls free), the error contract (malformed address -> 400, uncharged), and that repeats are not free because each call is billed. That is meaningful context the readOnly/openWorld/idempotent hints do not convey, though it stops short of describing the response shape (field names for confirmed vs pending counts).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, then usage, then error/cost details. Every sentence carries information an agent needs (scope, alternative, validation, billing), though the pricing sentence is dense and could be trimmed slightly without loss.
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?
No output schema exists, and the description partially compensates by saying both confirmed and pending-inclusive counts are returned. Combined with the validation and billing notes, an agent has enough to call it correctly; only the exact return field structure remains implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 100% schema coverage the baseline is 3; the description goes beyond it by supplying a concrete example address and by specifying the validation behavior for a malformed value (400, uncharged). That adds real meaning about what the parameter accepts and what happens when it is wrong.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Read the transaction count (nonce) of a 0x address on Base") plus the scope detail that matters most for a nonce: confirmed versus pending-inclusive. It also explicitly routes the balance case to base_balance, so an agent can separate it from the many sibling chain_nonce/chain_balance tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases ("build the next transaction" and "tell whether an address has ever sent anything") and names the alternative tool for a related need ("for its balance use base_balance"). The distinction between this and its siblings is stated rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base_proxyProxy implementation, BaseARead-onlyInspect
Find the implementation behind a proxy contract on Base: reads the EIP-1967 implementation, beacon and admin slots, EIP-1822 (UUPS), the older OpenZeppelin layout and EIP-1167 minimal-proxy bytecode, and names the kind found. Use before trusting or decoding a contract whose code can be swapped by its admin; for a fuller risk verdict use contract_risk. A malformed address is 400; an address without code is 404, both uncharged. Example: address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already covering readOnly/destructive, the description adds real context: 400 for malformed address and 404 for codeless address are uncharged, costing is $0.01/call with 25 free and failed calls free, and it explains why idempotentHint=false ('each call is charged, so repeats are not free'). Only the shape of the returned data is left unspoken.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the capability, then usage, then failure modes, then pricing — good ordering. It is dense but every sentence (errors, price, 'failed calls free') carries decision-relevant information for an agent; the pricing tail runs a bit long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-param read-only tool with no output schema, this covers purpose, detection methods, error semantics, and cost. The only gap is that the returned structure (e.g., how the detected kind and addresses are presented) is not hinted at beyond 'names the kind found.'
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?
Single parameter at 100% schema coverage sets baseline 3, but the description adds a concrete example address showing the expected 0x hex form, which is slightly more than the schema's '0x contract address'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Find the implementation behind a proxy contract on Base', and it enumerates the exact slots/standards checked (EIP-1967, beacon, admin, EIP-1822/UUPS, legacy OZ, EIP-1167). This is trivially distinguishable from sibling base_is_contract or base_storage.
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 states when to use ('before trusting or decoding a contract whose code can be swapped by its admin') and names the alternative ('for a fuller risk verdict use contract_risk'). The when-not and routing to a sibling are both present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base_receiptBase transaction receiptARead-onlyInspect
Transaction receipt on Base (eth_getTransactionReceipt): success or reverted, gas used, effective gas price, fee paid in ETH, number of event logs and any contract created. Use to confirm a payment or call went through; for sender, value and calldata use base_tx. Input is a 0x-prefixed 64-hex hash; a pending or unknown hash returns 404, uncharged. Example: hash=0x7d108fa131ed949c76d50caf2e7dfe25fc9903b9d276c40a0446d8afbdfe86b0. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: pricing model ($0.01/call, first 25 free, failed calls free), 404 responses being uncharged, and an explicit note that repeats are not free — which reconciles the seemingly odd idempotentHint=false with a purely read-only operation. The "reads or computes only and changes nothing" line confirms destructiveHint=false 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?
Dense but front-loaded: purpose and return fields first, then routing to base_tx, then input format, then cost. The closing sentences repeat the read-only/charging points already implied earlier, which is mild redundancy but the length is defensible for a paid, error-prone call.
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?
There is no output schema, and the description compensates by naming every returned field, including reverted-vs-success and contract creation. Error behavior, cost, and the read-only guarantee are all covered, leaving nothing an agent needs before calling.
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 hash format is already documented; the description restates the 0x-prefixed 64-hex constraint and adds a concrete example value, plus the behavior of a pending/unknown hash. That is useful but largely duplicative of the schema, so it sits just above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Transaction receipt on Base (eth_getTransactionReceipt)") and enumerates the returned fields: status, gas used, effective gas price, fee in ETH, log count, contract created. It explicitly distinguishes itself from base_tx ("for sender, value and calldata use base_tx"), so the agent can separate the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete trigger ("Use to confirm a payment or call went through") and names the alternative for the other need (base_tx). It also covers the edge case of a pending or unknown hash returning 404, which is exactly the failure mode an agent would otherwise misread as an error.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base_storageStorage slot read, BaseARead-onlyInspect
Read one raw storage slot of a contract on Base (eth_getStorageAt): the 32-byte word, as a number and, when it holds one, as an address. Slot is a decimal index or a 0x 32-byte key (mapping and proxy slots). Use to inspect contract state that has no getter, owners or implementation pointers; for proxies use base_proxy. A malformed address or slot is rejected with 400, uncharged. Example: address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | Slot: a decimal index (0, 1, 2…) or a 0x 32-byte key | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/destructiveHint=false, but the description adds real value beyond them: malformed input returns 400 uncharged, failed calls are free, and it explains the idempotentHint=false by noting each successful call is charged so repeats are not free. Pricing and auth (x402 USDC or card key /credits, first 25 free) are also disclosed. The only gap is that it doesn't describe error behavior beyond 400 or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and return shape are front-loaded, then usage, then errors and pricing – a sensible order. It is dense with useful facts, though the pricing sentence is long and partially repeats the charge/free idea already implied earlier.
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 no output schema, the description carries the return-value burden itself ('the 32-byte word, as a number and, when it holds one, as an address'), and it also covers error handling, cost, and the proxy alternative. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes beyond the schema by explaining why a 0x 32-byte key matters ('mapping and proxy slots') and gives a concrete example address. It doesn't add format detail for the decimal slot beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read one raw storage slot of a contract on Base (eth_getStorageAt)') and immediately pins down the scope of the returned word. It also names the sibling it is not (base_proxy), so an agent can distinguish it from base_call/base_proxy without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use to inspect contract state that has no getter, owners or implementation pointers' gives concrete when-to-use conditions, and 'for proxies use base_proxy' names the alternative that supersedes it. Both the positive case and the exclusion are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base_token_balanceBase ERC-20 balanceARead-onlyInspect
ERC-20 token balance of a wallet on Base (USDC, USDT, WETH or any token, via balanceOf): raw amount, decimals, symbol and the human-readable amount, live from the token contract. Use to check stablecoin or token holdings before a transfer or trade; for the native coin use base_balance. Both inputs are 0x addresses (40 hex characters); no contract returns 404 and a non-ERC-20 contract 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC, USDT, WETH or DAI, or the 0x ERC-20 contract address | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive and non-idempotent, but the description adds materially more: cost ($0.01/call via x402 or card key), first 25 free, failed calls free, and that repeat calls are billed. It also confirms the call reads or computes only and mutates nothing, plus how invalid targets surface as errors.
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?
One front-loaded paragraph: purpose and return shape first, then the sibling routing hint, then input/error/pricing constraints. Every clause carries operational value, though the pricing and error tail-ends make it denser than strictly necessary for a two-parameter read.
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?
No output schema exists, so the description carries return-shape duty and does so (raw amount, decimals, symbol, human-readable). Cost model, error codes, and sibling routing are all covered, leaving nothing an agent needs to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters (token accepting a ticker or 0x contract address, address as a 0x wallet), making 3 the baseline. The description adds length detail (40 hex characters) but its phrasing "Both inputs are 0x addresses" partially contradicts the schema's ticker option for `token`, adding muddle rather than clarity on that parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource: ERC-20 balance of a wallet on Base, resolved via balanceOf, and enumerates the returned fields (raw amount, decimals, symbol, human-readable amount). It explicitly distinguishes itself from base_balance for the native coin, so an agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the concrete use case ("check stablecoin or token holdings before a transfer or trade") and names the alternative for native coin (base_balance). It also specifies error semantics for the address argument (404 for no contract, 422 for non-ERC-20), which is guidance an agent needs to interpret outcomes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base_token_infoBase token info, ERC-20ARead-onlyInspect
Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Base, live from the contract. Use to identify an unknown token address or to format raw amounts; for a holder's balance use base_token_balance. Input is a ticker (USDC, WETH…) or the token's 0x contract address; an address that is not an ERC-20 contract returns 422, uncharged. Example: token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It adds real context beyond the annotations: failed/422 calls are uncharged, first 25 free, $0.01/call via x402 USDC or card key. It also reconciles idempotentHint=false by explaining the repeat charge is billing, not state change. The score is held at 3 because the pricing/billing detail crowds out other operational behavior (e.g., multi-token formatting example or caching), and the annotation set already carries the read-only safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded well, but the second half strings together pricing, free tier, auth method, and error policy in a single dense paragraph with some redundancy ('an address that is not an ERC-20 contract returns 422, uncharged' vs 'failed calls free'). It is information-dense but not tight; splitting billing into its own sentence would improve scanability.
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 no output schema, the description compensates by enumerating all four returned fields and showing an example address. Cost, error behavior, and the balance alternative are all covered, leaving nothing an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents token as 'a ticker such as USDC or WETH, or the 0x ERC-20 contract address,' so the description mostly repeats it. The only added semantic value is that a non-ERC-20 address returns 422 uncharged and the worked example address, which is marginal 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 ('Look up') with an explicit resource and field list ('name, symbol, decimals and total supply of an ERC-20 token contract on Base'), and it distinguishes itself from base_token_balance by naming that sibling. The agent can tell exactly what this returns versus the ~200 sibling 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?
It states two concrete use cases ('identify an unknown token address' and 'format raw amounts') and explicitly redirects to base_token_balance for holder balances. That is an explicit when-to-use and when-to-use-something-else, not an inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base_token_transfersToken transfers, BaseARead-onlyInspect
List a wallet's recent transfers of one ERC-20 token (default USDC) on Base, in and out, over the last N blocks (1-2,000, default 1,000): direction, counterparty, amount and transaction, newest first, up to 50. Use to confirm a payment arrived or see what was sent; for the current balance use base_token_balance. Malformed addresses are rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Token: a ticker such as USDT or WETH, or the 0x ERC-20 contract (default: USDC on this network) | |
| blocks | No | How many recent blocks to scan (1-2000, default 1000; 2,000 blocks is about 67 minutes on Base) | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true and idempotentHint=false. The description goes further on the points annotations can't carry: $0.01/call pricing, 25 free calls, failed calls free, and a 400 on malformed addresses being uncharged. However, it never states whether results are paginated, truncated at 50 with a cursor, or what happens when a wallet has more than 50 transfers in the window.
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?
Scope and the sibling alternative are front-loaded, and the example is useful. The final sentence packs pricing, free tier and charging caveats into a dense run-on, which is informative but less scannable than the opening.
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 no output schema, the description still tells the agent what comes back (direction, counterparty, amount, transaction, newest first, up to 50). Combined with error behavior (400 uncharged), pricing and read-only nature, an agent has enough to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents token, blocks and address, including the 1-2000 range and default 1000. The description adds the practical framing (default USDC, "over the last N blocks") and a concrete address example, but no new syntax or format semantics. Baseline 3 is correct when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List a wallet's recent transfers of one ERC-20 token") plus chain, direction ("in and out"), window, and returned fields. It explicitly distinguishes itself from base_token_balance, so an agent can separate the two without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the use cases ("confirm a payment arrived or see what was sent") and names the alternative tool for the other need ("for the current balance use base_token_balance"). The default token and block window are stated up front, leaving nothing to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
base_txBase transaction status and details: check whether a Base transaction succeeded, its sender, value and feeARead-onlyInspect
Look up any transaction on Base by hash: whether it succeeded, reverted or is still pending, sender and receiver, ETH value, called method id, block number and time, number of confirmations, gas used, gas price and the execution fee paid, and whether it created a contract. Use to confirm that a payment or contract call went through before acting on it. Example: hash=0x7d108fa131ed949c76d50caf2e7dfe25fc9903b9d276c40a0446d8afbdfe86b0. Price $0.003/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | Transaction hash on Base: 0x followed by 64 hex characters |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint/destructiveHint/openWorldHint, and the description adds genuinely new context: $0.003/call via x402 USDC or card key, first 25 free, failed calls free, and that repeats are charged. The billing detail also explains the non-obvious idempotentHint=false. The claim "reads or computes only and changes nothing" is largely redundant with readOnlyHint, which keeps it off a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and the returned-field inventory, then the usage rule, then cost. Dense and free of filler. It runs long in a single sentence and the "reads or computes only and changes nothing" clause is padding against readOnlyHint, but nothing is structurally misplaced.
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 no output schema, the description carries the full burden of describing the return payload, and it does so comprehensively (status, parties, value, method, block, confirmations, gas, fee, contract-creation flag). Pricing, auth path, and free-tier rules are all included, so an agent has everything needed to call and interpret this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% on the single `hash` parameter, so the schema already states the 0x + 64 hex format. The description adds only a sample hash value, which is a small convenience but no semantics beyond what the schema documents. Baseline 3 is appropriate when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ("Look up any transaction on Base by hash") and then enumerates exactly what comes back — status, sender/receiver, ETH value, method id, block, confirmations, gas, fee, contract creation. That is far beyond a restatement of the name. It stops short of a 5 because it never distinguishes itself from the sibling base_receipt, whose field set overlaps heavily with what is listed here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete decision context: "Use to confirm that a payment or contract call went through before acting on it," which is a real when-to-use rule an agent can act on. It also states cost and free-tier conditions that affect whether to call. There are no exclusions, though — an agent choosing between base_tx and base_receipt gets no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bera_allowanceToken allowance, BerachainARead-onlyInspect
ERC-20 token allowance on Berachain: how much a spender may move from an owner's wallet (allowance), raw and in token units, and whether the approval is unlimited. Use to check an approval before a swap or to audit risky open approvals; for the owner's balance use bera_token_balance. Token is a ticker (USDC, USDT, WETH…) or a 0x contract; a missing contract is 404 and a non-ERC-20 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | 0x wallet that gave the approval | |
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address | |
| spender | Yes | 0x contract or wallet allowed to spend (the example is Uniswap Permit2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses billing ($0.01/call, x402 USDC or card key, first 25 free, failures free), error semantics (404 for a missing contract, 422 for non-ERC-20, both uncharged), and explains why repeats aren't free, which makes the given idempotentHint=false meaningful. It stops short of describing pagination or latency, but for a single fixed-arity read this is substantial added 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?
One dense paragraph with the definition front-loaded, followed by use cases, the sibling pointer, input caveats, and billing. Every sentence is load-bearing, though the pricing clause is long enough to compete with the purpose statement for the agent's attention.
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 no output schema, the description carries the return-value burden and does so (raw and token-unit allowance, unlimited flag). Inputs, error paths, cost, and the read-only guarantee are all covered, so nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds value by tying the token parameter to concrete failure outcomes (missing contract → 404, non-ERC-20 → 422, uncharged). It restates the ticker-or-0x contract duality rather than adding new syntax detail, which caps it below a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource: 'ERC-20 token allowance on Berachain', and enumerates the returned values (raw amount, token units, unlimited flag). It explicitly distinguishes itself from bera_token_balance, so an agent can route between approval lookup and balance lookup without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases ('check an approval before a swap' and 'audit risky open approvals') plus an explicit alternative and the condition that selects it ('for the owner's balance use bera_token_balance'). The when-to-use and when-not-to-use are both stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bera_balanceBerachain balance, native coinARead-onlyInspect
Native BERA balance (eth_getBalance) of any 0x wallet address on Berachain at the latest block, in wei and in BERA. Use to check whether a wallet can pay gas or a transfer; for ERC-20 tokens use bera_token_balance, for all holdings at once use wallet_portfolio. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet or contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, but the description adds material context they don't carry: $0.01 per call via x402 USDC or card key, 25 free calls, failed calls free, malformed addresses rejected with 400 and uncharged, and repeats are billable. That pricing and error-handling profile is exactly what an agent needs before calling a paid endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and scoping come first, followed by routing alternatives, then error and cost behavior — a sensible front-loaded order. It is dense but nearly every clause carries information; the ending slightly restates the charging model ("each call is charged, so repeats are not free") already implied by the pricing sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description covers return values (wei and BERA), the block height read, failure modes, and billing. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single address parameter, so baseline is 3. The description adds a canonical example address and clarifies the rejection behavior for malformed input, which slightly exceeds what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ("Native BERA balance") scoped to a chain, a unit (wei and BERA), a block (latest), and an underlying RPC method (eth_getBalance). It explicitly distinguishes itself from bera_token_balance and wallet_portfolio, so an agent can route correctly without opening sibling schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the concrete use case ("check whether a wallet can pay gas or a transfer") and names both alternatives with the condition that selects each: ERC-20 tokens go to bera_token_balance, all holdings at once go to wallet_portfolio. That is explicit when-to-use plus when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bera_blockBerachain block numberARead-onlyInspect
Latest block number and block details on Berachain, or any block by decimal number: hash, timestamp, transaction count, gas used and limit, base fee in gwei and producer. Use for timestamps and confirmation counts; for current fees use bera_gas. A block that does not exist yet returns 404, uncharged. Example: number=latest. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| number | No | Block number, or 'latest' (default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, open-world and non-idempotent, so the safety profile is covered. The description adds genuinely new behavioral context: per-call pricing, the 25-free tier, free failed calls, and an explicit note that repeats are not free because each call is charged, which explains the non-idempotent hint. It stops short of describing response shape or pagination, but no output schema exists and the fields are enumerated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what is returned, then the field list, then usage routing, then error and pricing notes. Dense but nearly every clause carries information; the pricing sentence is slightly long but materially affects repeated-call decisions.
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 no output schema, the description compensates by enumerating the returned fields, and it also covers default behavior ('latest'), the 404 failure mode, and cost. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented as 'Block number, or latest (default)', so the baseline is 3. The description adds real meaning on top: the number must be decimal, and it supplies a concrete example (number=latest), which prevents an agent from passing a hex block tag.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource (fetch latest block number or any block by number on Berachain) and enumerates the returned fields: hash, timestamp, tx count, gas used/limit, base fee, producer. It explicitly distinguishes itself from the sibling bera_gas, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the intended use cases (timestamps and confirmation counts) and names the alternative for the adjacent need ('for current fees use bera_gas'). It also covers the failure case: a block that does not exist yet returns 404 and is uncharged.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bera_callEth call, BerachainARead-onlyInspect
Read-only contract call on Berachain (eth_call): send ABI-encoded calldata to a contract at the latest block and get the raw return data, without a transaction or gas. Use to read any view function that has no dedicated tool (the example reads USDC totalSupply, selector 0x18160ddd); decode the result with the function's ABI. Calldata up to 8 KB; a call that reverts is 422 with the reason, uncharged. Example: to=0x549943e04f40284185054145c6E4e9568C1D3241, data=0x18160ddd. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x contract address to call | |
| data | Yes | 0x ABI-encoded calldata: 4-byte selector plus arguments | |
| from | No | Optional 0x sender address for calls that check msg.sender |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: latest-block semantics, no transaction or gas, 8 KB calldata cap, 422 with revert reason and no charge on failure, and a pricing model ($0.01/call, first 25 free) that explains why idempotentHint is false despite readOnlyHint being true. Read-only and open-world claims in the annotations are reinforced, not repeated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, scope, and usage before the example, limits, and pricing. Dense but nearly every clause carries decision-relevant information; the pricing sentence is multi-clause and slightly crowded, though its content is justified.
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?
No output schema exists, so the description supplies the return shape (raw return data, decode via ABI), the error contract (422 with reason, uncharged), size limits, and cost. An agent has everything needed to call correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real value: an 8 KB limit on data that the schema does not state, a worked to/data pair, and the instruction to decode the raw return with the function's ABI. The optional `from` parameter is left to 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?
States a specific verb and resource (read-only contract call, eth_call) plus the chain, and explicitly scopes it to view functions that have no dedicated tool. That lets an agent pick it over bera_token_balance, bera_storage, or bera_logs without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage rule: use it for any view function that has no dedicated tool, with a concrete example (USDC totalSupply). It signals that dedicated tools are the preferred alternative but doesn't name a specific sibling to fall back to, so it is short of fully explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bera_estimate_gasEstimate gas, BerachainARead-onlyInspect
Estimate the gas a transaction would use on Berachain (eth_estimateGas) and what it would cost at the current gas price, in gas units, gwei and BERA. Give to, plus value in BERA and calldata for a contract call, and the sender when the call depends on it. Use before sending a transaction or to price a batch; for the gas price alone use bera_gas. A transaction that would revert is 422 with the reason, uncharged. Example: to=0x000000000000000000000000000000000000dEaD. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x recipient or contract address | |
| data | No | Optional 0x calldata for a contract call | |
| from | No | 0x sender address (default: an empty address) | |
| value | No | Amount of BERA to send, in BERA (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: revert behavior (422 with reason, uncharged), the cost model (x402 USDC or card key, first 25 free, failed calls free), non-idempotency implications ('each call is charged, so repeats are not free'), and the non-mutating guarantee. This is consistent with readOnlyHint=true and idempotentHint=false rather than contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core verb/resource before parameters, usage, errors, and pricing. It is dense but nearly every sentence carries decision-relevant information; the example address and pricing detail are the only slightly padded elements.
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 no output schema, the description still explains what comes back (gas units, gwei, BERA cost), covers the failure mode (422 revert with reason), and discloses the payment requirement. An agent has everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all four parameters and the baseline would be 3. The description adds genuine semantic context by clarifying that value is denominated in BERA and that 'from' is needed when the call depends on the sender, which helps an agent decide when to supply it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Estimate the gas a transaction would use'), names the chain and underlying RPC method (eth_estimateGas), and specifies the three units returned (gas, gwei, BERA). It also explicitly distinguishes itself from the sibling bera_gas, which handles gas price only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete triggers ('use before sending a transaction or to price a batch') and an explicit alternative with the condition that selects it ('for the gas price alone use bera_gas'). Nothing about tool selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bera_gasBerachain gas priceARead-onlyInspect
Current gas price on Berachain (eth_gasPrice): gas price, base fee and suggested priority fee in gwei, plus what a plain BERA transfer (21,000 gas) costs right now. Takes no input. Use before sending a transaction or to decide whether to wait; for the fee a past transaction actually paid use bera_receipt. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Optional: comma-separated top-level result keys to keep, for a smaller answer (for example only=price,symbol); unknown keys are ignored and an empty match returns the full result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: pricing ($0.01/call via x402 USDC or card key, first 25 free, failed calls free), the fact that repeat calls are not free (matching idempotentHint=false), and that it is read-only. The only flaw is 'takes no input,' which is contradicted by the optional `only` parameter in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the return contents, then alternatives, then pricing and safety in one compact block. Slightly dense with billing boilerplate, but every sentence carries information an agent may need before paying for a call.
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?
No output schema exists, yet the description names the returned fields and units (gwei, base fee, priority fee, transfer cost), so the agent knows what it gets. Pricing, safety, and the sibling alternative are all covered, leaving nothing needed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single optional `only` filter is fully documented there, so the baseline is 3. The description adds no meaning to it and in fact says 'takes no input,' which subtly misleads about the parameter's existence.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource for a specific chain and enumerates exactly what is returned (gas price, base fee, priority fee in gwei, 21,000-gas transfer cost). It also names the sibling it is not (bera_receipt for past transactions) and could be told apart from bera_gas_history without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit timing guidance ('use before sending a transaction or to decide whether to wait') and an explicit alternative with its condition ('for the fee a past transaction actually paid use bera_receipt'). No inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bera_gas_historyBerachain gas history, gas priceARead-onlyInspect
Gas price history on Berachain (eth_feeHistory): base fee in gwei for each of the last N blocks (5-100, default 20), how full each block was, and the 10th, 50th and 90th percentile priority fees, with the low, average and high base fee over the window. Use to judge whether fees are rising, pick a priority fee or time a transaction; for the current price alone use bera_gas. Example: blocks=20. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks, 5-100 (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the billing model (price per call, x402 USDC or card key, first 25 free, failed calls free) and that repeated calls are charged — which explains the non-obvious idempotentHint=false. It also states 'reads or computes only and changes nothing,' reinforcing readOnlyHint. Not a 5 only because it doesn't mention latency or rate limits beyond the free tier.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and payload, then usage, then pricing; each clause is informative. It runs long, and the billing/credits detail is dense for a description field, but no sentence is pure 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?
There is no output schema, and the description compensates by naming every returned field, including the percentile priority fees and window aggregates. Combined with the safety and cost disclosures, an agent has everything needed to call it and interpret the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema description already says 'How many recent blocks, 5-100 (default 20)', which the description merely repeats along with an example of blocks=20. No additional meaning about what the window controls in the returned data is added 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?
States a specific verb and resource — gas price history on Berachain via eth_feeHistory — and enumerates exactly what is returned: base fee per block, block fullness, 10th/50th/90th percentile priority fees, and low/average/high base fee. It explicitly contrasts with the sibling bera_gas for the current price alone, so the agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives three concrete decision contexts (judge whether fees are rising, pick a priority fee, time a transaction) and names the alternative bera_gas with the condition that selects it. The default and valid range for the window are also restated inline, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bera_is_contractBerachain is-contract checkARead-onlyInspect
Check whether a 0x address on Berachain is a smart contract or a plain wallet: bytecode size, and whether it is an EIP-1167 minimal proxy and which implementation it points to. Use before sending funds or approving a spender; for a fuller risk verdict use check_counterparty. A malformed address is rejected with 400, uncharged. Example: address=0x549943e04f40284185054145c6E4e9568C1D3241. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/destructive annotations by disclosing that a malformed address returns 400 uncharged, that failed calls are free, that each successful call costs $0.01 via x402 USDC or a card key, and that the first 25 calls are free. It also restates the read-only nature, though that is already covered by readOnlyHint=true, so a small amount of the text is redundant with structured 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?
Front-loads the core purpose in the first sentence, then packs use guidance, example, pricing, and safety notes into a few dense sentences. Slightly overloaded with billing and example detail, but nothing is truly wasteful.
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 no output schema, the description fills that gap by describing exactly what the response contains (bytecode size, minimal-proxy flag, implementation target). Error behavior, cost, and side-effect profile are all covered, so an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is a single required 'address' parameter, so baseline is 3; the description earns an extra point by supplying a concrete example address and stating the validation rule (malformed addresses rejected with 400).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — check whether a 0x address on Berachain is a contract or a plain wallet — and enumerates the returned facts (bytecode size, EIP-1167 minimal proxy status, implementation address). This clearly separates it from siblings such as bera_proxy and bera_balance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('before sending funds or approving a spender') and names the alternative for a different need ('for a fuller risk verdict use check_counterparty'). The when-to-use and when-to-use-something-else conditions are both spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bera_logsBerachain event logsARead-onlyInspect
Recent contract event logs on Berachain (eth_getLogs): the events a contract emitted over the last N blocks (1-1,000, default 50), optionally filtered by topic0 (the 0x 32-byte event signature hash). Returns up to 100 logs with block, transaction hash and topics. Use to watch transfers or contract events; for one transaction's outcome use bera_receipt. Example: address=0x549943e04f40284185054145c6E4e9568C1D3241. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks to scan (1-1000, default 50) | |
| topic0 | No | Optional 0x event signature hash to filter by | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses pricing ($0.01/call, 25 free, failed calls free), a 100-log result cap, the 1-1,000 block scan window with default 50, and warns that repeats are charged so retries are not free — consistent with idempotentHint=false. This is exactly the kind of cost and limit context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core semantics, then returns, then usage, then billing — a sensible order. The billing sentence is long, but every clause (price, free tier, failed-call handling, no-free-retries) affects agent behavior rather than 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?
There is no output schema, yet the description names the returned fields (block, transaction hash, topics) and the row cap. Combined with the block-range limits and cost model, an agent has everything needed to call it correctly and predict the shape of the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3; the description still adds value by spelling out that topic0 is the 0x 32-byte event signature hash and by giving a concrete example address. It does not expand on block-range edge behavior beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('recent contract event logs on Berachain (eth_getLogs)') and pins the mechanism to a block window plus optional topic0 filter. It is clearly distinguishable from bera_receipt, which it names, and from the many other bera_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a positive use case ('watch transfers or contract events') and an explicit alternative for a specific scenario ('for one transaction's outcome use bera_receipt'). It does not route to bera_token_transfers, which is arguably the better sibling for transfer-watching, so guidance is strong but not airtight.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bera_nonceBerachain nonce, account nonceARead-onlyInspect
Read the transaction count (nonce) of a 0x address on Berachain, both confirmed and including pending transactions. Use to build the next transaction or to tell whether an address has ever sent anything; for its balance use bera_balance. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-idempotent, and the description adds real context beyond them: it returns both confirmed and pending counts, malformed addresses are rejected with 400 uncharged, pricing is $0.01/call with 25 free and failed calls free, and repeats are not free. That last point is consistent with idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and the sibling routing, then pricing. The pricing/charging sentences are dense but each carries decision-relevant information; slightly long for a one-parameter read tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description implies the return (confirmed and pending nonce counts) plus error behavior and cost, which is enough for an agent to call it correctly. A brief note on the exact return shape would make it 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?
Schema coverage is 100% so the baseline is 3, but the description adds a concrete example address and states the validation behavior (malformed address → 400, uncharged), which is meaning beyond the bare '0x address' schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the transaction count (nonce)'), names the chain (Berachain) and the address type (0x), and explicitly distinguishes itself from the sibling bera_balance. An agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases ('build the next transaction', 'tell whether an address has ever sent anything') and routes the balance case to bera_balance by name. Explicit when-to-use plus an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bera_proxyProxy implementation, BerachainARead-onlyInspect
Find the implementation behind a proxy contract on Berachain: reads the EIP-1967 implementation, beacon and admin slots, EIP-1822 (UUPS), the older OpenZeppelin layout and EIP-1167 minimal-proxy bytecode, and names the kind found. Use before trusting or decoding a contract whose code can be swapped by its admin; for a fuller risk verdict use contract_risk. A malformed address is 400; an address without code is 404, both uncharged. Example: address=0x549943e04f40284185054145c6E4e9568C1D3241. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, destructiveHint=false) it discloses HTTP error semantics (400 malformed, 404 no code) and that both are uncharged, plus the pricing model, first-25-free tier, and that repeats are billed. The only thing not covered is the response shape / what a 'not a proxy' answer looks like, but the description otherwise adds substantial operational context annotations don't provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and the detection methods, then usage, then errors and pricing. Every clause is informative, though the pricing/credits tail is slightly long for a tool-selection description and could be compressed.
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?
No output schema exists, yet the description still conveys the return content ('names the kind found'), the failure modes, cost, and side-effect profile. For a one-parameter read-only lookup, an agent has everything needed to call it and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single address parameter, so baseline is 3; the description goes further with a concrete example address and the validation outcome for a malformed one, which tells the agent the expected format and failure mode. Remaining gap is it never states whether checksummed or lowercase input is accepted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource: 'Find the implementation behind a proxy contract on Berachain', then lists exactly which storage slots and standards it reads (EIP-1967, beacon/admin, EIP-1822/UUPS, OZ legacy, EIP-1167). This clearly separates it from siblings like beara_storage or beara_is_contract, which read generic state or existence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use: 'Use before trusting or decoding a contract whose code can be swapped by its admin', plus a named alternative for a different need ('for a fuller risk verdict use contract_risk'). It also states when it does not apply by tying the value to upgradable contracts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bera_receiptBerachain transaction receiptARead-onlyInspect
Transaction receipt on Berachain (eth_getTransactionReceipt): success or reverted, gas used, effective gas price, fee paid in BERA, number of event logs and any contract created. Use to confirm a payment or call went through; for sender, value and calldata use bera_tx. Input is a 0x-prefixed 64-hex hash; a pending or unknown hash returns 404, uncharged. Example: hash=0x19db8c305092673a73e777b690469a0962145d4289a2608e8f62881c3a9ac18a. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, but the description adds genuinely new behavioral facts: pending/unknown hash returns 404 uncharged, reads only and changes nothing, $0.01/call with first 25 free and failed calls free, and repeats are not free (explaining idempotentHint=false). This is exactly the contextual layer annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and return fields are front-loaded, then usage routing, then input/error behavior, then pricing. Dense but nearly every clause carries information; the pricing tail is slightly long for the space it occupies relative to the retrieval task.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description covers return contents, input format, failure mode, cost, and the sibling alternative. Nothing an agent needs to select or invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already documents the hash format, so the baseline is 3. The description adds an error-semantics rule (pending/unknown hash → 404, uncharged) and a concrete example hash, which meaningfully extend 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?
Names a specific verb and resource ('Transaction receipt on Berachain') and enumerates the returned fields (status, gas used, effective gas price, fee in BERA, log count, contract created), tying it to eth_getTransactionReceipt. It explicitly distinguishes itself from the sibling bera_tx by delegating sender/value/calldata to that tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('confirm a payment or call went through') and names the alternative, bera_tx, with the exact condition that selects it (sender, value, calldata). The when-not is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bera_storageStorage slot read, BerachainARead-onlyInspect
Read one raw storage slot of a contract on Berachain (eth_getStorageAt): the 32-byte word, as a number and, when it holds one, as an address. Slot is a decimal index or a 0x 32-byte key (mapping and proxy slots). Use to inspect contract state that has no getter, owners or implementation pointers; for proxies use bera_proxy. A malformed address or slot is rejected with 400, uncharged. Example: address=0x549943e04f40284185054145c6E4e9568C1D3241. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | Slot: a decimal index (0, 1, 2…) or a 0x 32-byte key | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/destructive=false, but the description adds material facts they cannot carry: the pricing model ($0.01/call via x402 USDC or card key, first 25 free), that failed calls are free, that repeated calls are charged because the tool is non-idempotent in billing terms, and that a malformed address/slot yields a 400 without charge. It also states the return shape (32-byte word as number, and as an address when applicable).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the operation and return shape, then usage routing, then error/pricing facts. Dense but nearly every sentence carries new information; the pricing detail is slightly verbose for a tool description but justified by its billing accuracy requirement.
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?
No output schema exists, and the description compensates by describing exactly what is returned and when an address interpretation applies. Combined with the error and billing behavior, an agent has everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: it clarifies why a 0x 32-byte key is used ("mapping and proxy slots") and supplies a concrete example address. The slot-format wording largely duplicates the schema, so it stops short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Read one raw storage slot of a contract on Berachain") and ties it to the underlying RPC method (eth_getStorageAt). It also names the sibling it must not be confused with (bera_proxy), so an agent can discriminate it from the ~200 other tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it ("inspect contract state that has no getter, owners or implementation pointers") and routes proxy work to the alternative ("for proxies use bera_proxy"). It even covers the failure path (400 on malformed input, uncharged), leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bera_token_balanceBerachain ERC-20 balanceARead-onlyInspect
ERC-20 token balance of a wallet on Berachain (USDC, USDT, WETH or any token, via balanceOf): raw amount, decimals, symbol and the human-readable amount, live from the token contract. Use to check stablecoin or token holdings before a transfer or trade; for the native coin use bera_balance. Both inputs are 0x addresses (40 hex characters); no contract returns 404 and a non-ERC-20 contract 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC, USDT, WETH or DAI, or the 0x ERC-20 contract address | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses error semantics (404 for no contract, 422 for non-ERC-20, both uncharged), pricing ($0.01/call via x402 or card key, first 25 free, failed calls free) and the fact that each call is charged so repeats are not free, which explains the otherwise puzzling idempotentHint=false. This is exactly the extra context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded and the alternative and return fields follow in a logical order. The single dense paragraph is slightly overlong, and 'changes nothing' partly repeats the readOnlyHint annotation.
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 no output schema, the description enumerates the returned fields (raw amount, decimals, symbol, human-readable amount) so an agent knows the response shape. Combined with error codes, pricing and safety, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3 and the schema already documents both parameters. The description adds a 40-hex-character constraint, but the phrasing 'both inputs are 0x addresses' conflicts with the schema's allowance of a ticker (USDC/DAI) for the token field, so it adds ambiguity rather than clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get balance), resource (ERC-20 token of a wallet on Berachain) and the mechanism (balanceOf), and explicitly names the sibling to use instead for the native coin (bera_balance). An agent can distinguish it from bera_token_info and bera_balance without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('check stablecoin or token holdings before a transfer or trade') and a named alternative with its condition ('for the native coin use bera_balance'). Nothing about tool selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bera_token_infoBerachain token info, ERC-20ARead-onlyInspect
Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Berachain, live from the contract. Use to identify an unknown token address or to format raw amounts; for a holder's balance use bera_token_balance. Input is a ticker (USDC, WETH…) or the token's 0x contract address; an address that is not an ERC-20 contract returns 422, uncharged. Example: token=0x549943e04f40284185054145c6E4e9568C1D3241. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the failure mode (non-ERC-20 address returns 422, uncharged), the cost model ($0.01/call via x402 or credits, first 25 free, failed calls free), and why repeats are not free — which explains the idempotentHint=false flag. It stops short of describing the response shape (e.g. whether decimals/supply are strings), a minor gap for a read tool with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage, then input format, then pricing — a sensible order. Slightly padded by the pricing information appearing twice ('failed calls free' and 'each call is charged, so repeats are not free'), which could be merged into a single clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description covers return fields, input formats, error behavior, and cost. An agent has everything needed to decide and call 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% so the baseline is 3, but the description adds real meaning: the parameter accepts either a ticker like USDC/WETH or a 0x address, and it supplies a concrete example value. That dual-input semantics is the main ambiguity risk and it is resolved in prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Berachain') and names the exact fields returned. The chain scoping plus the sibling pointer to bera_token_balance make it unmistakable versus the 200+ other 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?
Explicitly says when to use it ('identify an unknown token address or to format raw amounts') and when not to ('for a holder's balance use bera_token_balance'). The alternative is named with the condition that selects it, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bera_token_transfersToken transfers, BerachainARead-onlyInspect
List a wallet's recent transfers of one ERC-20 token (default USDC) on Berachain, in and out, over the last N blocks (1-2,000, default 1,000): direction, counterparty, amount and transaction, newest first, up to 50. Use to confirm a payment arrived or see what was sent; for the current balance use bera_token_balance. Malformed addresses are rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Token: a ticker such as USDT or WETH, or the 0x ERC-20 contract (default: USDC on this network) | |
| blocks | No | How many recent blocks to scan (1-2000, default 1000; 2,000 blocks is about 67 minutes on Berachain) | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint annotation: discloses pricing ($0.01/call, first 25 free), that failed calls and rejected malformed addresses (400) are uncharged, that repeats are not free, and that the call changes nothing. These are exactly the facts an agent needs to avoid costly or pointless repeats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core behavior and alternatives before pricing details, and every sentence carries information. The single long opening sentence is dense and the pricing clause is somewhat crammed in, which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by describing the return shape (direction, counterparty, amount, transaction), the ordering (newest first) and the cap (up to 50). Nothing an agent needs to call or interpret the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, yet the description still adds meaning: the token parameter defaults to USDC, the block window is 1-2,000 with a 1,000 default, and it supplies a concrete address example. It stops short of explaining token-ticker fallback behavior 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?
States a specific verb+resource (list a wallet's ERC-20 transfers), the network (Berachain), the direction scope (in and out), and the lookback window. An agent can distinguish it from bera_token_balance and bera_logs without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use cases ('confirm a payment arrived or see what was sent') and names the alternative explicitly with its selecting condition ('for the current balance use bera_token_balance'). The boundary is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bera_txBerachain transactionARead-onlyInspect
Look up a Berachain transaction by hash: sender, recipient, value in BERA, nonce, gas limit, the 4-byte function selector and its block. Use to see what was sent or whether it exists; for success or failure and fees paid use bera_receipt, for emitted events bera_logs. Input is a 0x-prefixed 64-hex hash; an unknown hash returns 404, uncharged. Example: hash=0x19db8c305092673a73e777b690469a0962145d4289a2608e8f62881c3a9ac18a. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful context beyond that: unknown hashes return 404 uncharged, failed calls are free, and repeats are billed because idempotentHint=false. The only reason this is not higher is that the pricing/key-mechanics detail crowds out return-shape nuance, but on balance it does add real behavioral value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and routing alternatives are front-loaded in the first two sentences, which is the right order. The pricing/credits sentence is longer than most agents need and could be trimmed, but it is not padding so much as commercial context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description fully covers input format, what the response contains, error behavior on unknown hashes, and cost model. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already documents the 0x-prefixed 64-hex format, so the description's restatement adds little. The concrete example hash is a small practical aid, but the semantics are already carried by 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 first sentence names a specific verb ('look up') and resource ('a Berachain transaction by hash') and enumerates exactly what is returned: sender, recipient, value in BERA, nonce, gas limit, function selector, and block. It is trivially distinguishable from bera_receipt and bera_logs, which are named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit routing: use this to see what was sent or whether a tx exists; use bera_receipt for success/failure and fees; use bera_logs for emitted events. That is when-to-use plus two named alternatives with the selecting condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
btc_addressBitcoin address balance and activity: check the balance and transactions of a Bitcoin addressARead-onlyInspect
Bitcoin address balance and activity for any mainnet address (legacy, P2SH or bech32): confirmed balance in sats and BTC, unconfirmed pending amount, total received and sent, and transaction counts. Use for payment verification, checking whether a deposit arrived, and wallet monitoring. Example: address=bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Bitcoin mainnet address (1..., 3... or bc1...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description provides significant behavioral context beyond annotations, detailing what is returned (confirmed, unconfirmed, total received/sent/counts) and crucial operational details (pricing, failure costs, read-only nature). The annotation readOnlyHint: true reinforces this, but the description adds necessary details about the call cost and idempotent nature.
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 definition is highly descriptive, which is necessary for a tool covering multiple sub-metrics (balance, unconfirmed, sent, received). It is structured logically, starting with the service provided and ending with operational constraints.
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 is highly complete, covering input requirements (address format), output scope (types of balances), and critical operational metadata (cost structure, id/mutability). No significant gap exists for an AI 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?
Schema coverage is 100%, so a baseline of 3 is met. The description reinforces the required format and nature of the 'address' parameter, specifying which mainnet types are accepted (legacy, P2SH, bech32).
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 name (btc_address) combined with the title and description clearly specifies the action (check balance and transactions) and the resource (Bitcoin address).
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 use cases ('payment verification, checking whether a deposit arrived, and wallet monitoring') and clarifies the scope (mainnet addresses only).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
btc_feesBitcoin fee rates and mempool status: Bitcoin fee estimate in sat/vB for the next block, half hour and hour, with mempool sizeARead-onlyInspect
Current Bitcoin network fee rates in sat/vB for next-block, half-hour, one-hour and economy confirmation, the estimated cost in sats of a typical payment, mempool size and total pending fees, and the latest block height. Use before sending a Bitcoin transaction or to decide whether to wait for lower fees. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Optional: comma-separated top-level result keys to keep, for a smaller answer (for example only=price,symbol); unknown keys are ignored and an empty match returns the full result |
Output Schema
| Name | Required | Description |
|---|---|---|
| fees | Yes | |
| unit | Yes | |
| source | Yes | |
| mempool | Yes | |
| network | Yes | |
| checkedAt | Yes | Server retrieval time in UTC. Upstream endpoints are not an atomic snapshot. |
| blockHeight | Yes | |
| limitations | Yes | |
| typicalPaymentSats | Yes | |
| typicalPaymentVbytes | Yes | Illustrative transaction-size assumption; not the buyer's transaction size. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: pricing ($0.002/call via x402 USDC or card key), 25 free calls, failed calls free, and the explicit note that repeats are not free — which explains the non-idempotent hint. It also reaffirms read-only behavior ('reads or computes only and changes nothing').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the returned data, then gives usage context, then pricing constraints — a sensible order with no filler. Slightly dense, and the cost/free-tier points are repeated in two sentences, costing a little economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't document return shape, yet it enumerates the key values (fee tiers, sats cost of a typical payment, mempool size, block height) and covers cost model and safety profile. An agent has everything needed to call and interpret 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?
There is one optional parameter (`only`) with 100% schema description coverage, so the schema already explains the comma-separated key filtering and its fallback behavior. The description adds nothing about this parameter, which is acceptable given full coverage but not additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: current Bitcoin network fee rates in sat/vB at several confirmation horizons, plus mempool size, pending fees, and block height. The BTC scope cleanly separates it from the many *_gas siblings, which are all EVM-chain gas 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?
Explicitly says to use it 'before sending a Bitcoin transaction or to decide whether to wait for lower fees', which gives a clear decision context. It doesn't name an alternative tool or state when-not to use it, but within this toolset there is no competing BTC fee endpoint to route to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
celo_allowanceToken allowance, Celo ERC-20ARead-onlyInspect
ERC-20 token allowance on Celo: how much a spender may move from an owner's wallet (allowance), raw and in token units, and whether the approval is unlimited. Use to check an approval before a swap or to audit risky open approvals; for the owner's balance use celo_token_balance. Token is a ticker (USDC, USDT, WETH…) or a 0x contract; a missing contract is 404 and a non-ERC-20 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | 0x wallet that gave the approval | |
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address | |
| spender | Yes | 0x contract or wallet allowed to spend (the example is Uniswap Permit2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only safety, but the description adds context they do not: error semantics ('missing contract is 404 and a non-ERC-20 422, both uncharged'), pricing and free tier ('$0.01/call via x402 USDC or a card key, first 25 free; failed calls free'), and the non-idempotence rationale ('each call is charged, so repeats are not free'). It also confirms no state change ('reads or computes only'), consistent with readOnlyHint=true rather than 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?
Front-loads what the tool returns, then usage, then errors and pricing; sentences are dense but every clause carries information. The pricing/billing tail is lengthy for a read tool and could be trimmed, which keeps it off a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description correctly explains the return values (raw and token units plus unlimited flag). With error codes, billing behaviour, and a routing pointer to the balance tool, an agent has everything needed to call this correctly and interpret failure.
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 per-parameter docs already carry the baseline. The description still adds behaviour the schema does not: token accepts a ticker or 0x contract, and a bad token yields 404 (unknown) or 422 (non-ERC-20) uncharged — useful error semantics for the parameter, though owner/spender get no extra treatment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('ERC-20 token allowance on Celo: how much a spender may move from an owner's wallet') and explicitly scopes the return shape (raw, token units, unlimited flag). It also names the sibling it is not ('for the owner's balance use celo_token_balance'), so it is distinguishable from the ~100 sibling tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete trigger conditions ('check an approval before a swap or to audit risky open approvals') and an explicit alternative with the selecting condition ('for the owner's balance use celo_token_balance'). Nothing about when to pick this versus a neighbour is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
celo_balanceCelo balance, native coinARead-onlyInspect
Native CELO balance (eth_getBalance) of any 0x wallet address on Celo at the latest block, in wei and in CELO. Use to check whether a wallet can pay gas or a transfer; for ERC-20 tokens use celo_token_balance, for all holdings at once use wallet_portfolio. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet or contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces that with 'reads or computes only and changes nothing'. It goes further by disclosing error behavior (malformed address rejected with 400 and uncharged), pricing model ($0.01/call, first 25 free, failed calls free) and that repeats are billed — which usefully explains why idempotentHint is false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and unit, then routing to siblings, then error/pricing behavior. Dense but each sentence carries information; the pricing and free-tier details are slightly verbose for a balance lookup, keeping it just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description specifies the return values (wei and CELO) and the block context (latest). Combined with error handling, billing, and sibling routing, an agent has everything needed to call this correctly on the first attempt.
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?
Only one parameter and schema description coverage is 100%, so the schema already documents the address field as a '0x wallet or contract address'. The description adds a worked example address and the note that any 0x address works, which is marginal value beyond the schema. Baseline 3 applies 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?
States a specific verb+resource ('Native CELO balance ... of any 0x wallet address on Celo at the latest block'), gives the underlying RPC (eth_getBalance) and the return units (wei and CELO). It also explicitly distinguishes itself from celo_token_balance and wallet_portfolio, so an agent can select it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case ('check whether a wallet can pay gas or a transfer') and names both alternatives with the condition that selects them: celo_token_balance for ERC-20s, wallet_portfolio for all holdings at once. Nothing about when-to-use is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
celo_blockCelo block numberARead-onlyInspect
Latest block number and block details on Celo, or any block by decimal number: hash, timestamp, transaction count, gas used and limit, base fee in gwei and producer. Use for timestamps and confirmation counts; for current fees use celo_gas. A block that does not exist yet returns 404, uncharged. Example: number=latest. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| number | No | Block number, or 'latest' (default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark the call readOnly and non-destructive, so the description correctly does not repeat the safety story. It adds genuinely non-obvious behavior: a not-yet-existing block returns a 404 that is not charged, failed calls are free, and because each successful call bills $0.01 (first 25 free), repeats are not free – which explains the idempotentHint=false. It stops short of describing response shape or any rate limits, so a 4 rather than 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with purpose and return fields before pricing, and each sentence carries information. The billing point is slightly spread out ('charged, so repeats are not free' followed later by 'failed calls free'), which costs it a perfect score.
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?
There is no output schema, so the field list in the description does important work. Together with the 404 behavior and the billing rules, an agent has enough to call this correctly; only the exact response envelope and default-block nuance are left implicit.
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 states the param is a block number or the default 'latest', so the 3 baseline applies. The description adds only the 'decimal number' phrasing and the 'number=latest' example, which are marginal gains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Latest block number and block details on Celo, or any block by decimal number') and enumerates exactly which fields come back (hash, timestamp, tx count, gas used/limit, base fee, producer). It clearly separates itself from the same-family sibling celo_gas, which handles fees.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('timestamps and confirmation counts') and when-not / alternative ('for current fees use celo_gas'). It also gives a concrete invocation example (number=latest), so the agent doesn't have to guess the default form.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
celo_callEth call, Celo contract callARead-onlyInspect
Read-only contract call on Celo (eth_call): send ABI-encoded calldata to a contract at the latest block and get the raw return data, without a transaction or gas. Use to read any view function that has no dedicated tool (the example reads USDC totalSupply, selector 0x18160ddd); decode the result with the function's ABI. Calldata up to 8 KB; a call that reverts is 422 with the reason, uncharged. Example: to=0xcebA9300f2b948710d2653dD7B07f33A8B32118C, data=0x18160ddd. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x contract address to call | |
| data | Yes | 0x ABI-encoded calldata: 4-byte selector plus arguments | |
| from | No | Optional 0x sender address for calls that check msg.sender |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, destructiveHint=false), and the description adds material context beyond them: 8 KB calldata limit, revert behavior (422 with reason, uncharged), no transaction or gas, and a per-call pricing model with 25 free calls. It also explains why idempotentHint=false — repeats are charged — which the annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage, then limits and pricing, with zero filler sentences. The pricing/credits clause is a bit dense and semicolon-chained but contains decision-relevant information, so it 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?
With no output schema, the description carries the return-value burden and does so adequately ('raw return data', decode with the function's ABI). It does not describe the response envelope (e.g., whether block context is included), a minor gap for an eth_call primitive.
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 all three parameters are documented in the schema, including the optional 'from' for msg.sender checks. The description adds a concrete worked example (to=0xcebA..., data=0x18160ddd) and decoding guidance, but says nothing about 'from', so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+chain: read-only eth_call on Celo returning raw return data at the latest block. It explicitly distinguishes itself from the many dedicated read tools in the sibling set by saying it is for view functions that 'have no dedicated tool.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear when-to-use guidance ('read any view function that has no dedicated tool') and implies that dedicated tools like celo_token_balance or celo_balance should be preferred where they exist. It does not name specific alternative siblings or state exclusions explicitly, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
celo_estimate_gasEstimate gas, CeloARead-onlyInspect
Estimate the gas a transaction would use on Celo (eth_estimateGas) and what it would cost at the current gas price, in gas units, gwei and CELO. Give to, plus value in CELO and calldata for a contract call, and the sender when the call depends on it. Use before sending a transaction or to price a batch; for the gas price alone use celo_gas. A transaction that would revert is 422 with the reason, uncharged. Example: to=0x000000000000000000000000000000000000dEaD. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x recipient or contract address | |
| data | No | Optional 0x calldata for a contract call | |
| from | No | 0x sender address (default: an empty address) | |
| value | No | Amount of CELO to send, in CELO (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, idempotentHint=false; the description is consistent with all of them ('Reads or computes only and changes nothing'). It adds behavior the annotations cannot express: 422 with revert reason on failure, failed calls are free, cost is $0.01/call via x402 USDC or a card key, first 25 free, and repeats are billed again (consistent with idempotentHint=false). This is materially useful billing and failure semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the outcome, then inputs, then usage, then cost/error behavior — good ordering with an inline example. It is dense and the pricing/payment sentence is long, but nearly every clause carries decision-relevant information; only the 'Price $0.01/call via x402 USDC or a card key (/credits)' detail is slightly over-explained.
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?
There is no output schema, and the description compensates by naming the return units (gas units, gwei, CELO) and the error shape (422 + reason). For a 4-parameter read-only estimator with a single required field, nothing an agent needs in order to call it correctly — inputs, cost, failure mode, non-mutation guarantee — is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description does add a little beyond the schema by grouping the inputs and explaining that `from` matters only 'when the call depends on it', which qualifies the schema's terse 'default: an empty address'. Units ('value in CELO') duplicate the schema, so the gain is modest rather than substantial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Estimate the gas a transaction would use on Celo') plus the underlying RPC method (eth_estimateGas) and the exact outputs returned (gas units, gwei, CELO). It explicitly names the sibling it is not ('for the gas price alone use celo_gas'), so an agent can route between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit triggers ('Use before sending a transaction or to price a batch') and an explicit alternative ('for the gas price alone use celo_gas'). It also states the failure condition and its consequence ('A transaction that would revert is 422 with the reason, uncharged'), which is exactly the guidance an agent needs before committing to a call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
celo_gasCelo gas priceARead-onlyInspect
Current gas price on Celo (eth_gasPrice): gas price, base fee and suggested priority fee in gwei, plus what a plain CELO transfer (21,000 gas) costs right now. Takes no input. Use before sending a transaction or to decide whether to wait; for the fee a past transaction actually paid use celo_receipt. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Optional: comma-separated top-level result keys to keep, for a smaller answer (for example only=price,symbol); unknown keys are ignored and an empty match returns the full result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing billing ($0.01/call via x402 USDC or card key, first 25 free, failed calls free) and reiterating the no-side-effect guarantee; 'repeats are not free' is consistent with idempotentHint=false. The only flaw is the inaccurate 'Takes no input' claim, since the schema exposes an optional `only` filter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the returned values and the usage decision, then pricing. Dense but nearly every clause earns its place; the 'Takes no input' clause is the one piece of wasted, and incorrect, text.
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 no output schema, the description does the work of explaining return values (gas price, base fee, priority fee, transfer cost) and cost/authorization model, which is exactly what an agent needs for a zero-required-param read. It falls short only on the optional `only` parameter, which it denies exists.
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 would be 3, but the description affirmatively states 'Takes no input' while the schema defines an optional `only` key-filtering parameter. That statement actively misleads the agent about the tool's one parameter rather than merely omitting it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Current gas price on Celo (eth_gasPrice)') and enumerates the exact returned fields: gas price, base fee, suggested priority fee in gwei, plus the cost of a 21,000-gas CELO transfer. It clearly separates itself from celo_gas_history (historical) and celo_receipt (fee actually paid), so an agent can pick it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the use case ('before sending a transaction or to decide whether to wait') and the exclusion with a named alternative ('for the fee a past transaction actually paid use celo_receipt'). When-to-use and when-not-to-use are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
celo_gas_historyCelo gas history, gas priceARead-onlyInspect
Gas price history on Celo (eth_feeHistory): base fee in gwei for each of the last N blocks (5-100, default 20), how full each block was, and the 10th, 50th and 90th percentile priority fees, with the low, average and high base fee over the window. Use to judge whether fees are rising, pick a priority fee or time a transaction; for the current price alone use celo_gas. Example: blocks=20. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks, 5-100 (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses billing mechanics ($0.01/call via x402 USDC or card key, first 25 free, failed calls free), which explains the otherwise surprising idempotentHint=false, and clarifies that repeats are not free. It also confirms the operation is compute-only and changes nothing, reinforcing destructiveHint=false with concrete meaning, plus describes the return payload shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return contents, then usage routing, then billing, so the highest-value information comes first. It is dense and slightly crowded in one paragraph — the pricing/credits clauses could be trimmed — but nearly every clause carries decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully compensates by enumerating the returned fields and summary statistics. It also covers the cost model and the read-only guarantee, leaving nothing an agent needs in order to call this correctly or estimate its cost.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'blocks' parameter already carries the 5-100 range and default 20 in its description. The tool description largely restates that range and adds only a trivial invocation example (blocks=20), which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (gas price history on Celo via eth_feeHistory) and enumerates exactly what is returned: base fee in gwei per block, block fullness, 10th/50th/90th percentile priority fees, and low/average/high base fee over the window. It explicitly separates itself from the sibling celo_gas ('for the current price alone use celo_gas'), so an agent can disambiguate without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives three concrete decision contexts (judge whether fees are rising, pick a priority fee, time a transaction) and an explicit alternative with the condition that selects it (celo_gas for the current price alone). No when-to-use inference is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
celo_is_contractCelo is-contract checkARead-onlyInspect
Check whether a 0x address on Celo is a smart contract or a plain wallet: bytecode size, and whether it is an EIP-1167 minimal proxy and which implementation it points to. Use before sending funds or approving a spender; for a fuller risk verdict use check_counterparty. A malformed address is rejected with 400, uncharged. Example: address=0xcebA9300f2b948710d2653dD7B07f33A8B32118C. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: explains that a malformed address is rejected with 400 and uncharged, states pricing ($0.01/call via x402 USDC or card key, first 25 free, failed calls free), and reconciles the idempotentHint=false with the read-only nature ('each call is charged, so repeats are not free'). That billing-driven non-idempotency is exactly the kind of trait annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense, front-loaded paragraph: purpose first, then usage, then failure mode, then pricing. Every sentence carries information, though the pricing and billing detail is slightly heavy relative to the one-line core operation.
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 no output schema, the description correctly compensates by naming the return content (bytecode size, proxy flag, implementation address). The only gap is that it does not clarify how its proxy detection relates to the dedicated celo_proxy tool, leaving a small ambiguity for an agent choosing between them.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single address parameter, so the baseline is 3, but the description adds a valid example address and the validation behavior for malformed input, which meaningfully informs how to prepare the argument.
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?
A specific verb plus resource ('Check whether a 0x address on Celo is a smart contract or a plain wallet') with the returned signal spelled out: bytecode size, EIP-1167 minimal proxy status, and the implementation it points to. The Celo prefix in the name and the explicit scope make it distinguishable from the dozens of other chain-level is_contract 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?
Gives a concrete pre-condition ('Use before sending funds or approving a spender') and names the escalation path ('for a fuller risk verdict use check_counterparty'). What it doesn't address is the relationship to the sibling celo_proxy, which appears to overlap with the EIP-1167 proxy detection this tool also returns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
celo_logsCelo event logsARead-onlyInspect
Recent contract event logs on Celo (eth_getLogs): the events a contract emitted over the last N blocks (1-1,000, default 50), optionally filtered by topic0 (the 0x 32-byte event signature hash). Returns up to 100 logs with block, transaction hash and topics. Use to watch transfers or contract events; for one transaction's outcome use celo_receipt. Example: address=0xcebA9300f2b948710d2653dD7B07f33A8B32118C. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks to scan (1-1000, default 50) | |
| topic0 | No | Optional 0x event signature hash to filter by | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the pricing model ($0.01/call via x402 USDC or card key, first 25 free, failed calls free), the per-call charge implication for repeats (consistent with idempotentHint=false), and the 100-log result cap. The only redundancy is restating that it changes nothing, which readOnlyHint already covers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what it does, the range/default, and the result shape before pricing, so the important routing info comes first. Some content is duplicated across description and schema (block range, topic0 hash format) and across description and annotations (read-only nature).
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 no output schema, the description still specifies the return shape (up to 100 logs with block, transaction hash, topics), the scan window and default, and the cost model. Nothing an agent needs in order to decide and invoke is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the block range, default, and topic0 definition are already documented in the schema; the description largely restates them. The one addition is a concrete example address, which is marginal rather than explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('recent contract event logs on Celo') and maps it to the underlying RPC call (eth_getLogs), so an agent understands exactly what is fetched. It explicitly positions itself against the sibling celo_receipt for single-transaction outcomes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear when-to-use ('watch transfers or contract events') and names the alternative celo_receipt with the condition that selects it. It does not mention the closely overlapping celo_token_transfers sibling, which also returns transfer events, leaving one routing ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
celo_nft_balanceNFT balance, CeloARead-onlyInspect
How many NFTs of one ERC-721 collection a wallet holds on Celo (balanceOf), with the collection's name and symbol. Use to check a holder before a token-gated action or to see whether a wallet still holds a collection; for who holds one token id use celo_nft_owner. Both inputs are 0x addresses; a missing contract is 404, a contract that is not ERC-721 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet address | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing failure semantics (404 for a missing contract, 422 for a non-ERC-721 contract, both uncharged), pricing ($0.01/call via x402 USDC or card key, first 25 free), and that failed calls are free. It also reconciles the idempotentHint=false annotation by explaining that each call is billed, so repeats are not free even though nothing is mutated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core semantics come first, then alternative routing, then error and pricing terms, so it reads front-loaded with no wasted sentences. It is a dense single paragraph, though, and the pricing clause could be split for easier scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description says what comes back (balance plus collection name and symbol), what the error states mean, and what the call costs. For a two-parameter read-only tool, nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds that both inputs are 0x addresses and that the contract must be an ERC-721 collection, which gives meaning to the 422 error. It does not add format examples or address-validation rules beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the exact operation (balanceOf for an ERC-721 collection held by a wallet on Celo) plus the enrichment returned (collection name and symbol). It explicitly distinguishes itself from the sibling celo_nft_owner, so an agent can separate the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases (gate a holder before a token-gated action, re-check whether a wallet still holds a collection) and names the alternative tool (celo_nft_owner) with the condition that selects it (per-token-id ownership). When-to-use and when-to-use-something-else are both explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
celo_nft_metadataNFT metadata, CeloARead-onlyInspect
NFT metadata on Celo: the token URI of one ERC-721 token id (tokenURI) and the JSON it points to (name, description, image, attributes), read from data: URIs, https or ipfs:// (through ipfs.io). Strings over 1,000 characters, such as on-chain SVG images, are shortened. Use to show or check what an NFT is; for its owner use celo_nft_owner. A token that does not exist is 422, uncharged; unreachable metadata is reported in metadataError. Example: contract=0x3d79EdAaBC0EaB6F08ED885C05Fc0B014290D95A, tokenId=1. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | Token id, a whole number | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover readOnly/openWorld/destructive, and the description adds substantial context beyond them: supported URI schemes (data:, https, ipfs:// via ipfs.io), truncation of strings over 1,000 chars including on-chain SVGs, metadataError surfacing for unreachable metadata, and per-call billing/25-free tier. 'Each call is charged, so repeats are not free' is consistent with idempotentHint=false rather than 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?
Front-loaded with the core behavior and the sibling routing, and the pricing/error details are genuinely useful. It is dense and leans on long comma-joined clauses, but almost every sentence carries information an agent needs.
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 no output schema, the description still tells the agent what comes back (tokenURI and parsed JSON fields), how truncation affects large values, and how failures are signaled (422 uncharged, metadataError). Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented; the description adds an end-to-end example (contract=0x3d79..., tokenId=1) that demonstrates the expected contract format and clarifies that tokenId is a single whole number. Marginal but real value over 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?
States a specific resource and verb: reads the tokenURI of one ERC-721 token id plus the JSON it resolves to, enumerating the fields (name, description, image, attributes). It explicitly separates itself from the sibling celo_nft_owner, so the agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use to show or check what an NFT is; for its owner use celo_nft_owner' gives an explicit use case and names the alternative tool for the adjacent need. It also covers the negative path (nonexistent token = 422, uncharged) so the agent knows what to expect when the call is wrong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
celo_nft_ownerCelo NFT ownerARead-onlyInspect
Owner of an NFT on Celo: the wallet that holds one ERC-721 token id right now (ownerOf), plus the collection's name and symbol. Use to verify who holds an NFT before a trade, a mint gate or an airdrop; for how many a wallet holds use celo_nft_balance, for the token's metadata celo_nft_metadata. A missing contract is 404, a token that does not exist 422, both uncharged. Example: contract=0x3d79EdAaBC0EaB6F08ED885C05Fc0B014290D95A, tokenId=1. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | Token id, a whole number | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it names the 404 (missing contract) and 422 (nonexistent token) failure modes and states that failures are uncharged. It also explains the pricing model ($0.01/call, first 25 free, repeats charged) which is the real reason idempotentHint is false. The only gap is that it doesn't describe the response shape in detail, though it does name the returned fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the definition, then use cases, alternatives, error codes, example, and pricing in a logical order. It is dense but every sentence carries operational information; the pricing tail is slightly long for a single-call lookup tool but is genuinely relevant to repeat-call decisions.
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 no output schema, the description still names the returned values (owner, collection name, symbol) and covers error semantics, cost, and side-effect profile. An agent has everything needed to call it correctly and interpret the outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: the contract must be an ERC-721 collection (not any token contract), the tokenId identifies one specific token, and a concrete worked example (0x3d79…D95A, tokenId=1) shows the expected format. It does not address the schema's odd allowance of boolean tokenId, but otherwise it complements the schema well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and operation: the wallet that currently holds a given ERC-721 token id (ownerOf), returned alongside the collection name and symbol. It explicitly distinguishes itself from celo_nft_balance and celo_nft_metadata by name, so an agent can pick the right sibling without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use cases (verifying a holder before a trade, mint gate, airdrop) and routes the agent to the two alternative tools for the count and metadata questions. Nothing is left to inference about when this tool is the correct choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
celo_nonceCelo nonce, account nonceARead-onlyInspect
Read the transaction count (nonce) of a 0x address on Celo, both confirmed and including pending transactions. Use to build the next transaction or to tell whether an address has ever sent anything; for its balance use celo_balance. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and non-destructive behavior, but the description adds real value beyond them: the 400-and-uncharged rejection of malformed addresses, the pricing model ($0.01/call via x402 USDC or card key, first 25 free, failed calls free), and the note that repeats are not free, which explains the nonIdempotentHint. The only gap is it never describes the shape of the response (confirmed vs. pending counts), leaving that to inference.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and scope, then use cases, then error/cost caveats — a sensible ordering with no wasted sentences. The pricing and free-tier detail is dense but materially relevant since the tool is metered and non-idempotent in cost terms.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description covers purpose, alternatives, error handling, and billing. The one missing piece is what the response contains (whether confirmed and pending counts come back as separate fields), though the phrasing hints at both.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one parameter, so the schema carries the formal definition; the description still adds a concrete example address and states the validation rule for malformed input. Marginal but genuine value above the schema's terse '0x address' note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the transaction count (nonce) of a 0x address on Celo') and adds the scope nuance of confirmed vs. pending-inclusive counts. It explicitly names the sibling that handles the adjacent need ('for its balance use celo_balance'), so the agent can discriminate without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases (building the next transaction, determining whether an address has ever sent anything) and names the alternative tool (celo_balance) for the neighboring question. It also states failure conditions and cost, so the agent knows both when to call and what to expect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
celo_proxyProxy implementation, CeloARead-onlyInspect
Find the implementation behind a proxy contract on Celo: reads the EIP-1967 implementation, beacon and admin slots, EIP-1822 (UUPS), the older OpenZeppelin layout and EIP-1167 minimal-proxy bytecode, and names the kind found. Use before trusting or decoding a contract whose code can be swapped by its admin; for a fuller risk verdict use contract_risk. A malformed address is 400; an address without code is 404, both uncharged. Example: address=0xcebA9300f2b948710d2653dD7B07f33A8B32118C. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and non-destructive, and the description adds genuine value beyond them: HTTP 400/404 outcomes, that failed calls are uncharged, the per-call price with x402/card payment, the 25-call free tier, and the reason repeats are not free (which explains idempotentHint=false). This is exactly the disclosure annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and mechanism list, with usage and error semantics following efficiently. Minor waste: charging is mentioned twice ('both uncharged' for 404/400, then 'failed calls free'), and the payment details could be tightened without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and 'names the kind found' only gestures at the response contents (implementation address, proxy type) without stating its shape. Everything else an agent needs to call it correctly — eligibility, errors, cost — is present, so this is a small gap rather than a blocking one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'address' parameter, so baseline would be 3. The description goes further by giving a concrete valid address example and specifying the failure mode for a malformed address (400) versus an address with no code (404), which helps the agent supply a correct, well-formed 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?
States a specific verb and resource ('find the implementation behind a proxy contract on Celo') and enumerates the exact mechanisms read (EIP-1967 impl/beacon/admin, EIP-1822 UUPS, legacy OZ, EIP-1167 bytecode) plus the output ('names the kind found'). This is unambiguous against siblings like celo_storage or celo_call.
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 states when to use it ('before trusting or decoding a contract whose code can be swapped by its admin') and names the alternative for the adjacent need ('for a fuller risk verdict use contract_risk'). The condition that selects each path is spelled out rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
celo_receiptCelo transaction receiptARead-onlyInspect
Transaction receipt on Celo (eth_getTransactionReceipt): success or reverted, gas used, effective gas price, fee paid in CELO, number of event logs and any contract created. Use to confirm a payment or call went through; for sender, value and calldata use celo_tx. Input is a 0x-prefixed 64-hex hash; a pending or unknown hash returns 404, uncharged. Example: hash=0xc6a38b860427aa5bd7f65f8a879a7d369e77b3767200c68cde4002014ad50444. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/destructive/openWorld, but the description adds meaningful context beyond them: the 404-and-uncharged behavior for pending hashes, and the pricing/credit model that explains why idempotentHint=false ('each call is charged, so repeats are not free'). It does not describe response shape in detail, but the enumerated fields largely cover that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool does and what it returns, followed by the disambiguation and the failure mode. The pricing/credits sentence is longer than strictly needed and partially duplicates the idempotency note, keeping it just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by enumerating the receipt fields. Combined with the 404 behavior, pricing model, and the sibling pointer, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description is not obligated to explain the single hash parameter. It nonetheless adds a concrete worked example hash and reiterates the 0x-prefixed 64-hex format, which marginally improves invocation accuracy over 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?
States a specific verb+resource ('Transaction receipt on Celo') and enumerates exactly what the result contains — status, gas used, effective gas price, fee in CELO, log count, contract created. It explicitly contrasts with the sibling celo_tx, so the agent can pick between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case ('confirm a payment or call went through') and names the alternative tool plus the condition that selects it ('for sender, value and calldata use celo_tx'). Also states the failure path: pending/unknown hash returns 404 and is uncharged.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
celo_storageStorage slot read, CeloARead-onlyInspect
Read one raw storage slot of a contract on Celo (eth_getStorageAt): the 32-byte word, as a number and, when it holds one, as an address. Slot is a decimal index or a 0x 32-byte key (mapping and proxy slots). Use to inspect contract state that has no getter, owners or implementation pointers; for proxies use celo_proxy. A malformed address or slot is rejected with 400, uncharged. Example: address=0xcebA9300f2b948710d2653dD7B07f33A8B32118C. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | Slot: a decimal index (0, 1, 2…) or a 0x 32-byte key | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, open-world, non-idempotent, but the description adds substantial context beyond them: return shape (32-byte word as number and as address when applicable), 400 on malformed input and uncharged, per-call billing, and the non-idempotent charging semantics ('repeats are not free'). That is real value over the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core operation, followed by usage, error behavior, example and pricing. Well organized and dense; the pricing/payment sentence is somewhat lengthy but is decision-relevant for a paid API.
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?
No output schema, but the description explains the return format, error behavior, charging model and usage scope. An agent has everything needed to invoke correctly and predict the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning beyond schema by noting the slot forms map to mapping and proxy slots and providing a concrete address example, which helps an agent construct valid input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read), resource (one raw storage slot), chain (Celo) and the underlying RPC method (eth_getStorageAt). It clearly distinguishes itself from celo_call and celo_proxy by naming the exact scope of a single slot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it (contract state without a getter, owners, implementation pointers) and names the alternative for proxy cases (celo_proxy). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
celo_token_balanceCelo ERC-20 balanceARead-onlyInspect
ERC-20 token balance of a wallet on Celo (USDC, USDT, WETH or any token, via balanceOf): raw amount, decimals, symbol and the human-readable amount, live from the token contract. Use to check stablecoin or token holdings before a transfer or trade; for the native coin use celo_balance. Both inputs are 0x addresses (40 hex characters); no contract returns 404 and a non-ERC-20 contract 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC, USDT, WETH or DAI, or the 0x ERC-20 contract address | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations confirm it is readOnly, the description adds critical operational behavior such as the specific cost of execution, which is a major behavioral trait. It also notes that failures are free and repeats incur a cost, adding necessary economic 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 highly dense and efficient. It manages to communicate purpose, usage, operational constraints, cost, and sibling comparison in a single, well-structured paragraph without unnecessary 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?
This is an exceptionally complete definition. It covers what the tool returns (raw amount, decimals, human-readable amount), its operational cost, its failure modes, its limitations, and its relationship to other tools.
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?
Although the schema covers the parameters, the description adds crucial semantic detail by explicitly stating that both input parameters must be 0x addresses consisting of 40 hex characters, thereby clarifying the required format beyond the generic 'string' type.
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 defines the tool's function (ERC-20 token balance on Celo) and provides a direct differentiation from the sibling tool celo_balance (for native coin). This explicit comparison leaves no doubt about which tool to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It not only suggests when to use the tool (before a transfer or trade) but also provides highly specific operational guidelines, including error code behavior (404, 422), cost structure ($0.01/call), and free usage limits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
celo_token_infoCelo token info, ERC-20ARead-onlyInspect
Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Celo, live from the contract. Use to identify an unknown token address or to format raw amounts; for a holder's balance use celo_token_balance. Input is a ticker (USDC, WETH…) or the token's 0x contract address; an address that is not an ERC-20 contract returns 422, uncharged. Example: token=0xcebA9300f2b948710d2653dD7B07f33A8B32118C. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive and open-world, but the description adds material context they cannot: live contract read, a 422 plus no charge for a non-ERC-20 address, $0.01/call pricing with 25 free calls, and that repeats are billed (which explains idempotentHint=false). The only gap is the response shape/pagination, which is minor here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return fields, then usage, then input format, then cost. The pricing sentence is dense but carries decision-relevant information; nothing is pure 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 no output schema, the description compensates by naming the four returned fields. Combined with input formats, error behavior, and cost model, an agent has everything needed to call this correctly on the first try.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: the argument accepts a ticker alias as well as a 0x address, a concrete example address is shown, and the error behavior for a non-contract address is stated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Celo'), names the exact returned fields, and explicitly separates itself from the sibling celo_token_balance. An agent can route correctly without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases ('identify an unknown token address', 'format raw amounts') and names the alternative with the condition that selects it ('for a holder's balance use celo_token_balance'). It also flags the failure mode for a non-ERC-20 address, which is guidance an agent needs before choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
celo_token_transfersToken transfers, CeloARead-onlyInspect
List a wallet's recent transfers of one ERC-20 token (default USDC) on Celo, in and out, over the last N blocks (1-2,000, default 1,000): direction, counterparty, amount and transaction, newest first, up to 50. Use to confirm a payment arrived or see what was sent; for the current balance use celo_token_balance. Malformed addresses are rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Token: a ticker such as USDT or WETH, or the 0x ERC-20 contract (default: USDC on this network) | |
| blocks | No | How many recent blocks to scan (1-2000, default 1000; 2,000 blocks is about 33 minutes on Celo) | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=false and openWorldHint=true. The description adds real context beyond them: $0.01/call pricing, first 25 free, failed calls free, 400 on malformed addresses with no charge, and the explicit note that repeats are not free. That is genuinely useful, though 'reads or computes only and changes nothing' partly restates readOnlyHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause and the sibling routing follows immediately. The trailing pricing/credits sentence is long and dense; it is useful for cost-aware selection but takes up nearly half the text, keeping this just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still tells the agent what comes back (direction, counterparty, amount, transaction, newest first, up to 50) and what errors look like (400 on malformed address). Complete enough to call correctly; only the response shape's exact field types are unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description still adds meaning: default token is USDC on Celo, blocks range 1-2,000 with default 1,000, the 50-result cap, newest-first ordering, and a concrete example address. It does not explain the ticker-vs-contract form of `token` 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?
States a specific verb+resource (list a wallet's recent ERC-20 transfers on Celo) plus scope details: in and out, last N blocks, newest first, cap of 50. It explicitly names the sibling it is not (celo_token_balance) and the default token (USDC), so an agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use cases ('confirm a payment arrived or see what was sent') and routes the balance case to celo_token_balance by name. When-to-use and the primary alternative are both explicit rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
celo_txCelo transactionARead-onlyInspect
Look up a Celo transaction by hash: sender, recipient, value in CELO, nonce, gas limit, the 4-byte function selector and its block. Use to see what was sent or whether it exists; for success or failure and fees paid use celo_receipt, for emitted events celo_logs. Input is a 0x-prefixed 64-hex hash; an unknown hash returns 404, uncharged. Example: hash=0xc6a38b860427aa5bd7f65f8a879a7d369e77b3767200c68cde4002014ad50444. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true and destructive=false, and the description is consistent with them ('Reads or computes only and changes nothing'). Beyond that it discloses non-obvious behavior: an unknown hash returns 404 and is uncharged, failed calls are free, and each successful call costs $0.01 with the first 25 free — which also explains why idempotentHint is false in billing terms.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, alternatives, input, error behavior, and pricing arrive in a sensible order and every sentence carries information. Slight redundancy between 'failed calls free' and 'each call is charged, so repeats are not free', and the pricing clause crowds the paragraph.
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?
No output schema exists, and the description compensates by naming the returned fields; it also covers error behavior, input format, and cost. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the format is already documented; the description still adds value by restating the 0x-prefixed 64-hex requirement, giving a concrete example hash, and specifying the 404 outcome for an unknown hash — the latter is meaning the schema cannot express.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Look up a Celo transaction by hash') and enumerates the fields returned (sender, recipient, value in CELO, nonce, gas limit, function selector, block), which distinguishes it from celo_receipt and celo_logs without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'Use to see what was sent or whether it exists; for success or failure and fees paid use celo_receipt, for emitted events celo_logs.' Both the when-to-use and the named alternatives are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contract_abiContract ABI, verified contract: ABI and sourceARead-onlyInspect
The verified ABI of a smart contract on Ethereum, Base, Arbitrum, Optimism or Polygon from Sourcify's open verification repository: contract name, compiler, match quality, every function and event signature, the full ABI, and for proxies the implementation contract with its ABI. Optional source=true adds the main source file (up to 20,000 characters). Unverified contracts are an uncharged 404. Use before calling or decoding a contract. Example: address=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | ethereum (default), base, arbitrum, optimism or polygon | |
| source | No | true to include the main source file | |
| address | Yes | Contract 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say read-only, non-destructive, open-world and non-idempotent; the description adds the substantive traits behind that: unverified contracts yield an uncharged 404, source is truncated at 20,000 characters, cost is $0.01 per call via x402 USDC or a card key, first 25 free, and repeats are charged again (consistent with idempotentHint=false). This is exactly the context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and supported chains are front-loaded, followed by return payload, then cost and semantics. The single dense paragraph is efficient with no filler, though the pricing/auth clause is packed tightly enough that skimming risks missing the charging caveat.
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 no output schema, the description fully enumerates the return payload (name, compiler, match quality, signatures, ABI, proxy implementation), covers the failure mode (404 on unverified), and discloses auth and pricing. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description goes beyond it by stating the source parameter's 20,000-character truncation limit and by listing the supported chains in prose that the chain enum-less schema only partially conveys. A concrete example address is also supplied.
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 names a specific resource (verified contract ABI), its source (Sourcify), and its full scope (Ethereum, Base, Arbitrum, Optimism, Polygon), then enumerates the returned fields. An agent can distinguish it from eth_call or eth_proxy without opening the schema, since the return payload is spelled out field by field.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use before calling or decoding a contract" gives an explicit trigger condition and implicitly routes work away from eth_call/evm_decode_calldata. It does not name a sibling alternative or state any when-not condition, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dex_new_poolsNew pools, new token pairs: Uniswap and AerodromeARead-onlyInspect
Newest liquidity pools on Uniswap v3, Uniswap v2 and (on Base) Aerodrome, read live from the factories' PoolCreated and PairCreated events on Base, Ethereum, Arbitrum, Optimism or Polygon: pool address, both tokens with symbol and decimals, fee tier or stable flag, block, transaction and approximate age, newest first. Use to spot new token listings, watch pool launches or feed a new-pair screener; check token_report before trading. Example: chain=base. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| dex | No | all (default), uniswap-v3, uniswap-v2 or aerodrome (Base only) | |
| chain | No | base (default), ethereum, arbitrum, optimism or polygon | |
| limit | No | Most pools to return, 1 to 30 (default 20) | |
| blocks | No | How many recent blocks to scan, 100 to 20000 (default 3000: about 100 minutes on Base, 10 hours on Ethereum) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, non-idempotency, and non-destructiveness, and the description reinforces those by stating it reads or computes only and changes nothing. It adds important context beyond annotations: live factory events, newest-first ordering, per-call pricing, free failed calls, and a free tier, all consistent with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and scope are front-loaded in a dense but useful first sentence, followed by usage, example, pricing, and safety notes. There is minor redundancy around charging and repeated calls, but otherwise every sentence contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with no output schema, the description is complete: it lists returned fields, supported chains and DEXes, ordering, usage context, cost model, and safety profile. An agent has everything needed to decide when and how 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?
Schema description coverage is 100%, so the schema already documents dex, chain, limit, and blocks thoroughly. The description adds only an example (chain=base) and confirms supported chains, which is marginal value beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it returns the newest liquidity pools on Uniswap v3/v2 and Aerodrome, read from factory events across five chains. It names the event sources, returned fields, and ordering, making the tool clearly distinguishable from generic chain or pool-lookup 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?
It gives clear use cases: spotting new token listings, watching pool launches, and feeding a new-pair screener, plus a caution to check token_report before trading. It does not explicitly state when not to use this tool or name a direct alternative, so it falls short of the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensENS name resolver, reverse ENS: ENS name to address and address to ENS nameARead-onlyInspect
Resolve an Ethereum Name Service name such as vitalik.eth to its wallet address and avatar, or look up the primary ENS name of an address (reverse resolution). Read live from Ethereum mainnet. Use to turn a human-readable name into a payable address, or to show a readable name for a counterparty address. Example: name=vitalik.eth. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | An ENS name such as vitalik.eth, or an address (0x...) for reverse lookup |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the description does not need to re-prove safety, yet it adds real value beyond them: live mainnet reads, a price of $0.002/call via x402 USDC or card key, first 25 free, and failed calls free. The one behavioral gap is what happens on an unresolved or malformed name, which is not stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the two resolution directions, then usage, then pricing and safety. Every sentence carries information, though the pricing and free-tier clauses add bulk that could be tightened without losing meaning.
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 no output schema, the description correctly names what comes back (wallet address plus avatar, or the primary ENS name), which is the key completeness requirement for a single-parameter read tool. Return-shape details such as null/not-found handling are the only missing piece.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one required parameter with 100% schema coverage, and the schema already explains that 'name' accepts either an ENS name or a 0x address for reverse lookup. The description's 'Example: name=vitalik.eth' and the address-to-name sentence restate rather than extend that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (resolve/look up) and resource (ENS name), covering both forward resolution to address+avatar and reverse resolution to primary name, and names the chain (Ethereum mainnet). It is clearly distinguishable from the sibling address/hash utilities like evm_checksum and eth_balance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use guidance twice: 'turn a human-readable name into a payable address' and 'show a readable name for a counterparty address.' It does not name an alternative tool or state when not to use it, but the intent is unambiguous from the description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_allowanceToken allowance, Ethereum ERC-20ARead-onlyInspect
ERC-20 token allowance on Ethereum: how much a spender may move from an owner's wallet (allowance), raw and in token units, and whether the approval is unlimited. Use to check an approval before a swap or to audit risky open approvals; for the owner's balance use eth_token_balance. Token is a ticker (USDC, USDT, WETH…) or a 0x contract; a missing contract is 404 and a non-ERC-20 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | 0x wallet that gave the approval | |
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address | |
| spender | Yes | 0x contract or wallet allowed to spend (the example is Uniswap Permit2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=false, so the safety profile is covered. The description still adds real value beyond the annotations: the pricing model ($0.01/call via x402 or card key, first 25 free), the fact that failed calls are free, and the 404/422 error semantics. However, it restates the read-only nature already in annotations, so it is additive rather than essential.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and scoping, then use cases, then error/pricing terms; every clause carries information and the unconventional pricing details earn their place for a paid x402 endpoint. It is dense as a single paragraph and repeats the read-only claim already in annotations, costing a point.
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?
There is no output schema, so the description steps in to explain return values (raw and token-unit allowance, plus whether the approval is unlimited) — exactly the information an agent would otherwise lack. Combined with error behavior, auth/payment requirements, and sibling routing, nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description nonetheless adds meaning beyond the schema: it confirms token accepts a ticker or 0x contract and explains the failure modes (missing contract → 404, non-ERC-20 → 422, both uncharged), and it contextualizes spender via the Permit2 example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+chain: 'ERC-20 token allowance on Ethereum: how much a spender may move from an owner's wallet', and it explicitly distinguishes itself from upstream sibling eth_token_balance (balance vs. approval). An agent can pick it over the many other *_allowance siblings by chain name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases ('check an approval before a swap', 'audit risky open approvals') and names the alternative plus the condition that selects it ('for the owner's balance use eth_token_balance'). Routing is explicit rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_balanceEthereum balance, native coinARead-onlyInspect
Native ETH balance (eth_getBalance) of any 0x wallet address on Ethereum at the latest block, in wei and in ETH. Use to check whether a wallet can pay gas or a transfer; for ERC-20 tokens use eth_token_balance, for all holdings at once use wallet_portfolio. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet or contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true and idempotentHint=false. The description reinforces the safety profile ('reads or computes only and changes nothing') and adds genuinely new context: pricing at $0.002/call, payment rails (x402 USDC or card key), first 25 free, and that repeats are charged. However, it adds no detail about the response shape beyond units, so it is useful but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then usage routing, error behavior, example, and cost. Every sentence carries information, though the pricing/payment sentence is dense and sits awkwardly in a balance-lookup description.
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?
There is no output schema, but the description specifies return units (wei and ETH) and the block context (latest). Combined with the error semantics and single fully-documented parameter, nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes further by restating the 0x format, supplying a concrete example address, and describing validation behavior (malformed input rejected with 400 at no cost). That meaningfully reduces the chance of a malformed call beyond what the schema alone conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource -- native ETH balance (eth_getBalance) for a 0x address on Ethereum at latest block, returned in wei and ETH. It also explicitly names the sibling it is not (eth_token_balance for ERC-20, wallet_portfolio for all holdings), so an agent can route correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case (checking gas/transfer affordability) and names two alternatives with the condition that selects each. It also states the failure mode (malformed address returns 400, uncharged), which is exactly the kind of when-not guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_blockEthereum block numberARead-onlyInspect
Latest block number and block details on Ethereum, or any block by decimal number: hash, timestamp, transaction count, gas used and limit, base fee in gwei and producer. Use for timestamps and confirmation counts; for current fees use eth_gas. A block that does not exist yet returns 404, uncharged. Example: number=latest. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| number | No | Block number, or 'latest' (default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-idempotent/non-destructive, and the description adds genuinely new behavior: 404 on future blocks with no charge, per-call pricing ($0.002 via x402 USDC or card key), 25 free calls, failed calls free, and the warning that repeats are not free (reinforcing idempotentHint=false). The only redundancy is restating that it 'changes nothing', which mildly duplicates readOnlyHint but does not contradict 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?
Front-loaded with the resource and return fields, then usage routing, then edge cases and pricing — a logical order with no filler sentences. The pricing sentence is long and could be trimmed, but it carries decision-relevant cost information rather than 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?
There is no output schema, so the description carries the burden of describing returns and does so field-by-field (hash, timestamp, tx count, gas, base fee, producer). Combined with error behavior, cost model, and default handling for a single optional parameter, nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the sole parameter is already documented as 'Block number, or latest (default)', so the baseline is 3. The description adds real meaning beyond that by specifying decimal (not hex) numbering and giving the example number=latest, which prevents the common hex-block-tag mistake.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Latest block number and block details on Ethereum') and enumerates exactly what comes back: hash, timestamp, transaction count, gas used/limit, base fee in gwei, producer. It also distinguishes itself from the sibling eth_gas by naming the fee use case, so an agent can separate eth_block from eth_gas and from the many other eth_* tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says what it is for ('timestamps and confirmation counts') and routes the alternative ('for current fees use eth_gas'), which is the most likely confusion in this large sibling set. It adds an edge-case rule ('A block that does not exist yet returns 404, uncharged') and a concrete invocation example, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_callEth call, Ethereum contract callARead-onlyInspect
Read-only contract call on Ethereum (eth_call): send ABI-encoded calldata to a contract at the latest block and get the raw return data, without a transaction or gas. Use to read any view function that has no dedicated tool (the example reads USDC totalSupply, selector 0x18160ddd); decode the result with the function's ABI. Calldata up to 8 KB; a call that reverts is 422 with the reason, uncharged. Example: to=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, data=0x18160ddd. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x contract address to call | |
| data | Yes | 0x ABI-encoded calldata: 4-byte selector plus arguments | |
| from | No | Optional 0x sender address for calls that check msg.sender |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial context beyond annotations: no transaction or gas, 8 KB calldata limit, 422 on revert with the reason and no charge, $0.01 per call, first 25 free, and failed calls free. It also explains that reads change nothing but repeat calls are not free, which aligns with idempotentHint=false rather than 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?
The description is front-loaded with purpose and usage, then pricing and behavioral constraints. It is dense but mostly earns its space; the USDC selector is given twice (once parenthetically and again in the example), which is a minor 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?
With no output schema, the description explains that the return value is raw return data to be decoded with the function ABI. It also covers revert behavior, charging, calldata limits, and lack of transaction/gas, which is complete for this read-only call 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?
Schema coverage is already 100%, so the schema documents to, data, and from. The description adds useful meaning with a concrete to/data example, the ABI selector format, and the instruction to decode results using the function's ABI, though it does not elaborate on the optional from parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: a read-only contract call on Ethereum, with the exact eth_call semantics of sending ABI-encoded calldata and receiving raw return data. It distinguishes itself from dedicated tools by saying to use it for view functions that have no dedicated tool, and the chain name separates it from sibling *_call 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?
It clearly says when to use this tool: for any view function without a dedicated tool, with a concrete USDC totalSupply example. It does not enumerate the sibling alternatives such as eth_token_balance or eth_balance, but the 'no dedicated tool' condition gives an agent enough routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_estimate_gasEstimate gas, EthereumARead-onlyInspect
Estimate the gas a transaction would use on Ethereum (eth_estimateGas) and what it would cost at the current gas price, in gas units, gwei and ETH. Give to, plus value in ETH and calldata for a contract call, and the sender when the call depends on it. Use before sending a transaction or to price a batch; for the gas price alone use eth_gas. A transaction that would revert is 422 with the reason, uncharged. Example: to=0x000000000000000000000000000000000000dEaD. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x recipient or contract address | |
| data | No | Optional 0x calldata for a contract call | |
| from | No | 0x sender address (default: an empty address) | |
| value | No | Amount of ETH to send, in ETH (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, openWorld and non-idempotent; the description adds genuinely new behavior: revert yields a 422 with the reason and is uncharged, each successful call is billed at $0.01 (first 25 free), and repeats are not free. The billing-per-call note is consistent with idempotentHint=false and 'changes nothing' is consistent with readOnlyHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and usage are front-loaded, the example is compact, and every sentence carries information. The pricing/payment sentence is long and operationally dense, but it is relevant because calls are charged, so nothing is truly wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still tells the agent what comes back (gas units, gwei and ETH) and how failures surface (422 with reason, uncharged). For a 4-parameter read-only estimator that is everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds conditional semantics the schema does not: value is expressed in ETH and from is only needed 'when the call depends on it'. It also frames data as calldata for a contract call, reinforcing the schema wording.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Estimate the gas a transaction would use on Ethereum') and names the RPC method. It also implicitly distinguishes itself from the parallel arb_/base_/op_/polygon_ variants by naming Ethereum and explicitly routes gas-price-only queries to eth_gas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('before sending a transaction or to price a batch') and an explicit alternative with its selection condition ('for the gas price alone use eth_gas'). No inference is required to choose between the two.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_gasEthereum gas priceARead-onlyInspect
Current gas price on Ethereum (eth_gasPrice): gas price, base fee and suggested priority fee in gwei, plus what a plain ETH transfer (21,000 gas) costs right now. Takes no input. Use before sending a transaction or to decide whether to wait; for the fee a past transaction actually paid use eth_receipt. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Optional: comma-separated top-level result keys to keep, for a smaller answer (for example only=price,symbol); unknown keys are ignored and an empty match returns the full result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and idempotentHint=false; the description adds genuinely non-obvious context the annotations cannot: per-call pricing ($0.002 via x402 USDC or card key), the first 25 calls free, failed calls free, and why repeats are not free. That last point explains the idempotentHint=false flag rather than merely restating it. It stops short of describing response shape or latency, which keeps it at 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and return values, then usage, then commercial terms; nothing is truly wasted since the billing note affects repeat-call behavior. The second half is a dense run-on packing ingestion method, free tier, failure policy and refund semantics into one clausal chain, which costs some scanability.
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?
No output schema exists, so the description carries the return burden itself and does so fully (gas price, base fee, priority fee, transfer cost, in gwei). For a zero-argument, read-only oracle call the definition supplies everything needed to invoke and interpret 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?
The description says 'Takes no input,' but the schema defines an optional `only` parameter for trimming top-level result keys; that phrasing is mildly misleading and the description never explains the filtering behavior. Schema description coverage is 100%, so the agent can still recover the meaning from the schema, holding this at the baseline 3 rather than lower.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Current gas price on Ethereum'), lists the exact values returned (gas price, base fee, suggested priority fee in gwei, cost of a 21,000-gas transfer), and differentiates itself from eth_receipt, the sibling for historical fees. An agent can identify this among the ~200 network-prefixed siblings without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use ('before sending a transaction or to decide whether to wait') and names the alternative plus its selecting condition ('for the fee a past transaction actually paid use eth_receipt'). This is exactly the when/when-not/alternative structure the rubric reserves for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_gas_historyEthereum gas history, gas priceARead-onlyInspect
Gas price history on Ethereum (eth_feeHistory): base fee in gwei for each of the last N blocks (5-100, default 20), how full each block was, and the 10th, 50th and 90th percentile priority fees, with the low, average and high base fee over the window. Use to judge whether fees are rising, pick a priority fee or time a transaction; for the current price alone use eth_gas. Example: blocks=20. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks, 5-100 (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses the cost model ($0.01/call, first 25 free, failed calls free) and explicitly notes 'each call is charged, so repeats are not free,' which explains the non-obvious idempotentHint=false. It also restates that the call 'reads or computes only and changes nothing,' reinforcing the destructiveHint=false profile with plain-language confirmation.
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 main capability and its outputs are front-loaded, followed by usage guidance, an example, then pricing. It is dense but almost every clause carries information; the pricing/payment-key sentence is the longest and could be tightened slightly without losing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description enumerates the returned fields (base fee, fullness, percentile priority fees, window summary), so an agent knows what comes back. For a single-optional-parameter read tool with full annotation coverage, nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents blocks as 'How many recent blocks, 5-100 (default 20)'; the description repeats the same range and default and adds an example (blocks=20). It is consistent but contributes essentially no meaning beyond the structured field.
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 names a specific verb and resource ('Gas price history on Ethereum') and enumerates the exact outputs: base fee per block, block fullness, 10th/50th/90th percentile priority fees, and low/average/high base fee over the window. It also distinguishes itself from the closest sibling by stating 'for the current price alone use eth_gas.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives three concrete use cases ('judge whether fees are rising, pick a priority fee or time a transaction') and an explicit exclusion routing to eth_gas for the current price. An agent does not need to infer when to pick this tool over its sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_is_contractEthereum is-contract checkARead-onlyInspect
Check whether a 0x address on Ethereum is a smart contract or a plain wallet: bytecode size, and whether it is an EIP-1167 minimal proxy and which implementation it points to. Use before sending funds or approving a spender; for a fuller risk verdict use check_counterparty. A malformed address is rejected with 400, uncharged. Example: address=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/destructive/openWorld annotations: it discloses that malformed addresses are rejected with 400 and uncharged, that pricing is $0.01/call with 25 free and failed calls free, and that repeated calls are billed again. That last point usefully explains why idempotentHint is false, and the 'reads or computes only and changes nothing' clause reinforces the safety profile rather than 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?
The purpose and the returned fields are front-loaded, and the alternative routing and pricing follow in a logical order. The pricing/billing sentence is dense and slightly long, but each clause carries operational information an agent needs before spending money.
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?
There is no output schema, yet the description enumerates the response contents (bytecode size, proxy status, implementation address), so an agent knows what it will receive. Combined with error handling, cost, and safety notes, nothing material is missing for a one-parameter read 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?
Schema coverage is 100% for a single required 'address' parameter, so the baseline would be 3. The description earns an extra point by supplying a concrete example address and by stating the validation behavior (malformed address yields 400), which the schema's bare '0x address' field does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — check whether a 0x address on Ethereum is a smart contract or a plain wallet — and enumerates exactly what is returned (bytecode size, EIP-1167 minimal-proxy status, implementation target). The 'on Ethereum' scoping plus the explicit contrast with check_counterparty lets an agent distinguish it from the many sibling *_is_contract tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete decision context ('Use before sending funds or approving a spender') and names the alternative for the adjacent need ('for a fuller risk verdict use check_counterparty'). That is explicit when-to-use plus explicit alternative routing, which is the top of this dimension.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_logsEthereum event logsARead-onlyInspect
Recent contract event logs on Ethereum (eth_getLogs): the events a contract emitted over the last N blocks (1-1,000, default 50), optionally filtered by topic0 (the 0x 32-byte event signature hash). Returns up to 100 logs with block, transaction hash and topics. Use to watch transfers or contract events; for one transaction's outcome use eth_receipt. Example: address=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks to scan (1-1000, default 50) | |
| topic0 | No | Optional 0x event signature hash to filter by | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/non-destructive/open-world, so the description correctly spends its words elsewhere: a hard cap of 100 returned logs (truncation behavior), a per-call price with the first 25 free and failed calls free, and the fact that repeats are not free, which explains idempotentHint=false in cost terms. The sentence 'Reads or computes only and changes nothing' merely restates the annotations, but the truncation and billing details are genuine additions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core scope and the sibling routing are front-loaded in the first two clauses, and the example address is cheap and useful. The closing pricing sentence is long and partly boilerplate across the tool family, though the 'failed calls free' and 'repeats are not free' details do earn their 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?
With no output schema, the description carries the burden of describing returns and does so ('up to 100 logs with block, transaction hash and topics'), plus limits, pricing and an example. What is missing is ordering/recency semantics and whether the 100-log cap silently truncates a busy contract, which matters for an agent scanning a wide block range.
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 all three parameters are already documented, and the description mostly repeats the block range and default verbatim. It adds modest value by specifying that topic0 is a 32-byte signature hash and by supplying a concrete example address, but it gives no guidance on topic0 formatting variants or on how blocks interacts with the 100-log cap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Recent contract event logs on Ethereum (eth_getLogs)'), names the exact parameters that scope it (blocks, topic0), and gives the return shape. The clause 'for one transaction's outcome use eth_receipt' separates it from the nearest sibling without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use ('watch transfers or contract events') plus one named alternative with the condition that selects it (eth_receipt for a single transaction's outcome). It stops short of a full routing story — eth_token_transfers is the more natural sibling for watching token transfers and is never mentioned, so the transfer advice is slightly underspecified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_nft_balanceNFT balance, EthereumARead-onlyInspect
How many NFTs of one ERC-721 collection a wallet holds on Ethereum (balanceOf), with the collection's name and symbol. Use to check a holder before a token-gated action or to see whether a wallet still holds a collection; for who holds one token id use eth_nft_owner. Both inputs are 0x addresses; a missing contract is 404, a contract that is not ERC-721 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet address | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description discloses error behavior (404 for missing contract, 422 for non-ERC-721), that failed calls are uncharged, and pricing ($0.01/call, first 25 free). It also clarifies the tool only reads/computes and changes nothing, while noting repeats are charged.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and usage, then includes errors and pricing in a compact flow. It is somewhat dense with operational details, but each sentence largely 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?
For a two-parameter read-only tool with no output schema, the description covers purpose, return content (balance plus collection name and symbol), error cases, and charging behavior. An agent has enough information to call it correctly and interpret outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already documents both inputs as 0x wallet and 0x ERC-721 contract addresses. The description reinforces that both inputs are 0x addresses but adds little semantic detail beyond the schema, which is the expected baseline when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: how many NFTs of one ERC-721 collection a wallet holds on Ethereum (balanceOf), plus the collection name and symbol. It explicitly distinguishes itself from the sibling eth_nft_owner, which covers who holds one token id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete when-to-use cases: checking a holder before a token-gated action or seeing whether a wallet still holds a collection. It also names the alternative eth_nft_owner and the condition for choosing it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_nft_metadataNFT metadata, EthereumARead-onlyInspect
NFT metadata on Ethereum: the token URI of one ERC-721 token id (tokenURI) and the JSON it points to (name, description, image, attributes), read from data: URIs, https or ipfs:// (through ipfs.io). Strings over 1,000 characters, such as on-chain SVG images, are shortened. Use to show or check what an NFT is; for its owner use eth_nft_owner. A token that does not exist is 422, uncharged; unreachable metadata is reported in metadataError. Example: contract=0xC36442b4a4522E871399CD717aBDD847Ab11FE88, tokenId=1. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | Token id, a whole number | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, destructiveHint false, openWorldHint), but the description adds real operational detail beyond them: strings over 1,000 characters such as on-chain SVGs are truncated, a nonexistent token is 422 and uncharged, unreachable metadata surfaces as metadataError, and each call is billed so repeats are not free — which concretely explains idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and return shape are front-loaded, and nearly every sentence contributes a fact. It runs long with pricing, repeat-charge, and free-tier detail at the tail, which is relevant but could be trimmed for readers who only need invocation 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?
With no output schema, the description fully carries the burden: it describes the resolved field set, the truncation of large values, the two distinct failure modes (422 nonexistent vs. metadataError unreachable), and the cost model. An agent needs nothing else to call it correctly or interpret results.
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 defines both parameters; the description nonetheless adds a concrete example pair (0xC36442b4a4522E871399CD717aBDD847Ab11FE88, tokenId=1) and reinforces that the contract is an ERC-721 collection address whose id is being queried. Useful, but modest value over an already complete 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 names the specific resource (the tokenURI of one ERC-721 token id and the JSON it resolves to) and enumerates the fields returned (name, description, image, attributes). It is unambiguously distinguishable from eth_nft_owner, which it names explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use to show or check what an NFT is; for its owner use eth_nft_owner" states both the intended use and the alternative tool that covers the adjacent need. Supported URI schemes (data:, https, ipfs:// via ipfs.io) further bound when this tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_nft_ownerEthereum NFT ownerARead-onlyInspect
Owner of an NFT on Ethereum: the wallet that holds one ERC-721 token id right now (ownerOf), plus the collection's name and symbol. Use to verify who holds an NFT before a trade, a mint gate or an airdrop; for how many a wallet holds use eth_nft_balance, for the token's metadata eth_nft_metadata. A missing contract is 404, a token that does not exist 422, both uncharged. Example: contract=0xC36442b4a4522E871399CD717aBDD847Ab11FE88, tokenId=1. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | Token id, a whole number | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/destructive/openWorld/idempotent, yet the description still adds materially: 404 for missing contract, 422 for nonexistent token, both uncharged, plus the billing model ($0.01/call, first 25 free, failed calls free). The note that repeats are not free is consistent with idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core scope and the alternative routing are front-loaded in the first two sentences, and the error/price details are useful rather than filler. It runs slightly long with the pricing and 'changes nothing' clauses, but each sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still explains the return shape (owner wallet plus collection name and symbol), failure codes, and cost model. An agent has everything needed to invoke this correctly and interpret outcomes.
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 both parameters are already documented (contract as 0x ERC-721 address, tokenId as a whole number), setting the baseline at 3. The worked example with a real contract address adds mild illustrative value but no 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?
States a specific verb and resource ('Owner of an NFT on Ethereum... the wallet that holds one ERC-721 token id right now (ownerOf)') and explicitly contrasts with siblings eth_nft_balance and eth_nft_metadata. An agent can distinguish this from the two nearest alternatives without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names concrete use cases (verify holder before a trade, mint gate, airdrop) and routes to alternatives with explicit conditions: 'for how many a wallet holds use eth_nft_balance, for the token's metadata eth_nft_metadata.' Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_nonceEthereum nonce, account nonceARead-onlyInspect
Read the transaction count (nonce) of a 0x address on Ethereum, both confirmed and including pending transactions. Use to build the next transaction or to tell whether an address has ever sent anything; for its balance use eth_balance. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld and non-idempotent, but the description adds context those don't: malformed addresses are rejected with 400 and uncharged, failed calls are free, each successful call costs $0.01 with 25 free, so repeats are not free. That pricing/repeat-charge note usefully reinforces idempotentHint=false. It stops short of describing the response shape or rate limits, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and scope are front-loaded, followed by usage, sibling routing, error behavior and pricing. It is dense but nearly every clause carries information; the pricing tail is the least essential but still affects call decisions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the definition covers purpose, usage, alternatives, error behavior and cost. It implies but never explicitly states that the result reports confirmed and pending counts separately, which is the one remaining ambiguity an agent might hit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is required, so the baseline is 3. The description adds a concrete example address and states the rejection behavior for malformed 0x input, giving slightly more than the schema's bare "0x address".
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ("Read the transaction count (nonce) of a 0x address on Ethereum") and states scope (confirmed plus pending). It names the confusing sibling eth_balance explicitly, so an agent can separate nonce from balance without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives two concrete use cases (building the next transaction, checking whether an address has ever sent anything) and routes the balance question to eth_balance. Both when-to-use and the alternative are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_proxyProxy implementation, EthereumARead-onlyInspect
Find the implementation behind a proxy contract on Ethereum: reads the EIP-1967 implementation, beacon and admin slots, EIP-1822 (UUPS), the older OpenZeppelin layout and EIP-1167 minimal-proxy bytecode, and names the kind found. Use before trusting or decoding a contract whose code can be swapped by its admin; for a fuller risk verdict use contract_risk. A malformed address is 400; an address without code is 404, both uncharged. Example: address=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: the 400/404 failure semantics, that failures are uncharged, pricing ($0.01/call, first 25 free), and that repeat calls are billed — which directly explains the non-obvious idempotentHint=false. The 'reads or computes only and changes nothing' line corroborates readOnlyHint/destructiveHint rather than contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the slot standards, then usage, errors, example, and pricing in a sensible order. The billing point is stated twice ('failed calls free' then 'each call is charged, so repeats are not free'), a minor redundancy in an otherwise dense block.
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 no output schema, the description does the work of describing the return ('names the kind found') and lists the kinds it can detect, which is the key output shape. It omits the non-error, non-proxy case (what is returned when no proxy pattern is found), leaving one meaningful gap for a resolution 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?
Schema coverage is 100% and the single parameter is already documented as '0x contract address', so the schema carries most of the load. The description still adds value with a concrete checksummed example and by tying malformed-address input to a specific 400 outcome.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Find the implementation behind a proxy contract on Ethereum') and enumerates exactly which storage slots and bytecode patterns it inspects, so the agent knows the resolution depth. The 'on Ethereum' scope plus the named sibling contract_risk distinguish it from the arb_/base_/op_/polygon_proxy family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear trigger ('Use before trusting or decoding a contract whose code can be swapped by its admin') and routes to an alternative for a different need ('for a fuller risk verdict use contract_risk'). No explicit when-not-to-use statement, which keeps it just below the top mark.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_receiptEthereum transaction receiptARead-onlyInspect
Transaction receipt on Ethereum (eth_getTransactionReceipt): success or reverted, gas used, effective gas price, fee paid in ETH, number of event logs and any contract created. Use to confirm a payment or call went through; for sender, value and calldata use eth_tx. Input is a 0x-prefixed 64-hex hash; a pending or unknown hash returns 404, uncharged. Example: hash=0x9531467e03a57bbb5cd080439ac3b10c0cefed147282eb2ff709b02c897afcbf. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds considerable context beyond annotations: 404 on pending/unknown hashes with no charge, failed calls free, and per-call pricing via x402/credits. This is consistent with readOnlyHint=true and idempotentHint=false ('each call is charged, so repeats are not free'). It does not disclose rate limits or response shape beyond field names, so it falls just short of the top mark.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose and return contents, then the routing hint, then the input spec, then pricing. Dense but mostly earning its place; the pricing/credits sentence is the longest and slightly heavy for a tool description, though it is the only place that info appears.
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?
No output schema exists, yet the description enumerates the meaningful return fields (status, gas used, effective gas price, fee in ETH, log count, created contract). Combined with error behavior, pricing and input format, an agent has everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns extra credit by restating the 0x-prefixed 64-hex format, supplying a concrete example hash, and defining what a pending/unknown hash does. It goes beyond the schema's one-line parameter doc without adding validation details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Transaction receipt on Ethereum (eth_getTransactionReceipt)') and enumerates the returned fields, then explicitly contrasts with the sibling eth_tx for sender/value/calldata. An agent can distinguish it from arb_receipt/base_receipt etc. only by chain naming, but within the eth_ family it 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?
Gives an explicit use case ('confirm a payment or call went through') and names the alternative tool with the condition that selects it ('for sender, value and calldata use eth_tx'). Also states the failure mode for pending/unknown hashes, so nothing about when-to-use is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_storageStorage slot read, EthereumARead-onlyInspect
Read one raw storage slot of a contract on Ethereum (eth_getStorageAt): the 32-byte word, as a number and, when it holds one, as an address. Slot is a decimal index or a 0x 32-byte key (mapping and proxy slots). Use to inspect contract state that has no getter, owners or implementation pointers; for proxies use eth_proxy. A malformed address or slot is rejected with 400, uncharged. Example: address=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | Slot: a decimal index (0, 1, 2…) or a 0x 32-byte key | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses error behavior (malformed address or slot rejected with 400, uncharged), billing model ($0.01/call, first 25 free, failed calls free), and that repeats are charged — which explains why idempotentHint is false for what is otherwise a pure read. It also confirms no state change occurs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and return shape, then usage and pricing. Slightly redundant at the tail where 'each call is charged, so repeats are not free' restates the price sentence, and 'reads or computes only and changes nothing' partly duplicates the readOnly annotation.
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 only two parameters, no output schema, and safety already covered by annotations, the description supplies everything needed: return format, slot key forms, error semantics, and cost. Nothing required for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents both address and slot (decimal index or 0x 32-byte key). The description adds only the mapping/proxy rationale for key-form slots and an example address; notably it never states what slot defaults to when omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (read one raw storage slot of a contract on Ethereum), names the underlying RPC method eth_getStorageAt, and describes the return shape (32-byte word as number, and as an address when applicable). This clearly separates it from generic call/balance siblings and from eth_proxy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit usage context ('contract state that has no getter, owners or implementation pointers') and names the alternative for the proxy case ('for proxies use eth_proxy'). Slight internal tension remains because implementation-pointer slots are themselves proxy-related, but the intended routing is still clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_token_balanceEthereum ERC-20 balanceARead-onlyInspect
ERC-20 token balance of a wallet on Ethereum (USDC, USDT, WETH or any token, via balanceOf): raw amount, decimals, symbol and the human-readable amount, live from the token contract. Use to check stablecoin or token holdings before a transfer or trade; for the native coin use eth_balance. Both inputs are 0x addresses (40 hex characters); no contract returns 404 and a non-ERC-20 contract 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC, USDT, WETH or DAI, or the 0x ERC-20 contract address | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/non-destructive, but the description adds substantial context they don't carry: pricing ($0.01/call via x402 or card key, first 25 free, failed calls free), the fact that repeat calls are charged (consistent with idempotentHint=false), that values are read live from the contract, and the status codes for two failure modes. Nothing contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return shape, and tightly packed. The pricing/free-tier sentence is longer than strictly needed for invocation but is genuinely useful information; only minor trimming would improve it.
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?
There is no output schema, yet the description fully specifies the return fields, chain scope, input formats, cost model, and error behavior — everything an agent needs to call it correctly and interpret the result.
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 both parameters are already documented, making 3 the baseline. The description partially adds value by specifying 0x / 40-hex input format, but it says "Both inputs are 0x addresses," which conflicts with the token parameter accepting tickers like USDC — a small inconsistency that reduces the net value added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource — ERC-20 balance of a wallet via balanceOf — and enumerates the exact returned fields (raw amount, decimals, symbol, human-readable amount). It also names the sibling it is not (eth_balance for the native coin), so an agent can separate it from the other *_token_balance tools by chain name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use to check stablecoin or token holdings before a transfer or trade" gives the positive trigger, and "for the native coin use eth_balance" gives the explicit alternative. It further states when NOT to expect success (no contract → 404, non-ERC-20 → 422), which is decision-relevant routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_token_infoEthereum token info, ERC-20ARead-onlyInspect
Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Ethereum, live from the contract. Use to identify an unknown token address or to format raw amounts; for a holder's balance use eth_token_balance. Input is a ticker (USDC, WETH…) or the token's 0x contract address; an address that is not an ERC-20 contract returns 422, uncharged. Example: token=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive, non-idempotent and open-world hints, yet the description still adds real value: live-on-chain reads, the 422 error path for non-ERC-20 contracts, that failures are free, and the $0.01/call billing model with the 25-free-call allowance. The statement that repeats cost money is consistent with idempotentHint=false. It stops short of describing latency or rate limits, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage routing, then input format, then billing caveats — a sensible order with no filler sentences. It is on the dense side (billing and example occupy a third of the text), but every clause conveys something an agent would otherwise have to guess.
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?
There is no output schema, and the description compensates by enumerating the returned fields (name, symbol, decimals, total supply). For a single-parameter, read-only lookup, the error path, cost model and input format are all present, leaving nothing an agent needs in order to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the property description already explains the ticker-or-address input, so baseline is 3. The tool description earns above baseline by adding concrete ticker examples (USDC, WETH), a full worked address example, and the failure semantics for a valid-but-non-ERC-20 address.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ('Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Ethereum') and even states the four returned fields. It explicitly distinguishes itself from the sibling eth_token_balance, so an agent can route between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases ('identify an unknown token address', 'format raw amounts') and names the alternative with its condition ('for a holder's balance use eth_token_balance'). It also states when the tool will not help: a non-ERC-20 address returns 422 uncharged.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_token_transfersToken transfers, EthereumARead-onlyInspect
List a wallet's recent transfers of one ERC-20 token (default USDC) on Ethereum, in and out, over the last N blocks (1-2,000, default 1,000): direction, counterparty, amount and transaction, newest first, up to 50. Use to confirm a payment arrived or see what was sent; for the current balance use eth_token_balance. Malformed addresses are rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Token: a ticker such as USDT or WETH, or the 0x ERC-20 contract (default: USDC on this network) | |
| blocks | No | How many recent blocks to scan (1-2000, default 1000; 2,000 blocks is about 6.7 hours on Ethereum) | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the charging model ($0.01/call, first 25 free, failed calls free, repeats not free — consistent with idempotentHint=false), the error path (malformed address → 400, uncharged), and result shaping (newest first, capped at 50). Even with readOnlyHint/openWorldHint already given, this is substantial added 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?
Purpose, defaults and the alternative are front-loaded, and there is little wasted text. Minor redundancy: 'each call is charged, so repeats are not free' restates the earlier '$0.01/call ... failed calls free', and 'Reads or computes only and changes nothing' duplicates readOnlyHint.
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 no output schema, the description still tells the agent what comes back (direction, counterparty, amount, transaction, ordered newest first, 50 max), how errors behave, and what it costs — the things needed to call it correctly and interpret results. Nothing material is missing for a read-only listing 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?
Schema coverage is 100% and already documents the token/blocks/address fields with defaults and ranges, so the description mostly restates them. It does add value with a concrete example address and by restating the USDC default and 1–2,000 block window inline for quick scanning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List a wallet's recent transfers of one ERC-20 token ... on Ethereum'), plus scope (in and out, last N blocks, newest first, up to 50). It also names the sibling it is not ('for the current balance use eth_token_balance'), so an agent can separate it from eth_token_balance and the *_token_transfers tools on other chains without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use cases ('confirm a payment arrived or see what was sent') and an explicit alternative with the condition that selects it ('for the current balance use eth_token_balance'). Network scoping ('on Ethereum') implicitly routes against arb_/base_/op_/polygon_token_transfers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eth_txEthereum transactionARead-onlyInspect
Look up an Ethereum transaction by hash: sender, recipient, value in ETH, nonce, gas limit, the 4-byte function selector and its block. Use to see what was sent or whether it exists; for success or failure and fees paid use eth_receipt, for emitted events eth_logs. Input is a 0x-prefixed 64-hex hash; an unknown hash returns 404, uncharged. Example: hash=0x9531467e03a57bbb5cd080439ac3b10c0cefed147282eb2ff709b02c897afcbf. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds material context beyond them: unknown hashes return 404 and are uncharged, pricing is $0.01/call with the first 25 free and failed calls free, and repeats are billed. The 'each call is charged, so repeats are not free' note usefully explains the idempotentHint=false annotation rather than 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?
Front-loads purpose and returned fields, then routes to siblings, then covers input format, pricing and safety — a sensible ordering with no filler. It runs long and repeats the hash format already in the schema, so it is dense rather than maximally tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of telling the agent what comes back, and it does so field by field. Combined with pricing, error behavior and the read-only assurance, an agent has everything needed to call this correctly and interpret the result.
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 format spec ('0x-prefixed, 64 hex characters') is largely a restatement of the schema. However, the description adds the error semantics for a malformed or unknown hash and a concrete worked example value, which is meaningfully 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?
States a specific verb and resource ('Look up an Ethereum transaction by hash') and enumerates the returned fields: sender, recipient, value in ETH, nonce, gas limit, function selector, block. It explicitly distinguishes itself from the two nearest siblings, eth_receipt and eth_logs, so an agent can route correctly without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('see what was sent or whether it exists') and names the alternatives with their selecting conditions: eth_receipt for success/failure and fees, eth_logs for emitted events. It also states the input format and what happens on an unknown hash (404, uncharged), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evm_checksumAddress checksum (EIP-55): validate and format an EVM addressARead-onlyInspect
Address checksum for any EVM address: validates it and returns the EIP-55 checksummed form, saying whether the input was all lower case, all upper case, correctly checksummed or mixed case with a wrong checksum (a likely typo). Works for every EVM chain. Use before sending funds or storing an address; for whether it is a contract use _is_contract. Example: address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address (40 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, yet the description adds genuinely new behavior: no state changes, per-call charging ($0.01 via x402/card key, first 25 free, failed calls free), and why repeats aren't free — which explains the otherwise puzzling idempotentHint=false. It stops short of describing the exact output object, but with no output schema and a simple payload that is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, verdicts, scope, usage, alternative, example, and pricing are front-loaded in a single dense paragraph with little waste. There is slight redundancy at the end — "each call is charged, so repeats are not free" restates the pricing clause — which keeps it off a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only, no-output-schema tool, everything an agent needs is present: input format with example, the meaning of each possible result, chain scope, the sibling to use for a different question, and the cost model. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter already documents "0x address (40 hex characters)", so the baseline is 3. The description adds value by supplying a concrete worked example address and making clear that all-lowercase, all-uppercase, and mixed-case inputs are all accepted, which the schema does not say.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: validates an EVM address and returns its EIP-55 checksummed form, and enumerates the four possible input-case verdicts. It also names the sibling tool (evm_is_contract) it must not be confused with, so an agent can distinguish it from the ~200 chain-prefixed 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?
Explicit when-to-use ("Use before sending funds or storing an address") and an explicit alternative with the condition that selects it ("for whether it is a contract use <chain>_is_contract"). Scope is also stated (works for every EVM chain), removing ambiguity with the per-chain siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evm_decode_calldataDecode calldata: function and arguments of an EVM callARead-onlyInspect
Decode EVM transaction calldata into the function and its arguments with viem: give the function signature (transfer(address,uint256)), or leave it out to try common ERC-20, ERC-721, ERC-1155, WETH, permit and multicall functions by selector. Numbers come back as decimal strings. Use to read what a pending or past transaction does before signing; get calldata from eth_tx. A selector that does not match is 422, uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | 0x calldata (selector plus ABI-encoded arguments), up to 8 KB | |
| signature | No | Optional function signature such as transfer(address,uint256) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses the 422 error for unmatched selectors, that failed calls are uncharged, per-call pricing ($0.01 via x402 USDC or card key with 25 free), and that repeats are billed because the call is non-idempotent — consistent with idempotentHint=false. Also notes how numbers are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the signature-optional behavior, and every sentence carries information. Slightly overpacked, with the billing point restated ('each call is charged, so repeats are not free') after the free-failure clause.
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?
No output schema exists, and the description compensates by explaining the returned function/arguments and decimal-string number formatting, plus error and billing semantics. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains the optional signature's role and gives the selector-matching fallback behavior for ERC-20/721/1155/WETH/permit/multicall when it is omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('decode EVM transaction calldata into the function and its arguments') and names the underlying library, which distinguishes it clearly from sibling helpers like evm_checksum and evm_verify_signature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use context ('read what a pending or past transaction does before signing') and points to the upstream source of the input ('get calldata from eth_tx'). No explicit exclusion against a sibling, but the domain is narrow enough that guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evm_verify_signatureSignature verify, EIP-191: recover the signer of an Ethereum messageARead-onlyInspect
Verify an Ethereum personal_sign (EIP-191) signature: recover the address that signed a message and, given an expected address, say whether it matches. Works for ordinary wallets (EOAs); smart-contract wallets sign by ERC-1271, which this offline check does not cover. Use for sign-in-with-wallet, proving wallet ownership or checking a signed order. A malformed signature is 400, uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| raw | No | true to treat a 0x message as raw bytes instead of text | |
| address | No | Optional expected signer address to compare | |
| message | Yes | The exact message that was signed (or 0x hex with raw=true) | |
| signature | Yes | 0x signature, 65 bytes (130 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses that the check is offline, that malformed signatures return 400 and are uncharged, that successful calls cost $0.01 via x402 USDC or a card key, that the first 25 are free, and that failed calls are free. Crucially it explains why repeats are not free, which reconciles with idempotentHint=false and adds real decision-relevant 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?
Front-loaded with the core purpose and scope before pricing and error details; nearly every sentence carries information an agent needs (limits, cost, error handling). It is dense and slightly crammed with payment mechanics, but nothing is truly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still explains what comes back (recovered signer address plus a match verdict when an expected address is supplied), what happens on bad input (400, uncharged), and what class of signatures are unsupported. That is enough for an agent to call it correctly and interpret the result.
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 all four parameters (message, signature, address, raw) are already documented in the schema, including the raw-bytes flag and the 65-byte signature format. The description confirms the meaning of the optional expected address ('say whether it matches') but adds no syntax or edge-case detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('verify an Ethereum personal_sign (EIP-191) signature: recover the address... say whether it matches'), including the exact output semantics. It also delimits scope by ruling out ERC-1271 smart-contract wallets, so an agent can distinguish this from any other crypto/EVM helper in the catalog.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use cases (sign-in-with-wallet, proving wallet ownership, checking a signed order) and an explicit exclusion (contract wallets signing via ERC-1271 are not covered by this offline check). It stops short of naming a sibling tool as the alternative for that excluded case, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gnosis_allowanceToken allowance, Gnosis ERC-20ARead-onlyInspect
ERC-20 token allowance on Gnosis: how much a spender may move from an owner's wallet (allowance), raw and in token units, and whether the approval is unlimited. Use to check an approval before a swap or to audit risky open approvals; for the owner's balance use gnosis_token_balance. Token is a ticker (USDC, USDT, WETH…) or a 0x contract; a missing contract is 404 and a non-ERC-20 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | 0x wallet that gave the approval | |
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address | |
| spender | Yes | 0x contract or wallet allowed to spend (the example is Uniswap Permit2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only, open-world, non-destructive, and non-idempotent, but the description adds substantial context: return shape, 404/422 error behavior, charging rules, free failures, and that repeats are not free. These details go well beyond the annotations and help the agent understand cost and error semantics.
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 definition and usage guidance, and every major clause adds useful information about token input, errors, or pricing. It is dense and somewhat long, but appropriate for a paid multi-chain read tool with no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description sufficiently explains what is returned: allowance raw and in token units, plus unlimited-approval status. It also covers pricing, error behavior, and read-only semantics, leaving no critical gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds useful token semantics: token accepts a ticker or 0x contract, and missing contracts return 404 while non-ERC-20 tokens return 422. It does not add much beyond the schema for owner and spender, so it is strong but not exhaustive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it returns ERC-20 token allowance on Gnosis, including raw and token-unit amounts plus unlimited-approval status. It also distinguishes the tool from gnosis_token_balance, so an agent can select it without opening sibling schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit use cases: checking an approval before a swap or auditing risky open approvals. It also names the alternative tool for the owner's balance, gnosis_token_balance, making the when-to-use boundary clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gnosis_balanceGnosis balance, native coinARead-onlyInspect
Native xDAI balance (eth_getBalance) of any 0x wallet address on Gnosis at the latest block, in wei and in xDAI. Use to check whether a wallet can pay gas or a transfer; for ERC-20 tokens use gnosis_token_balance, for all holdings at once use wallet_portfolio. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet or contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: malformed addresses are rejected with a 400 and are uncharged, failed calls are free, pricing is $0.01/call via x402 USDC or a card key with the first 25 free. The 'each call is charged, so repeats are not free' line meaningfully explains the non-obvious idempotentHint=false, which annotations alone would leave opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the identity of the tool, then usage routing, then failure/pricing terms. Every sentence carries information, though the pricing sentence packs four clauses together and could be split for readability.
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 no output schema, the description still states what comes back (wei and xDAI, latest block), what input is accepted, what happens on bad input, and what the call costs. For a one-parameter read tool, nothing an agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the address parameter is already documented, but the description adds a concrete example address and the validation contract (malformed input → 400, no charge). That is real added meaning, though there is only one parameter, so the upside is bounded.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — the native xDAI balance of a 0x address on Gnosis at the latest block — plus the underlying RPC (eth_getBalance) and the return units (wei and xDAI). It explicitly distinguishes itself from gnosis_token_balance and wallet_portfolio, so an agent can pick it out of a very large sibling list without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case ('check whether a wallet can pay gas or a transfer') and names both alternatives with the condition that selects each: gnosis_token_balance for ERC-20s and wallet_portfolio for all holdings at once. No inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gnosis_blockGnosis block numberARead-onlyInspect
Latest block number and block details on Gnosis, or any block by decimal number: hash, timestamp, transaction count, gas used and limit, base fee in gwei and producer. Use for timestamps and confirmation counts; for current fees use gnosis_gas. A block that does not exist yet returns 404, uncharged. Example: number=latest. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| number | No | Block number, or 'latest' (default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive, open-world, and crucially idempotentHint=false; the description adds real context beyond that by explaining the pricing model (charged per call, repeats not free), the 404-and-uncharged behavior for non-existent blocks, and the free-failure policy. That materially explains the non-idempotency and error semantics. Minor gap: no guidance on which block ranges are valid or how far back Gnosis queries are supported.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and returned fields, then routing, then behavioral caveats, then pricing. The pricing/billing sentence is long and partially boilerplate, but it is load-bearing for a paid, non-idempotent call, so it 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?
For a single optional-parameter read tool with no output schema, the description covers what is returned, when to use it, the error case, and the billing model. An agent has everything needed to call it correctly and to decide whether to call it at all.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already documents 'latest' as default, so the baseline is 3. The description earns a bit more by specifying the number must be decimal and giving an inline example (number=latest), which the schema does not state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (retrieve latest or a numbered block on Gnosis) and enumerates the returned fields: hash, timestamp, tx count, gas used/limit, base fee, producer. It also names the sibling it is not (gnosis_gas) so the agent can distinguish it from the fee-oriented tool without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing guidance: 'Use for timestamps and confirmation counts; for current fees use gnosis_gas.' This gives both the positive use case and the alternative tool with the condition that selects it, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gnosis_callEth call, Gnosis contract callARead-onlyInspect
Read-only contract call on Gnosis (eth_call): send ABI-encoded calldata to a contract at the latest block and get the raw return data, without a transaction or gas. Use to read any view function that has no dedicated tool (the example reads USDC totalSupply, selector 0x18160ddd); decode the result with the function's ABI. Calldata up to 8 KB; a call that reverts is 422 with the reason, uncharged. Example: to=0x2a22f9c3b484c3629090FeED35F17Ff8F88f76F0, data=0x18160ddd. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x contract address to call | |
| data | Yes | 0x ABI-encoded calldata: 4-byte selector plus arguments | |
| from | No | Optional 0x sender address for calls that check msg.sender |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: 8 KB calldata limit, revert behavior (422 with reason, uncharged), pricing at $0.01/call with 25 free calls, failed calls free, and the warning that repeats are charged. This is consistent with idempotentHint=false and adds genuinely operational context an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core definition and the use case before pricing details, and every clause is substantive. There is minor redundancy ('uncharged' followed by 'failed calls free', and the read-only statement echoing readOnlyHint), which keeps it just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description properly explains the return value (raw return data requiring ABI decoding), covers the call limit, revert handling, and cost model. Nothing an agent needs in order to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds a concrete worked example (to=0x2a22..., data=0x18160ddd) and explains that data is selector-plus-arguments and the result must be decoded with the ABI. It adds real semantic value beyond the schema field text without contradicting it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read-only contract call on Gnosis (eth_call)') plus what it returns ('raw return data, without a transaction or gas'). It also distinguishes itself from the large sibling family by scoping to view functions that have no dedicated tool, so an agent can tell it apart from gnosis_token_balance or gnosis_storage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use it for any view function lacking a dedicated tool, which implicitly routes the agent away from the specialized siblings. It stops short of naming a concrete alternative sibling or an explicit when-not case, so it is clear but not fully prescriptive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gnosis_estimate_gasEstimate gas, GnosisARead-onlyInspect
Estimate the gas a transaction would use on Gnosis (eth_estimateGas) and what it would cost at the current gas price, in gas units, gwei and xDAI. Give to, plus value in xDAI and calldata for a contract call, and the sender when the call depends on it. Use before sending a transaction or to price a batch; for the gas price alone use gnosis_gas. A transaction that would revert is 422 with the reason, uncharged. Example: to=0x000000000000000000000000000000000000dEaD. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x recipient or contract address | |
| data | No | Optional 0x calldata for a contract call | |
| from | No | 0x sender address (default: an empty address) | |
| value | No | Amount of xDAI to send, in xDAI (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses revert behavior (422 with reason, uncharged), pricing model ($0.01/call, first 25 free, failed calls free), and that each call is charged so repeats are not free — which explains the idempotentHint=false. It also confirms the read-only nature, consistent with readOnlyHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and output before usage, semantics, pricing, and the caveat. It is dense but each sentence carries information; the pricing/charge sentence is a bit long but earns its place by explaining non-idempotency.
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?
There is no output schema, but the description enumerates the return values (gas units, gwei, xDAI) and error behavior (422 with reason), and the safety profile is covered by annotations. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: value is specified in xDAI, calldata is for contract calls, and 'from' matters when the call depends on the sender. This goes slightly beyond the schema's own wording.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (estimate) plus resource (gas for a transaction) on a named chain, and specifies the outputs (gas units, gwei, xDAI). It also disambiguates from the sibling gnosis_gas, so an agent can pick it without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it ('before sending a transaction or to price a batch') and names the alternative for the other case ('for the gas price alone use gnosis_gas'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gnosis_gasGnosis gas priceARead-onlyInspect
Current gas price on Gnosis (eth_gasPrice): gas price, base fee and suggested priority fee in gwei, plus what a plain xDAI transfer (21,000 gas) costs right now. Takes no input. Use before sending a transaction or to decide whether to wait; for the fee a past transaction actually paid use gnosis_receipt. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Optional: comma-separated top-level result keys to keep, for a smaller answer (for example only=price,symbol); unknown keys are ignored and an empty match returns the full result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations by disclosing the commercial model: $0.01/call via x402 USDC or card key, first 25 free, failed calls free, and 'each call is charged, so repeats are not free' — which explains the idempotentHint=false implication. It also restates the safety profile ('reads or computes only and changes nothing') in plain terms.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what it returns, then usage routing, then pricing. Dense but nearly every clause carries decision-relevant information; the billing sentence is long and could be tightened, but it earns its space given the per-call cost.
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?
No output schema exists, yet the description specifies the return payload (gas price, base fee, priority fee in gwei, transfer cost), the cost model, and the safety profile — everything an agent needs to call it and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single optional `only` parameter is fully documented in the schema, so the baseline is 3. The description says 'Takes no input', which mildly understates the presence of the optional `only` filter and adds no meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Current gas price on Gnosis (eth_gasPrice)') and enumerates the returned fields: gas price, base fee, suggested priority fee, plus the 21,000-gas xDAI transfer cost. It also explicitly distinguishes itself from gnosis_gas_history and gnosis_receipt, so an agent can pick it out of a very large sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('before sending a transaction or to decide whether to wait') and a named alternative with its selection condition ('for the fee a past transaction actually paid use gnosis_receipt'). No inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gnosis_gas_historyGnosis gas history, gas priceARead-onlyInspect
Gas price history on Gnosis (eth_feeHistory): base fee in gwei for each of the last N blocks (5-100, default 20), how full each block was, and the 10th, 50th and 90th percentile priority fees, with the low, average and high base fee over the window. Use to judge whether fees are rising, pick a priority fee or time a transaction; for the current price alone use gnosis_gas. Example: blocks=20. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks, 5-100 (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces this with 'reads or computes only and changes nothing'. It adds genuinely non-obvious behavior that annotations cannot express: per-call cost ($0.01 via x402 USDC or card key), the first 25 free, failed calls free, and that repeated calls are charged - which is consistent with idempotentHint=false rather than contradicting it. It stops short of stating rate limits or latency, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Everything is front-loaded: purpose and output shape first, then the sibling disambiguation, then pricing. The pricing and free-tier sentence is lengthy but each clause carries decision-relevant information for cost-aware callers, so there is no padding to cut.
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 no output schema, the description carries the full burden of explaining returns, and it does so specifically: base fee in gwei per block, block fullness, 10th/50th/90th percentile priority fees, and low/average/high base fee over the window. Together with the cost model and safety hints, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented as 5-100 with default 20, so the description's restatement adds little. The one extra contribution is a concrete usage example ('blocks=20'), but no format or edge-case guidance (e.g. what happens outside the ranges) is added 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 opens with a specific verb and resource ('Gas price history on Gnosis (eth_feeHistory)') and explicitly scopes itself to a window of blocks, naming the underlying RPC. It also names the sibling it is not ('for the current price alone use gnosis_gas'), so an agent can distinguish it from gnosis_gas without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance ('judge whether fees are rising, pick a priority fee or time a transaction') and an explicit alternative with its selection condition ('for the current price alone use gnosis_gas'). Nothing about choosing between this and its sibling is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gnosis_is_contractGnosis is-contract checkARead-onlyInspect
Check whether a 0x address on Gnosis is a smart contract or a plain wallet: bytecode size, and whether it is an EIP-1167 minimal proxy and which implementation it points to. Use before sending funds or approving a spender; for a fuller risk verdict use check_counterparty. A malformed address is rejected with 400, uncharged. Example: address=0x2a22f9c3b484c3629090FeED35F17Ff8F88f76F0. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: malformed addresses are rejected with 400 and uncharged, failed calls are free, each successful call is billed at $0.01 via x402 USDC or a card key, and the first 25 are free. It also explains the otherwise puzzling idempotentHint=false by noting repeats are charged, and restates the read-only nature ('reads or computes only and changes nothing'). It stops short of describing latency or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and usage, then return fields, then error behavior, then pricing. Nearly every clause is informative, though the pricing/billing sentence is long and packs three separate facts that could be split for scanability.
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 no output schema, the description compensates by naming the returned facts (bytecode size, minimal-proxy flag, implementation address). Combined with error behavior, pricing, and the alternative tool, an agent has everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one parameter, so the schema already carries the load. The description still adds validation semantics (malformed address → 400, uncharged) and a concrete example address, which is more than the bare '0x address' schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check whether a 0x address on Gnosis is a smart contract or a plain wallet') and enumerates exactly what is returned: bytecode size, EIP-1167 minimal-proxy status, and implementation address. The chain prefix in the name plus this enumeration separates it from the many sibling chain variants, though it never explicitly contrasts itself with gnosis_proxy despite mentioning proxy detection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete decision context ('Use before sending funds or approving a spender') and names the alternative for the heavier case ('for a fuller risk verdict use check_counterparty'). The agent knows both when to call this and when to route elsewhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gnosis_logsGnosis event logsARead-onlyInspect
Recent contract event logs on Gnosis (eth_getLogs): the events a contract emitted over the last N blocks (1-1,000, default 50), optionally filtered by topic0 (the 0x 32-byte event signature hash). Returns up to 100 logs with block, transaction hash and topics. Use to watch transfers or contract events; for one transaction's outcome use gnosis_receipt. Example: address=0x2a22f9c3b484c3629090FeED35F17Ff8F88f76F0. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks to scan (1-1000, default 50) | |
| topic0 | No | Optional 0x event signature hash to filter by | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the cost model ($0.01/call via x402 USDC or card key, first 25 free, failed calls free) and the consequence that repeated calls are billed, which is consistent with idempotentHint=false. It also caps the return size at 100 logs. Minor shortfall: no note on behavior when no logs match or on block-range errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what the tool returns and follows with filtering, usage, cost, and safety notes in a logical order. Slight redundancy: 'Reads or computes only and changes nothing' restates readOnlyHint=true, and the pricing sentence is dense but 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?
For a three-parameter read tool with no output schema, it covers scope limits, return contents, filtering semantics, the alternative tool, and the billing model. An agent has everything needed to decide to call it and to interpret the result.
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 largely restates the same facts (1-1,000 blocks, default 50, topic0 as the 0x 32-byte event signature hash) and only adds a concrete address example, so the baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Recent contract event logs on Gnosis (eth_getLogs)') with scope ('the events a contract emitted over the last N blocks') and return shape. It distinguishes itself from gnosis_receipt, though it does not mention the equally close sibling gnosis_token_transfers, which agents may want for transfer-watching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('watch transfers or contract events') and names an alternative with its selecting condition ('for one transaction's outcome use gnosis_receipt'). The gap is that the more direct transfer-log sibling, gnosis_token_transfers, is never mentioned or excluded.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gnosis_nonceGnosis nonce, account nonceARead-onlyInspect
Read the transaction count (nonce) of a 0x address on Gnosis, both confirmed and including pending transactions. Use to build the next transaction or to tell whether an address has ever sent anything; for its balance use gnosis_balance. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, open-world, non-destructive and non-idempotent, but the description adds real context beyond them: pending vs confirmed semantics, 400 rejection with no charge for malformed addresses, and the per-call cost/free-tier model that explains why repeats are not free. The only wasted sentence is 'Reads or computes only and changes nothing', which merely restates readOnlyHint/destructiveHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then use cases, then failure/pricing facts in a compact block with no filler. Minor deductions: the redundant read-only sentence duplicating annotations and the slightly convoluted pricing tail ('first 25 free; failed calls free... repeats are not free').
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 no output schema, the description must convey the return shape; it says 'transaction count ... both confirmed and including pending', which leaves mild ambiguity over whether one number or a confirmed/pending pair is returned. Everything else an agent needs (validation, cost, side-effect profile) is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single param, so the baseline is 3; the description earns an increment by giving a concrete example address and stating the validation outcome ('malformed address is rejected with 400, uncharged'), which tells the agent the accepted format and failure mode beyond the bare '0x address' schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the transaction count (nonce)'), names the chain (Gnosis) and the address form, and clarifies the confirmed-plus-pending scope. The chain-prefixed name plus explicit scope makes it unambiguous against the ~20 sibling *_nonce tools and against gnosis_balance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases ('build the next transaction', 'tell whether an address has ever sent anything') and an explicit alternative with its selecting condition ('for its balance use gnosis_balance'). This is the when/when-not/alternative pattern done properly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gnosis_proxyProxy implementation, GnosisARead-onlyInspect
Find the implementation behind a proxy contract on Gnosis: reads the EIP-1967 implementation, beacon and admin slots, EIP-1822 (UUPS), the older OpenZeppelin layout and EIP-1167 minimal-proxy bytecode, and names the kind found. Use before trusting or decoding a contract whose code can be swapped by its admin; for a fuller risk verdict use contract_risk. A malformed address is 400; an address without code is 404, both uncharged. Example: address=0x2a22f9c3b484c3629090FeED35F17Ff8F88f76F0. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/destructive/openWorld, so the safety profile is known from structured data. The description mostly restates that ('reads or computes only and changes nothing') and explains cost (which belongs to pricing, not behavior), while adding little on response shape beyond 'names the kind found'. Error semantics (400 malformed, 404 no code, uncharged) are the one genuinely new behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what it reads and when to use it; the pricing/free-tier sentence is long but decision-relevant. Slightly dense but no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description only gestures at the return value ('names the kind found'). It is otherwise complete for a one-param, read-only resolver — enumeration of standards, error codes, and cost are all covered.
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?
Single param with 100% schema coverage, so the baseline is 3. The description adds a concrete example address and ties the parameter to failure modes ('a malformed address is 400'), which adds real value beyond the schema's '0x contract address'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — resolving the implementation behind a proxy contract on Gnosis — and enumerates exactly which slots/standards it reads (EIP-1967 implementation/beacon/admin, EIP-1822 UUPS, legacy OpenZeppelin, EIP-1167 minimal proxy). This unambiguously separates it from sibling readers like gnosis_storage or gnosis_call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('use before trusting or decoding a contract whose code can be swapped by its admin') and names the escalation path ('for a fuller risk verdict use contract_risk'). It also implies when-not: it is a resolution step, not a risk assessment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gnosis_receiptGnosis transaction receiptARead-onlyInspect
Transaction receipt on Gnosis (eth_getTransactionReceipt): success or reverted, gas used, effective gas price, fee paid in xDAI, number of event logs and any contract created. Use to confirm a payment or call went through; for sender, value and calldata use gnosis_tx. Input is a 0x-prefixed 64-hex hash; a pending or unknown hash returns 404, uncharged. Example: hash=0x2b56c1dabbef9c9a07d0f94c6ff931c3e1f93cc398fa06296ff79770d4a4487f. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: pending/unknown hashes return 404 uncharged, failed calls are free, and each call is charged so repeats are not free (consistent with idempotentHint=false). The line 'reads or computes only and changes nothing' merely restates readOnlyHint and earns no credit, but the billing and 404 behavior are genuinely 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?
Front-loaded with what the tool returns and when to use it, then pricing. Dense but nearly every clause carries information; the pricing sentence is long and the readOnly restatement is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the return-value burden itself and does so thoroughly by naming each receipt field. Input format, error case, and cost model are all covered, leaving nothing an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With one parameter at 100% schema coverage the baseline is met by the schema, but the description still adds a worked example hash and the failure semantics for a bad/pending hash, which is meaningfully more than the schema's format note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Transaction receipt on Gnosis') plus the underlying RPC (eth_getTransactionReceipt), and enumerates exactly what comes back: status, gas used, effective gas price, fee in xDAI, log count, contract created. It explicitly distinguishes itself from the sibling gnosis_tx.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete trigger ('use to confirm a payment or call went through') and names the alternative with the condition that selects it ('for sender, value and calldata use gnosis_tx'). No inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gnosis_storageStorage slot read, GnosisARead-onlyInspect
Read one raw storage slot of a contract on Gnosis (eth_getStorageAt): the 32-byte word, as a number and, when it holds one, as an address. Slot is a decimal index or a 0x 32-byte key (mapping and proxy slots). Use to inspect contract state that has no getter, owners or implementation pointers; for proxies use gnosis_proxy. A malformed address or slot is rejected with 400, uncharged. Example: address=0x2a22f9c3b484c3629090FeED35F17Ff8F88f76F0. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | Slot: a decimal index (0, 1, 2…) or a 0x 32-byte key | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds a lot beyond the annotations: malformed address or slot returns 400 uncharged, pricing ($0.01/call via x402 USDC or card key, first 25 free), failed calls free, and the explicit note that repeats are charged. That last point explains why idempotentHint is false for what is otherwise a pure read, heading off a likely agent assumption. It stops short of full marks only because pagination/response envelope details are absent, though there is little to say for a single-slot read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the eth_getStorageAt mapping are front-loaded, and the alternative routing follows immediately. The tail is dense with pricing clauses, and 'each call is charged, so repeats are not free' partially restates the price sentence, costing a little efficiency without obscuring the message.
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 two-parameter read with no output schema, the description covers return format, error behavior, cost, and sibling routing. An agent has everything needed to call it correctly and to anticipate the charge.
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 defines both parameters and the baseline would be 3. The description adds real meaning on top: it clarifies the two slot encodings are for distinct cases ('mapping and proxy slots'), which the schema does not say, and supplies a concrete address example. The required-vs-optional distinction is left to 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?
States a specific verb and resource ('Read one raw storage slot of a contract on Gnosis'), names the underlying RPC method (eth_getStorageAt), and describes the return shape (32-byte word as number, and as address when applicable). It is clearly distinguishable from the sibling family, which has no other storage-read naming besides per-chain *_storage variants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit usage condition ('inspect contract state that has no getter, owners or implementation pointers') and routes the agent to the alternative when that condition fails ('for proxies use gnosis_proxy'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gnosis_token_balanceGnosis ERC-20 balanceARead-onlyInspect
ERC-20 token balance of a wallet on Gnosis (USDC, USDT, WETH or any token, via balanceOf): raw amount, decimals, symbol and the human-readable amount, live from the token contract. Use to check stablecoin or token holdings before a transfer or trade; for the native coin use gnosis_balance. Both inputs are 0x addresses (40 hex characters); no contract returns 404 and a non-ERC-20 contract 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC, USDT, WETH or DAI, or the 0x ERC-20 contract address | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: discloses the failure taxonomy (404 for no contract, 422 for non-ERC-20) and that both are uncharged, plus the billing model ($0.01/call, 25 free, failed calls free) and the warning that repeats are not free. It also restates the read-only, non-mutating nature in plain terms where annotations only carry readOnlyHint/destructiveHint flags.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what it returns, then usage, then errors and pricing — good ordering with no filler. It is dense and runs long on billing detail, but each clause carries decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description names the returned fields (raw amount, decimals, symbol, human-readable amount), the failure modes, and the cost model, which is everything an agent needs before calling. Nothing material is left unstated except the address-format inconsistency noted above.
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, and the description does add error semantics tied to the inputs. However, 'Both inputs are 0x addresses (40 hex characters)' is misleading: the schema explicitly allows a ticker such as USDC/USDT/WETH/DAI for the token field, and the description's own opening sentence lists tickers. That inconsistency undercuts the parameter guidance it offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('ERC-20 token balance of a wallet on Gnosis ... via balanceOf') plus the accepted token universe, and explicitly distinguishes itself from gnosis_balance for the native coin. An agent can pick between gnosis_token_balance, gnosis_token_info and gnosis_balance without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the concrete use case ('check stablecoin or token holdings before a transfer or trade') and names the escape hatch for the adjacent case ('for the native coin use gnosis_balance'). The routing condition is stated, not inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gnosis_token_infoGnosis token info, ERC-20ARead-onlyInspect
Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Gnosis, live from the contract. Use to identify an unknown token address or to format raw amounts; for a holder's balance use gnosis_token_balance. Input is a ticker (USDC, WETH…) or the token's 0x contract address; an address that is not an ERC-20 contract returns 422, uncharged. Example: token=0x2a22f9c3b484c3629090FeED35F17Ff8F88f76F0. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and non-destructive behavior, but the description adds genuinely new context: pricing ($0.01/call, first 25 free, failed calls free), a 422 uncharged error for non-ERC-20 addresses, and the note that repeats are charged — which reconciles the otherwise surprising idempotentHint=false. It does not describe latency or caching, but for a single-address read that is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage, then input format, then pricing — a sensible order with no filler sentences. It is on the long side for a one-parameter tool, but every sentence carries operative information (cost, error case, no side effects).
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?
There is no output schema, and the description compensates by naming the four returned fields, plus error behavior and billing. For a one-parameter read tool, an agent has everything needed to call it and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already explains the ticker-or-address duality, so the baseline is 3. The description goes further with a worked address example and the failure semantics of an address that is not an ERC-20 contract (422, uncharged), which materially helps the agent pass a valid 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?
States a specific verb and resource ('Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Gnosis') and even names the exact return fields. It explicitly separates itself from the sibling gnosis_token_balance, so an agent can choose without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases ('identify an unknown token address', 'format raw amounts') and an explicit exclusion routing holder balances to gnosis_token_balance. Nothing about when to pick this vs. alternatives is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gnosis_token_transfersToken transfers, GnosisARead-onlyInspect
List a wallet's recent transfers of one ERC-20 token (default USDC) on Gnosis, in and out, over the last N blocks (1-2,000, default 1,000): direction, counterparty, amount and transaction, newest first, up to 50. Use to confirm a payment arrived or see what was sent; for the current balance use gnosis_token_balance. Malformed addresses are rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Token: a ticker such as USDT or WETH, or the 0x ERC-20 contract (default: USDC on this network) | |
| blocks | No | How many recent blocks to scan (1-2000, default 1000; 2,000 blocks is about 2.8 hours on Gnosis) | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and destructive hints, but the description adds real value: per-call pricing model ($0.01, first 25 free, failed calls free) and the crucial caveat that repeats are billed, which explains the idempotentHint=false annotation. It also discloses the 400 rejection for malformed addresses as uncharged.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded and the description is dense with useful detail, but the charging information is partially repeated ("first 25 free; failed calls free" then "each call is charged, so repeats are not free") and the inline example address occupies space that could be trimmed.
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 no output schema, the description compensates by naming the returned fields (direction, counterparty, amount, transaction) and ordering/cap (newest first, up to 50). Error behavior, cost, and the read-only guarantee are all covered, so an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the token default (USDC), the 1-2000 block range and the default of 1000. The description mostly restates those facts, adding only a worked address example; baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ("List"), a precise resource ("recent transfers of one ERC-20 token ... on Gnosis"), and scope qualifiers (in and out, last N blocks, newest first, up to 50). It is immediately distinguishable from sibling tools like gnosis_token_balance and from the same tool on other networks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the concrete use cases ("confirm a payment arrived or see what was sent") and explicitly routes the balance use case to gnosis_token_balance. The malformed-address/400 note tells the agent what input conditions fail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gnosis_txGnosis transactionARead-onlyInspect
Look up a Gnosis transaction by hash: sender, recipient, value in xDAI, nonce, gas limit, the 4-byte function selector and its block. Use to see what was sent or whether it exists; for success or failure and fees paid use gnosis_receipt, for emitted events gnosis_logs. Input is a 0x-prefixed 64-hex hash; an unknown hash returns 404, uncharged. Example: hash=0x2b56c1dabbef9c9a07d0f94c6ff931c3e1f93cc398fa06296ff79770d4a4487f. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing that an unknown hash returns 404 and is uncharged, that each call is billed ($0.01 via x402 USDC or card key, first 25 free, failed calls free), and that repeats are not free — which usefully explains the idempotentHint=false. The only omission is what the successful payload looks like in structure, which the field list partially covers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and field list are front-loaded, and the sibling routing follows immediately. The pricing and free-tier sentence is long but earns its place because the tool is metered; the inline example hash is the one element that could be trimmed.
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, no-output-schema read tool, the description covers what comes back, error behavior for unknown hashes, cost model, and which sibling to use instead. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents the single hash parameter as a 0x-prefixed 64-hex string, so the description largely restates it. The concrete example hash and the 404-on-unknown outcome add a little meaning, but not much beyond the structured field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Look up a Gnosis transaction by hash') and enumerates the returned fields (sender, recipient, value in xDAI, nonce, gas limit, selector, block). It explicitly separates itself from gnosis_receipt and gnosis_logs, so an agent can pick it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use ('to see what was sent or whether it exists') and names the alternatives with the condition that selects each: gnosis_receipt for success/failure and fees, gnosis_logs for emitted events. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hyperevm_allowanceToken allowance, HyperEVM ERC-20ARead-onlyInspect
ERC-20 token allowance on HyperEVM: how much a spender may move from an owner's wallet (allowance), raw and in token units, and whether the approval is unlimited. Use to check an approval before a swap or to audit risky open approvals; for the owner's balance use hyperevm_token_balance. Token is a ticker (USDC, USDT, WETH…) or a 0x contract; a missing contract is 404 and a non-ERC-20 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | 0x wallet that gave the approval | |
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address | |
| spender | Yes | 0x contract or wallet allowed to spend (the example is Uniswap Permit2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, destructiveHint, openWorldHint, and idempotentHint. The description adds valuable context beyond that: pricing model ($0.01/call, first 25 free, failed calls free), error responses (404 for missing contract, 422 for non-ERC-20, both uncharged), and a clear statement that the tool reads/computes only and changes nothing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and efficiently covers usage, parameter details, pricing, and safety. It is slightly dense with pricing/error details, but every sentence serves a purpose.
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?
No output schema exists, but the description explains the return values (raw and token units, unlimited flag). Combined with annotations and full schema coverage, an agent has all needed information to call 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 documents all three parameters. The description repeats the token format (ticker or 0x contract) and adds error codes, but does not add meaning for owner or spender beyond the schema. 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?
States a specific verb and resource: 'ERC-20 token allowance on HyperEVM' with details on what is returned (raw and token units, unlimited flag). It also differentiates from the sibling balance tool by name.
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 gives use cases ('check an approval before a swap or to audit risky open approvals') and names the alternative tool for a different need ('for the owner's balance use hyperevm_token_balance'). Clear when-to-use and alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hyperevm_balanceHyperEVM balance, native coinARead-onlyInspect
Native HYPE balance (eth_getBalance) of any 0x wallet address on HyperEVM at the latest block, in wei and in HYPE. Use to check whether a wallet can pay gas or a transfer; for ERC-20 tokens use hyperevm_token_balance, for all holdings at once use wallet_portfolio. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet or contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnly, openWorld, non-idempotent, non-destructive; the description adds price per call, a free tier, that failed calls are free, that a malformed address returns 400 uncharged, and that repeat calls are billed. That cost/non-idempotency detail is the key operational fact beyond the annotations and is consistent with idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then alternatives, then error behavior, then pricing — logical order with no filler sentences. It is dense with billing/marketing detail ($0.01/call, x402 USDC, card key, 25 free), which is largely relevant but makes the block longer than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description covers purpose, alternatives, input format, error behavior, cost, and unit of return. Nothing an agent needs in order to invoke it correctly or budget for it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already documents the single address parameter, so the baseline is 3. The description still adds value by specifying the 0x format expectation, rejecting malformed input with a 400, and giving a concrete example address.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (native HYPE balance via eth_getBalance), the chain (HyperEVM), the block (latest), and the units returned (wei and HYPE). It also names what it is not — ERC-20 tokens (hyperevm_token_balance) and aggregate holdings (wallet_portfolio) — so an agent can separate it from the many sibling balance tools without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case (check whether a wallet can pay gas or a transfer) and names two alternatives with the conditions that select them. That is exactly the when-to-use routing this crowded namespace needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hyperevm_blockHyperEVM block numberARead-onlyInspect
Latest block number and block details on HyperEVM, or any block by decimal number: hash, timestamp, transaction count, gas used and limit, base fee in gwei and producer. Use for timestamps and confirmation counts; for current fees use hyperevm_gas. A block that does not exist yet returns 404, uncharged. Example: number=latest. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| number | No | Block number, or 'latest' (default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false, openWorldHint and idempotentHint=false; the description reinforces this with 'reads or computes only and changes nothing' and explains the non-idempotency economically ('each call is charged, so repeats are not free'). It also discloses the 404-on-missing-block behavior and pricing/auth (x402 USDC, card key, first 25 free, failed calls free), which is real context beyond the annotations. Slightly repetitive of the annotation hints, but 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?
Front-loads what is returned, then routes to the alternative, then edge cases and pricing. Dense but mostly earns its space; the pricing/auth sentence is long and slightly runs together with the read-only statement, and 'reads or computes only and changes nothing' duplicates the annotation hints.
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?
One optional param, no output schema, and the description covers return fields, missing-block behavior, billing/auth, and mutation semantics. An agent has everything needed to call it correctly and interpret failures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'number' param is already documented with its 'latest' default, so the baseline is 3. The description adds format meaning ('any block by decimal number') and a concrete example (number=latest), which reduces misuse risk for the numeric case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: latest HyperEVM block number and details, or any block by decimal number, and enumerates returned fields (hash, timestamp, tx count, gas used/limit, base fee, producer). It also names the sibling it is not (hyperevm_gas) so the agent can separate it from other hyperevm_* tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('timestamps and confirmation counts') and when-not ('for current fees use hyperevm_gas'), plus operational guidance that a not-yet-existing block returns 404 uncharged. The agent knows both the selection condition and the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hyperevm_callEth call, HyperEVM contract callARead-onlyInspect
Read-only contract call on HyperEVM (eth_call): send ABI-encoded calldata to a contract at the latest block and get the raw return data, without a transaction or gas. Use to read any view function that has no dedicated tool (the example reads USDC totalSupply, selector 0x18160ddd); decode the result with the function's ABI. Calldata up to 8 KB; a call that reverts is 422 with the reason, uncharged. Example: to=0xb88339CB7199b77E23DB6E890353E22632Ba630f, data=0x18160ddd. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x contract address to call | |
| data | Yes | 0x ABI-encoded calldata: 4-byte selector plus arguments | |
| from | No | Optional 0x sender address for calls that check msg.sender |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses the 8 KB calldata cap, that reverts return 422 with the reason and are uncharged, the $0.01 x402/card pricing, 25 free calls, and that repeats are billable. These are exactly the cost and failure behaviors an agent needs. It is not a 5 only because the return-data format (hex string vs. typed value) is described only loosely as 'raw return 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?
Front-loaded with the operation and its purpose before pricing and limits, and the worked example sits mid-paragraph where it is easy to find. The parenthetical pricing and 'first 25 free' detail is dense but earns its place; the sentence is long and could be split for scanability.
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?
No output schema exists, yet the description covers return shape ('raw return data', decode via ABI), error behavior (422 with revert reason), input limits (8 KB), block semantics (latest), and billing. An agent has everything needed to call it correctly and interpret failures without opening anything else.
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 `to`, `data` and the optional `from` are already documented. The description reinforces the calldata contract ('4-byte selector plus arguments', decode with the ABI) and gives a literal to/data pair, but never mentions the `from` parameter or when msg.sender-dependent calls need it. That is a baseline 3 – useful reinforcement, no new parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource on a specific chain: 'Read-only contract call on HyperEVM (eth_call)' that sends ABI-encoded calldata at the latest block and returns raw data. It explicitly says it is for view functions that have no dedicated tool, which separates it from hyperevm_token_balance, hyperevm_allowance and the other chain-specific 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?
Gives an explicit inclusion rule ('Use to read any view function that has no dedicated tool') and an exclusion implication that sends routine reads to the dedicated siblings. It also supplies a concrete worked example (USDC totalSupply, selector 0x18160ddd) and tells the agent to decode with the ABI.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hyperevm_estimate_gasEstimate gas, HyperEVMARead-onlyInspect
Estimate the gas a transaction would use on HyperEVM (eth_estimateGas) and what it would cost at the current gas price, in gas units, gwei and HYPE. Give to, plus value in HYPE and calldata for a contract call, and the sender when the call depends on it. Use before sending a transaction or to price a batch; for the gas price alone use hyperevm_gas. A transaction that would revert is 422 with the reason, uncharged. Example: to=0x000000000000000000000000000000000000dEaD. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x recipient or contract address | |
| data | No | Optional 0x calldata for a contract call | |
| from | No | 0x sender address (default: an empty address) | |
| value | No | Amount of HYPE to send, in HYPE (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint, destructiveHint false, idempotentHint false), and the description adds meaningful context beyond them: reverting transactions return 422 with a reason and are uncharged, each call is billed ($0.01 via x402 USDC or card key, first 25 free, failed calls free), and repeats are not free. That billing/idempotency detail is exactly what an agent needs before retry loops.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and scope are front-loaded, then inputs, then use cases, then pricing. It is dense but nearly every clause carries information; the final sentence bundles the read-only claim with billing and repeat-charge caveats and could be split for readability.
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?
No output schema exists, so the description compensates by naming the return units (gas units, gwei, HYPE) and the failure mode (422 with revert reason, uncharged). For a read-only estimation tool with a fully documented schema, nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description still adds routing semantics by saying 'from' is needed 'when the call depends on it' and that 'value' is denominated in HYPE, plus a concrete example address. It doesn't add format details beyond the schema, so it isn't a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Estimate the gas a transaction would use on HyperEVM (eth_estimateGas)') and explicitly names what it also returns: gas units, gwei, and HYPE cost. It distinguishes itself from hyperevm_gas by scoping that sibling to 'the gas price alone'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('before sending a transaction or to price a batch') and an explicit alternative with its selection condition ('for the gas price alone use hyperevm_gas'). It also names which inputs to supply for a contract call versus a plain transfer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hyperevm_gasHyperEVM gas priceARead-onlyInspect
Current gas price on HyperEVM (eth_gasPrice): gas price, base fee and suggested priority fee in gwei, plus what a plain HYPE transfer (21,000 gas) costs right now. Takes no input. Use before sending a transaction or to decide whether to wait; for the fee a past transaction actually paid use hyperevm_receipt. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Optional: comma-separated top-level result keys to keep, for a smaller answer (for example only=price,symbol); unknown keys are ignored and an empty match returns the full result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: it discloses per-call billing ($0.01 via x402 USDC or card key, first 25 free, failed calls free) and that repeated calls are charged, which is exactly why idempotentHint is false. It also restates the read-only, no-mutation nature in operational terms ('reads or computes only and changes nothing'), adding billing/auth context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the returned values, then usage, then billing — a sensible order with no filler sentences. It is on the dense side and the price/credits clause is commercial rather than operational, but it does carry real decision value about repeat calls.
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?
No output schema exists, and the description compensates fully by naming the returned fields and the practical transfer-cost figure. The only gap is the unmentioned `only` parameter, which the description actively contradicts with 'Takes no input' rather than merely omitting.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description says 'Takes no input', but the schema actually exposes an optional `only` filter for trimming result keys. That statement is simply wrong about the tool's surface and could lead an agent to never use the projection parameter, which is the one option available for controlling response size.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Current gas price on HyperEVM', eth_gasPrice) and enumerates exactly what is returned: gas price, base fee, suggested priority fee in gwei, and the cost of a 21,000-gas HYPE transfer. That return content plus the explicit contrast with hyperevm_receipt lets an agent separate it from the gas_history, estimate_gas and receipt siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear positive context ('use before sending a transaction or to decide whether to wait') and names an explicit alternative with its selection condition ('for the fee a past transaction actually paid use hyperevm_receipt'). It omits the two other nearby confusables, hyperevm_gas_history and hyperevm_estimate_gas, so the routing map is clear but not complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hyperevm_gas_historyHyperEVM gas history, gas priceARead-onlyInspect
Gas price history on HyperEVM (eth_feeHistory): base fee in gwei for each of the last N blocks (5-100, default 20), how full each block was, and the 10th, 50th and 90th percentile priority fees, with the low, average and high base fee over the window. Use to judge whether fees are rising, pick a priority fee or time a transaction; for the current price alone use hyperevm_gas. Example: blocks=20. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks, 5-100 (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=false, and the description reinforces this with 'reads or computes only and changes nothing'. The pricing details (first 25 requests free, $0.01 per call via x402 USDC or card key) add useful context for the non-idempotent, charged nature of the tool, but the return formatting and data-window freshness are not elaborated beyond the field list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the returned data, then usage and alternative, then an example, then pricing — each sentence is purposeful with no filler. The density is high but every clause adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully enumerates the returned fields and their units, so callers know what to expect. For a one-parameter read-only tool, nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already documents the 5-100 range and default of 20 for the single parameter. The description repeats this information and adds only an example value, which does not meaningfully extend 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?
States the specific verb and resource (gas price history on HyperEVM via eth_feeHistory) and enumerates the returned fields: base fee in gwei per block, block fullness, 10th/50th/90th percentile priority fees, and low/average/high base fee. It explicitly distinguishes itself from the sibling hyperevm_gas, which returns only the current 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?
Gives concrete decision contexts — judge whether fees are rising, pick a priority fee, time a transaction — and names the alternative with the condition that selects it: 'for the current price alone use hyperevm_gas'. It also supplies a usage example (blocks=20).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hyperevm_is_contractHyperEVM is-contract checkARead-onlyInspect
Check whether a 0x address on HyperEVM is a smart contract or a plain wallet: bytecode size, and whether it is an EIP-1167 minimal proxy and which implementation it points to. Use before sending funds or approving a spender; for a fuller risk verdict use check_counterparty. A malformed address is rejected with 400, uncharged. Example: address=0xb88339CB7199b77E23DB6E890353E22632Ba630f. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavior the annotations do not carry: malformed addresses are rejected with 400 and are uncharged, pricing is $0.01/call via x402 USDC or a card key with 25 free calls, failed calls are free, and repeated calls are billed again (which explains idempotentHint=false). The only redundancy is 'reads or computes only and changes nothing', which merely restates readOnlyHint=true and destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the capability and its returned fields, then usage, then error/pricing caveats — a sensible priority order with no filler sentences. It runs slightly long by folding example, pricing, and payment rails into one block, but every clause carries information an agent can act on.
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 no output schema, the description must convey return content, and it does name the key fields (bytecode size, proxy flag, implementation). Combined with error semantics and cost model, an agent has enough to call it correctly; only the exact response shape is left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is self-explanatory, so the schema does the heavy lifting. The description still adds a concrete well-formed example address, which helps an agent format the 0x input correctly, though it does not discuss checksum or case handling.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (check whether an address on HyperEVM is a contract or a wallet) and goes further by naming the exact payload: bytecode size, EIP-1167 minimal-proxy status, and implementation address. The chain qualifier 'on HyperEVM' cleanly separates it from the ~20 other *_is_contract siblings without needing the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use before sending funds or approving a spender') and an explicit alternative for a different need ('for a fuller risk verdict use check_counterparty'). An agent knows both when to pick this tool and when to route elsewhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hyperevm_logsHyperEVM event logsARead-onlyInspect
Recent contract event logs on HyperEVM (eth_getLogs): the events a contract emitted over the last N blocks (1-1,000, default 50), optionally filtered by topic0 (the 0x 32-byte event signature hash). Returns up to 100 logs with block, transaction hash and topics. Use to watch transfers or contract events; for one transaction's outcome use hyperevm_receipt. Example: address=0xb88339CB7199b77E23DB6E890353E22632Ba630f. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks to scan (1-1000, default 50) | |
| topic0 | No | Optional 0x event signature hash to filter by | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the annotations by disclosing the 100-log return cap, the fields returned (block, transaction hash, topics), and the pricing model ($0.01/call via x402 USDC or card key, first 25 free, failed calls free). The note that 'each call is charged, so repeats are not free' usefully corroborates the idempotentHint=false annotation. The closing 'Reads or computes only and changes nothing' merely restates readOnlyHint and earns no credit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and the eth_getLogs analogue, then scope, return shape, the alternative, an example, and pricing. Every sentence is doing a distinct job; the only slack is the redundant read-only restatement at the end.
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 no output schema, the description steps in to describe the return shape and the 100-log truncation cap, and it covers cost and the alternative tool. A brief note on what happens when more than 100 logs exist in the block window would make it fully complete, but an agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents blocks (1-1000, default 50) and topic0. The description adds only marginal detail ('0x 32-byte event signature hash') and an example address value, which is correct but thin given the schema already carries the range and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource ('Recent contract event logs ... eth_getLogs') and states the exact scope: events a contract emitted over the last N blocks, optionally filtered by topic0. It also explicitly distinguishes itself from the sibling hyperevm_receipt for single-transaction outcomes, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit usage ('Use to watch transfers or contract events') and names the alternative plus the condition that selects it ('for one transaction's outcome use hyperevm_receipt'). It even supplies a concrete address example, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hyperevm_nonceHyperEVM nonce, account nonceARead-onlyInspect
Read the transaction count (nonce) of a 0x address on HyperEVM, both confirmed and including pending transactions. Use to build the next transaction or to tell whether an address has ever sent anything; for its balance use hyperevm_balance. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/destructive=false, and the description adds real value on top: pending vs confirmed semantics, malformed address returns 400 and is uncharged, and per-call pricing with the note that repeats are not free (which explains why idempotentHint is false). It still does not say what happens if the address has no history or how pending inclusion could differ across nodes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core operation and use cases, then commercial/error details. Dense but nearly every clause is actionable; the pricing sentence is slightly over-packed (x402, card key, free tier, failed calls) compared with the rest.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the definition covers input format, error behaviour, cost, and side-effect profile. The one gap is that it implies two counts (confirmed and pending-inclusive) without saying whether both are returned or how they are labelled.
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 a single address parameter, so the baseline is 3; the description goes beyond it by requiring the 0x format, supplying a concrete example address, and specifying the failure mode (400, uncharged) for malformed input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the transaction count (nonce) of a 0x address on HyperEVM') and scopes it to both confirmed and pending-inclusive counts, so it is clearly distinguishable from sibling balance/tx tools on the same network.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases (build the next transaction, determine whether an address has ever sent anything) and explicitly routes the balance question to hyperevm_balance, so an agent knows both when to pick this tool and which sibling to prefer for a neighbouring task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hyperevm_proxyProxy implementation, HyperEVMARead-onlyInspect
Find the implementation behind a proxy contract on HyperEVM: reads the EIP-1967 implementation, beacon and admin slots, EIP-1822 (UUPS), the older OpenZeppelin layout and EIP-1167 minimal-proxy bytecode, and names the kind found. Use before trusting or decoding a contract whose code can be swapped by its admin; for a fuller risk verdict use contract_risk. A malformed address is 400; an address without code is 404, both uncharged. Example: address=0xb88339CB7199b77E23DB6E890353E22632Ba630f. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/destructiveHint=false annotations by disclosing the cost model ($0.01/call, first 25 free, failed calls free), the error semantics (malformed address = 400, no code = 404, both uncharged), and why repeats cost money despite identical results — which explains the idempotentHint=false rather than contradicting it. It also states plainly that the tool changes nothing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and detection surface are front-loaded in the first sentence; usage guidance, error codes, an example, and pricing follow in descending order of importance. No sentence is filler — even the pricing clause informs whether an agent should batch or repeat calls.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers invocation, failure modes, cost, and the safety profile, which is enough to call it correctly. Because there is no output schema, the description should say more about the response shape (implementation address, admin/beacon values, kind label), which it only gestures at with 'names the kind found'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema coverage at 100% the baseline is 3, but the description adds real meaning: the address must be a deployed contract (404 if code is absent), format errors surface as 400 uncharged, and a concrete example address is supplied. It stops short of describing accepted address forms beyond the '0x' hint already in 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?
States a specific verb and resource ('find the implementation behind a proxy contract on HyperEVM') and enumerates the concrete mechanisms probed (EIP-1967 implementation/beacon/admin, EIP-1822 UUPS, legacy OZ layout, EIP-1167 bytecode) plus the output ('names the kind found'). This clearly distinguishes it from the many chain-prefixed siblings by naming the chain and from contract_risk by scoping the job to implementation discovery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use before trusting or decoding a contract whose code can be swapped by its admin') and names the alternative for the adjacent need ('for a fuller risk verdict use contract_risk'). The agent knows both when to call this and when to escalate elsewhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hyperevm_receiptHyperEVM transaction receiptARead-onlyInspect
Transaction receipt on HyperEVM (eth_getTransactionReceipt): success or reverted, gas used, effective gas price, fee paid in HYPE, number of event logs and any contract created. Use to confirm a payment or call went through; for sender, value and calldata use hyperevm_tx. Input is a 0x-prefixed 64-hex hash; a pending or unknown hash returns 404, uncharged. Example: hash=0xdcf371c993312e793176e32cdfa78af2101b4aa54df88f8f0051c3fe463e374a. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly=true, destructive=false, idempotent=false), and the description adds real context beyond them: 404 behavior for pending/unknown hashes, no charge on failures, and that each successful call costs $0.01 with the first 25 free. It does not describe response shape beyond the field list or pagination, but for a single-object lookup that is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and return fields are front-loaded, then routing, input format, edge case, and pricing. Dense but nearly every clause carries decision-relevant information; the pricing/free-tier clause at the end is slightly packed together with the read-only statement, costing a point on flow.
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?
No output schema exists, and the description compensates by naming the fields returned. Combined with the 404 behavior, pricing, and read-only guarantee, an agent has everything needed to decide, call, and interpret the result.
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 one required parameter, so the baseline is 3; the description earns above that by restating the 0x-prefixed 64-hex constraint in context and supplying a concrete valid hash example, plus the 404 consequence for a hash that isn't found. Marginal addition over schema, but useful for validation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (transaction receipt on HyperEVM, eth_getTransactionReceipt) and enumerates the exact return fields: success/reverted status, gas used, effective gas price, fee in HYPE, log count, contract created. It explicitly separates itself from hyperevm_tx, so an agent can choose without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete when-to-use ("confirm a payment or call went through") and names the alternative for the complementary case ("for sender, value and calldata use hyperevm_tx"). It also covers the edge case of a pending or unknown hash returning 404 uncharged, removing the main ambiguity an agent would hit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hyperevm_storageStorage slot read, HyperEVMARead-onlyInspect
Read one raw storage slot of a contract on HyperEVM (eth_getStorageAt): the 32-byte word, as a number and, when it holds one, as an address. Slot is a decimal index or a 0x 32-byte key (mapping and proxy slots). Use to inspect contract state that has no getter, owners or implementation pointers; for proxies use hyperevm_proxy. A malformed address or slot is rejected with 400, uncharged. Example: address=0xb88339CB7199b77E23DB6E890353E22632Ba630f. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | Slot: a decimal index (0, 1, 2…) or a 0x 32-byte key | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, non-destructive, open-world and non-idempotent behavior; the description usefully reinforces this ('reads or computes only and changes nothing') and explains WHY repeats are not free (per-call charge, consistent with idempotentHint=false). It adds real context beyond annotations — billing, first-25-free, failed-call refund, and 400-on-malformed-input uncharged — but these are pricing/error details rather than deeper contract-state behavior such as what zero-slot or undeployed addresses return.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the operation, then return shape, then usage and exclusion, then edge cases. Every clause carries information — even the pricing and 400-rejection notes affect agent decision-making about retries — with no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description describes the return value (32-byte word as number, address form when it holds one), covers error handling (400 uncharged), cost model, and the free/paid semantics. Nothing material is missing for a two-parameter read 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?
Schema coverage is 100%, so baseline is 3; the description goes further by explaining what the slot string actually denotes (decimal index or 0x 32-byte key, used for mapping and proxy slots) and gives a concrete address example. That is meaningfully more than the terse schema blurbs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — read one raw storage slot of a contract on HyperEVM — and names the underlying RPC method (eth_getStorageAt) plus the exact return shape (32-byte word as number, and as address when applicable). It also distinguishes itself from the sibling hyperevm_proxy, so an agent can separate the two without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it (inspect contract state that has no getter, owner slots, implementation pointers) and when not to (for proxies use hyperevm_proxy). The slot parameter guidance — decimal index versus 0x 32-byte key for mapping/proxy slots — further helps an agent decide it has the right inputs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hyperevm_token_balanceHyperEVM ERC-20 balanceARead-onlyInspect
ERC-20 token balance of a wallet on HyperEVM (USDC, USDT, WETH or any token, via balanceOf): raw amount, decimals, symbol and the human-readable amount, live from the token contract. Use to check stablecoin or token holdings before a transfer or trade; for the native coin use hyperevm_balance. Both inputs are 0x addresses (40 hex characters); no contract returns 404 and a non-ERC-20 contract 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC, USDT, WETH or DAI, or the 0x ERC-20 contract address | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), and the description reinforces it with "Reads or computes only and changes nothing." It adds genuinely useful non-annotation behavior: error semantics (unknown contract 404, non-ERC-20 422, both uncharged) and billing ($0.01/call, 25 free calls, failed calls free, repeats charged). That billing note also rationalizes the unusual idempotentHint=false, which is a real plus.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and return shape, then usage, then constraints and pricing — a logical order with no filler sentences. It is dense, packing errors, pricing, and billing into one paragraph, but every clause carries information an agent needs.
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?
No output schema exists, and the description compensates by enumerating the return fields. With error codes, pricing, the free tier, the input format, and the native-coin alternative all covered, an agent has everything needed to call it correctly and interpret a failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does add format guidance ("0x addresses, 40 hex characters"), but it overreaches by saying "Both inputs are 0x addresses" when the schema explicitly allows a ticker like USDC/USDT/WETH/DAI for the token parameter — a small inconsistency that could confuse an agent about accepted token input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (ERC-20 balanceOf for a wallet on HyperEVM) and enumerates the exact return fields: raw amount, decimals, symbol, human-readable amount. It also explicitly separates itself from the native-coin sibling (hyperevm_balance), so an agent can pick the right tool without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case ("check stablecoin or token holdings before a transfer or trade") and names the alternative with its selection condition ("for the native coin use hyperevm_balance"). Explicit when-to-use and when-to-use-something-else.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hyperevm_token_infoHyperEVM token info, ERC-20ARead-onlyInspect
Look up the name, symbol, decimals and total supply of an ERC-20 token contract on HyperEVM, live from the contract. Use to identify an unknown token address or to format raw amounts; for a holder's balance use hyperevm_token_balance. Input is a ticker (USDC, WETH…) or the token's 0x contract address; an address that is not an ERC-20 contract returns 422, uncharged. Example: token=0xb88339CB7199b77E23DB6E890353E22632Ba630f. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/destructive/openWorld, but the description adds real behavioral context: live on-chain read, a 422 for non-ERC-20 addresses with no charge, and per-call pricing with the first 25 free and failed calls free. That also explains why idempotentHint is false (repeats are billed). It does not describe output shape, though the field list largely covers 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?
Front-loaded with what it does, then the alternative route, then input format and cost. Mostly dense and purposeful, with minor duplication of the readOnly annotation in 'Reads or computes only and changes nothing' and a slightly long billing tail.
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?
There is no output schema, and the description compensates by listing the returned fields. For a one-parameter read tool, an agent has everything needed: input forms, error case, cost model, and a redirect for the adjacent balance query.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents that the argument accepts a ticker or 0x address, so the description mainly restates it. It still adds value with a concrete address example and the failure semantics (non-ERC-20 address returns 422 uncharged), which the schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: look up name, symbol, decimals and total supply of an ERC-20 contract on HyperEVM, live from the contract. It explicitly names the sibling it is not (hyperevm_token_balance) so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases (identify an unknown token address, format raw amounts) and an explicit exclusion pointing to hyperevm_token_balance for holder balances. Nothing about when to choose this vs. alternatives is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hyperevm_txHyperEVM transactionARead-onlyInspect
Look up a HyperEVM transaction by hash: sender, recipient, value in HYPE, nonce, gas limit, the 4-byte function selector and its block. Use to see what was sent or whether it exists; for success or failure and fees paid use hyperevm_receipt, for emitted events hyperevm_logs. Input is a 0x-prefixed 64-hex hash; an unknown hash returns 404, uncharged. Example: hash=0xdcf371c993312e793176e32cdfa78af2101b4aa54df88f8f0051c3fe463e374a. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, openWorld and non-idempotent, so the bar is lower; the description nonetheless adds real operational context: unknown hash returns 404 and is uncharged, failed calls are free, and repeat calls are charged because the operation is billed per call. It does not describe result formatting or latency, so it stops just short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and field list, then alternatives, input format, error behavior, price, and safety. Every sentence carries information, though the pricing/billing sentence is dense and slightly long-winded for what it adds.
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 no output schema, the description compensates by listing the payload fields, and it covers input format, error semantics, billing, and safety for a single-parameter read tool. An agent has everything needed to call it and interpret a 404 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% and the description largely repeats the schema's '0x-prefixed 64-hex hash' wording, which earns no credit. The concrete example hash is the one addition, giving the agent a valid sample value for the single required input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Look up a HyperEVM transaction by hash') and enumerates the returned fields (sender, recipient, value in HYPE, nonce, gas limit, function selector, block). It explicitly separates itself from hyperevm_receipt and hyperevm_logs, so an agent can pick the right tool without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('see what was sent or whether it exists') and routes the alternatives by purpose: hyperevm_receipt for success/failure and fees, hyperevm_logs for emitted events. The exclusion boundaries are stated rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ink_allowanceToken allowance, Ink ERC-20ARead-onlyInspect
ERC-20 token allowance on Ink: how much a spender may move from an owner's wallet (allowance), raw and in token units, and whether the approval is unlimited. Use to check an approval before a swap or to audit risky open approvals; for the owner's balance use ink_token_balance. Token is a ticker (USDC, USDT, WETH…) or a 0x contract; a missing contract is 404 and a non-ERC-20 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | 0x wallet that gave the approval | |
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address | |
| spender | Yes | 0x contract or wallet allowed to spend (the example is Uniswap Permit2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds far more than the annotations: cost model ($0.01/call, first 25 free, failed calls free), error semantics (404 for missing contract, 422 for non-ERC-20, both uncharged), and the fact that reads are charged and non-idempotent in billing terms. Annotations already cover readOnly/destructive; the description supplies the pricing and failure behavior an agent needs to avoid wasteful retries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core definition and return shape, then purpose, then parameter/billing detail. Dense but every clause carries information; the pricing and error sentences slightly crowd an otherwise tight definition.
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?
No output schema, so the description must describe returns — it does (raw value, human units, unlimited flag). With a simple 3-param read tool, the description covers invocation, returns, cost, and error modes with nothing material missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description goes further by defining acceptable token forms (ticker or 0x contract) and the failure semantics of a bad contract, which is a real behavioral consequence of the token parameter not captured in 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?
Explicitly states the verb/resource pairing: ERC-20 allowance on Ink, returning raw + token-unit amounts and an unlimited-approval flag. It distinguishes itself from the sibling ink_token_balance by naming it, which matters in a fleet of ~30 chain-prefixed allowance tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases (pre-swap approval check, audit of risky open approvals) and an explicit exclusion routing balance queries to ink_token_balance. That is when-to-use, when-not, and the alternative all in one sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ink_balanceInk balance, native coinARead-onlyInspect
Native ETH balance (eth_getBalance) of any 0x wallet address on Ink at the latest block, in wei and in ETH. Use to check whether a wallet can pay gas or a transfer; for ERC-20 tokens use ink_token_balance, for all holdings at once use wallet_portfolio. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet or contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so safety is largely covered. The description still adds genuinely non-derivable context: the x402/card-key pricing model, that malformed input returns 400 uncharged, that failed calls are free, and that repeated calls are billed (which explains idempotentHint=false on a pure read). It does not describe the response shape beyond units.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the operation and chain, then alternatives, then error/cost behavior. Dense but nearly every clause carries information. The billing detail is slightly verbose relative to a single-purpose read tool, keeping it just below a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with full annotation and schema coverage, the description covers purpose, alternatives, error semantics, side effects and cost. The only gap is return-value structure (field names beyond 'wei and ETH'), which is minor given no 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?
Only one parameter and schema description coverage is 100%, so the schema already documents 'address'. The description reinforces the expected format ('any 0x wallet address', with a concrete example), but adds no constraint the schema lacks, so the baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource pair (native ETH balance via eth_getBalance) bound to a specific chain (Ink) and block tag (latest), plus return units (wei and ETH). It explicitly distinguishes itself from ink_token_balance and wallet_portfolio, so an agent can pick it without opening 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?
Gives a concrete decision rule: use to check whether a wallet can pay gas or a transfer; for ERC-20 use ink_token_balance; for all holdings use wallet_portfolio. Both alternatives are named with the condition that selects them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ink_blockInk block numberARead-onlyInspect
Latest block number and block details on Ink, or any block by decimal number: hash, timestamp, transaction count, gas used and limit, base fee in gwei and producer. Use for timestamps and confirmation counts; for current fees use ink_gas. A block that does not exist yet returns 404, uncharged. Example: number=latest. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| number | No | Block number, or 'latest' (default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces this ('Reads or computes only and changes nothing'). It adds context annotations cannot express: pricing ($0.01/call, first 25 free), that failed/404 calls are free, and that repeat calls are charged — which explains the otherwise puzzling idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, return fields, then routing, then billing, then a safety note — good ordering. Slight redundancy between 'Price $0.01/call ... failed calls free' and 'each call is charged, so repeats are not free', but the billing facts are decision-relevant rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by enumerating every returned field. With a single optional parameter, no nested objects, and clear error and cost behavior, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents number as 'Block number, or latest (default)'. The description adds the meaningful format detail that the value is a decimal number (versus hex, a real ambiguity for block identifiers) and supplies an example 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?
States a specific verb and resource ('Latest block number and block details on Ink, or any block by decimal number') and enumerates the returned fields (hash, timestamp, tx count, gas used/limit, base fee, producer). It is clearly separable from ink_gas and ink_tx in a large sibling set.
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 routes usage: 'Use for timestamps and confirmation counts; for current fees use ink_gas', naming the alternative and the condition that selects it. It also covers the missing-block case ('returns 404, uncharged') and gives a concrete invocation example (number=latest).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ink_callEth call, Ink contract callARead-onlyInspect
Read-only contract call on Ink (eth_call): send ABI-encoded calldata to a contract at the latest block and get the raw return data, without a transaction or gas. Use to read any view function that has no dedicated tool (the example reads USDC totalSupply, selector 0x18160ddd); decode the result with the function's ABI. Calldata up to 8 KB; a call that reverts is 422 with the reason, uncharged. Example: to=0xF1815bd50389c46847f0Bda824eC8da914045D14, data=0x18160ddd. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x contract address to call | |
| data | Yes | 0x ABI-encoded calldata: 4-byte selector plus arguments | |
| from | No | Optional 0x sender address for calls that check msg.sender |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: latest-block semantics, no transaction or gas, 8 KB calldata cap, revert returns 422 with reason and is uncharged, $0.01 per call via x402/card, first 25 free. It even explains the idempotentHint=false implication ('each call is charged, so repeats are not free').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and constraints, with the example mid-paragraph. Slightly redundant on pricing ('uncharged' / 'failed calls free' / 'each call is charged, so repeats are not free'), but nearly every sentence carries usable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by saying the return is raw return data that must be decoded with the function's ABI. Error behavior, limits, and cost are all present, so an agent has everything needed to call 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%, so baseline is 3; the description adds concrete example values (to=0xF181..., data=0x18160ddd), clarifies that data is selector+args and must be decoded via the ABI, and states the 8 KB calldata limit, which constrains the data parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('read-only contract call on Ink (eth_call)') plus the exact mechanism (ABI-encoded calldata, latest block, raw return data). It also distinguishes itself from the per-chain dedicated token/balance tools by scoping itself to 'any view function that has no dedicated tool'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use this for view functions lacking a dedicated tool, implying ink_token_balance/ink_storage etc. are preferred where they exist. It doesn't name a specific alternative sibling or state a when-not-to-use case, so it stops short of the top mark.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ink_estimate_gasEstimate gas, InkARead-onlyInspect
Estimate the gas a transaction would use on Ink (eth_estimateGas) and what it would cost at the current gas price, in gas units, gwei and ETH. Give to, plus value in ETH and calldata for a contract call, and the sender when the call depends on it. Use before sending a transaction or to price a batch; for the gas price alone use ink_gas. A transaction that would revert is 422 with the reason, uncharged. Example: to=0x000000000000000000000000000000000000dEaD. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x recipient or contract address | |
| data | No | Optional 0x calldata for a contract call | |
| from | No | 0x sender address (default: an empty address) | |
| value | No | Amount of ETH to send, in ETH (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: revert behavior is a 422 with reason and uncharged, pricing is $0.01/call via x402 USDC or card key with first 25 free and failed calls free, and repeats are billed (consistent with idempotentHint=false). This is exactly the extra context the readOnly/destructive hints cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the estimate/cost purpose comes first, then usage, then error handling and pricing. The pricing/payment sentence is long but each clause (cost, free tier, failed-call policy, non-idempotency) carries distinct decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still specifies the return units (gas, gwei, ETH) and the failure mode (422 with reason). Combined with 100% parameter coverage, an agent has everything needed to call and interpret this 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?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning: value is denominated in ETH, from is only needed when the call depends on the sender (and defaults to an empty address per schema), and it gives a concrete example address for to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (estimate), the resource (gas for a transaction), the chain (Ink), and the underlying RPC method (eth_estimateGas), plus the economic result (cost in gas units, gwei, ETH). This is clearly distinguishable from the sibling ink_gas, which it names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it ('before sending a transaction or to price a batch') and when not to ('for the gas price alone use ink_gas'). It also tells the agent which fields to supply depending on the scenario (from only when the call depends on the sender).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ink_gasInk gas priceARead-onlyInspect
Current gas price on Ink (eth_gasPrice): gas price, base fee and suggested priority fee in gwei, plus what a plain ETH transfer (21,000 gas) costs right now. Takes no input. Use before sending a transaction or to decide whether to wait; for the fee a past transaction actually paid use ink_receipt. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Optional: comma-separated top-level result keys to keep, for a smaller answer (for example only=price,symbol); unknown keys are ignored and an empty match returns the full result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/destructive/openWorld, yet the description adds non-obvious commercial behavior: $0.01/call via x402 USDC or card key, first 25 free, failed calls free, and that repeats are not free because each call is charged. It partially repeats the readOnly annotation ('reads or computes only and changes nothing'), and does not describe caching or freshness of the quoted price.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the resource and what is returned, then usage, then pricing — a sensible order with no filler paragraphs. There is some redundancy at the tail where 'reads or computes only and changes nothing' restates the annotation and 'each call is charged' echoes the pricing sentence.
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?
No output schema exists, and the description compensates well by naming the returned values and the concrete 21,000-gas transfer cost. Payment mechanics and free-tier limits are covered; the only gap is that the optional `only` result-filter is left entirely to the schema while the text claims no input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the optional 'only' key-filter is fully documented by the schema, which sets the baseline at 3. The description actually works against this slightly by saying 'Takes no input' when one optional parameter exists, adding no meaning about filtering behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Current gas price on Ink') and enumerates the returned fields (gas price, base fee, suggested priority fee, 21,000-gas transfer cost), which no sibling duplicates. It also names the distinguishing sibling ink_receipt for historical fees, so an agent can separate it from ink_gas_history and ink_estimate_gas without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use before sending a transaction or to decide whether to wait' gives a clear trigger condition, and 'for the fee a past transaction actually paid use ink_receipt' gives an explicit alternative. It does not address the other near siblings (ink_estimate_gas, ink_gas_history), so it stops short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ink_gas_historyInk gas history, gas priceARead-onlyInspect
Gas price history on Ink (eth_feeHistory): base fee in gwei for each of the last N blocks (5-100, default 20), how full each block was, and the 10th, 50th and 90th percentile priority fees, with the low, average and high base fee over the window. Use to judge whether fees are rising, pick a priority fee or time a transaction; for the current price alone use ink_gas. Example: blocks=20. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks, 5-100 (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the cost model ($0.01/call via x402 USDC or card key, first 25 free, failed calls free) and the fact that repeated identical calls are still billed, which explains the idempotentHint=false. The read-only claim matches readOnlyHint=true rather than 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?
Front-loads the resource, the returned fields, and then the when-to-use routing; every sentence is functional. It is dense for one paragraph — the pricing/auth detail competes for attention with the core semantics — but nothing is genuinely superfluous.
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?
There is no output schema, so the description carries the return-value burden itself, and it does so thoroughly while also covering cost, payment path, and safety. An agent has everything needed to decide and call 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% and the single 'blocks' parameter is already documented as 5-100 with default 20, so the description's repetition of that range and its 'blocks=20' example add little new meaning. Baseline 3 applies when the schema carries the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource (gas price history on Ink), identifies the underlying RPC method (eth_feeHistory), and enumerates exactly what comes back: base fee in gwei per block, block fullness, and 10th/50th/90th percentile priority fees plus low/average/high over the window.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use conditions (judge whether fees are rising, pick a priority fee, time a transaction) and explicitly routes the agent to the sibling ink_gas when only the current price is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ink_is_contractInk is-contract checkARead-onlyInspect
Check whether a 0x address on Ink is a smart contract or a plain wallet: bytecode size, and whether it is an EIP-1167 minimal proxy and which implementation it points to. Use before sending funds or approving a spender; for a fuller risk verdict use check_counterparty. A malformed address is rejected with 400, uncharged. Example: address=0xF1815bd50389c46847f0Bda824eC8da914045D14. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, but the description adds what the payload reports, error behavior (malformed address → 400, uncharged), and the billing model (price per call, first 25 free, failures free). It even reconciles the non-idempotent billing effect with 'reads or computes only and changes nothing'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and usage, then behavior, then pricing. Every clause carries information, though the pricing/credit sentence is dense and slightly competes with the core purpose for attention.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description fully covers return contents, failure mode, cost, and the alternative tool. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes beyond it by giving a concrete example address and specifying how an invalid address is handled (rejected with 400, uncharged). It does not document expected address formats beyond '0x', which keeps it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check whether a 0x address on Ink is a smart contract or a plain wallet') and enumerates what the answer contains: bytecode size, EIP-1167 detection, and implementation address. This clearly separates it from sibling reads like ink_balance or ink_proxy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('before sending funds or approving a spender') and names the alternative for a different need ('for a fuller risk verdict use check_counterparty'). The agent knows both the trigger case and the escape hatch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ink_logsInk event logsARead-onlyInspect
Recent contract event logs on Ink (eth_getLogs): the events a contract emitted over the last N blocks (1-1,000, default 50), optionally filtered by topic0 (the 0x 32-byte event signature hash). Returns up to 100 logs with block, transaction hash and topics. Use to watch transfers or contract events; for one transaction's outcome use ink_receipt. Example: address=0xF1815bd50389c46847f0Bda824eC8da914045D14. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks to scan (1-1000, default 50) | |
| topic0 | No | Optional 0x event signature hash to filter by | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses the block-range cap (1-1,000, default 50), the 100-log return ceiling, per-call pricing ($0.01 via x402/card key), a free tier of 25 calls, and that failed calls are free. The line "each call is charged, so repeats are not free" actively explains the idempotentHint=false annotation, and "changes nothing" reinforces readOnlyHint with concrete consequence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns and how to scope it, then usage routing, then cost. The pricing/key sentence is somewhat dense but justified because cost changes agent behavior; the closing "reads or computes only" clause partially duplicates readOnlyHint.
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 3-parameter read tool with no output schema, the description covers scope limits, return contents, the sibling alternative, and payment mechanics. An agent has everything needed to decide whether to call it and what to expect back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds modest value by restating the block window and default, spelling out that topic0 is the 0x 32-byte event signature hash, and giving a worked address example. It does not add format details the schema lacks (e.g., address checksum expectations or topic0 hex length enforcement).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("contract event logs on Ink (eth_getLogs)"), defines the scan window, and describes the return shape (up to 100 logs with block, transaction hash, topics). It also distinguishes itself from the nearest sibling by naming ink_receipt for single-transaction outcomes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit positive use case ("watch transfers or contract events") and names the alternative ink_receipt with the condition that selects it. It does not address overlap with ink_token_transfers, which is the more direct sibling for transfer-watching, leaving one routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ink_nonceInk nonce, account nonceARead-onlyInspect
Read the transaction count (nonce) of a 0x address on Ink, both confirmed and including pending transactions. Use to build the next transaction or to tell whether an address has ever sent anything; for its balance use ink_balance. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint true, destructiveHint false), and the description adds context annotations cannot express: malformed addresses return 400 and are uncharged, pricing is $0.01/call with first 25 free and failed calls free, and repeats are billed again. That last point reinforces and explains idempotentHint=false rather than 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?
Purpose and the sibling redirect are front-loaded, and the example and pricing follow. It is dense but nearly every clause carries information; the pricing/credits sentence is the one piece that runs long relative to the rest.
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 one parameter, no output schema, and full schema coverage, the description covers what an agent needs: semantics, the pending/confirmed distinction in the result, error behavior, and cost. It stops short of describing the exact returned fields, but without an output schema that is a minor omission for a single-value read.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is documented as "0x address", so the baseline is already met. The description goes further by supplying a concrete example address and stating the failure behavior for a malformed address, which is meaning the schema does not carry.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Read the transaction count (nonce) of a 0x address on Ink") plus the scope detail of confirmed vs pending. It names the sibling it is not ("for its balance use ink_balance"), so an agent can distinguish it from ink_balance and the per-chain *_nonce family without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases (build the next transaction, determine whether an address has ever sent anything) and explicitly redirects balance lookups to ink_balance. When-to-use and the alternative are both stated, not inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ink_proxyProxy implementation, InkARead-onlyInspect
Find the implementation behind a proxy contract on Ink: reads the EIP-1967 implementation, beacon and admin slots, EIP-1822 (UUPS), the older OpenZeppelin layout and EIP-1167 minimal-proxy bytecode, and names the kind found. Use before trusting or decoding a contract whose code can be swapped by its admin; for a fuller risk verdict use contract_risk. A malformed address is 400; an address without code is 404, both uncharged. Example: address=0xF1815bd50389c46847f0Bda824eC8da914045D14. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=false; the description reinforces this with 'Reads or computes only and changes nothing' and the crucial cost caveat 'each call is charged, so repeats are not free,' which explains the non-idempotent hint. It also adds pricing, the first-25-free allowance, and error code behavior—context not present in 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?
Front-loaded with the core action and covered standards, followed by the when-to-use rule, error semantics, example, and pricing. Dense but every sentence carries actionable information; pricing and free-call details are relevant because charging affects repeat-call behavior.
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?
No output schema exists, and the description partly compensates by saying it 'names the kind found' and lists the slots/bytecode it inspects. It could be clearer about the returned structure (e.g., fields for implementation address, admin, proxy type), but the combination of annotations, full param docs, and error semantics leaves little ambiguity for a single-parameter read 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?
Schema description coverage is 100% and the single 'address' parameter is documented as '0x contract address.' The description only adds a concrete example address to confirm the expected format; it does not deepen semantics beyond the schema. 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?
States a specific verb and resource ('Find the implementation behind a proxy contract on Ink') and enumerates exactly which storage slots and proxy standards it reads (EIP-1967, beacon, admin, EIP-1822/UUPS, OpenZeppelin legacy layout, EIP-1167). This clearly separates it from ink_is_contract, ink_storage, ink_call, and its per-chain proxy siblings such as eth_proxy and base_proxy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition ('Use before trusting or decoding a contract whose code can be swapped by its admin') and names the alternative tool with its selection condition ('for a fuller risk verdict use contract_risk'). It also discloses error semantics (400 malformed, 404 no code), which helps the agent anticipate failure modes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ink_receiptInk transaction receiptARead-onlyInspect
Transaction receipt on Ink (eth_getTransactionReceipt): success or reverted, gas used, effective gas price, fee paid in ETH, number of event logs and any contract created. Use to confirm a payment or call went through; for sender, value and calldata use ink_tx. Input is a 0x-prefixed 64-hex hash; a pending or unknown hash returns 404, uncharged. Example: hash=0x31e16195b9b6d9da5303988095e0dd5ee278693cb920de7d09fcee624c4f4733. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context the annotations cannot carry: pending/unknown hashes return 404 and are uncharged, successful calls cost $0.01 via x402 USDC or a card key with the first 25 free, and the 'each call is charged, so repeats are not free' line explains why idempotentHint=false. The 'reads or computes only and changes nothing' sentence mostly restates readOnlyHint, but the payment/failure semantics are genuinely new information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return contents, then usage, then input contract, then pricing — a sensible order with little waste. The pricing/free-tier clause is somewhat long relative to its selection value, but it is not 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?
There is no output schema, and the description compensates by enumerating the returned receipt fields, so an agent knows what it will get without guessing. With a single fully-documented parameter and error/fee behavior spelled out, nothing needed to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single hash parameter, so the baseline is 3; the description earns one more by restating the format inline ('0x-prefixed 64-hex hash'), supplying a concrete example hash, and documenting the failure behavior for a well-formed but pending/unknown hash.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb/resource ('Transaction receipt on Ink') and enumerates exactly what comes back (status, gas used, effective gas price, fee in ETH, log count, contract created). It also explicitly separates itself from the sibling ink_tx ('for sender, value and calldata use ink_tx'), so an agent can choose without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use to confirm a payment or call went through' gives the positive case, and 'for sender, value and calldata use ink_tx' gives the named alternative with the condition that selects it. The pending/unknown → 404 behavior adds a concrete exclusion case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ink_storageStorage slot read, InkARead-onlyInspect
Read one raw storage slot of a contract on Ink (eth_getStorageAt): the 32-byte word, as a number and, when it holds one, as an address. Slot is a decimal index or a 0x 32-byte key (mapping and proxy slots). Use to inspect contract state that has no getter, owners or implementation pointers; for proxies use ink_proxy. A malformed address or slot is rejected with 400, uncharged. Example: address=0xF1815bd50389c46847f0Bda824eC8da914045D14. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | Slot: a decimal index (0, 1, 2…) or a 0x 32-byte key | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint/destructiveHint already covering the safety profile, the description adds genuinely new behavior: malformed address or slot returns 400 and is uncharged, failed calls are free, and per-call billing explains why idempotentHint is false ('repeats are not free'). What it omits is the behavior when the optional slot argument is absent (presumably slot 0), which is the one operational gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and slot format are front-loaded before pricing details, and nearly every sentence carries information. The pricing/free-tier sentence and the example are dense but justified; the proc-macro style semicolon chaining (slot formats, error codes, billing) makes it slightly harder to scan than it needs to be.
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 2-parameter read with no output schema, the description covers return shape, error semantics, cost, and sibling routing — enough to invoke correctly. The missing piece is the optional-slot default behavior, which the schema does not state either.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns an extra point by explaining why a slot can be a decimal index versus a 0x 32-byte key (mapping and proxy slots) and by giving a concrete address example. It does not clarify the default when slot is omitted, despite slot being optional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read one raw storage slot of a contract on Ink'), names the underlying RPC (eth_getStorageAt), and describes the returned shape (32-byte word as number, and as an address when applicable). It also scopes itself against the sibling ink_proxy, so an agent can route correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('inspect contract state that has no getter, owners or implementation pointers') and an explicit alternative ('for proxies use ink_proxy'). Both the positive case and the hand-off case are stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ink_token_balanceInk ERC-20 balanceARead-onlyInspect
ERC-20 token balance of a wallet on Ink (USDC, USDT, WETH or any token, via balanceOf): raw amount, decimals, symbol and the human-readable amount, live from the token contract. Use to check stablecoin or token holdings before a transfer or trade; for the native coin use ink_balance. Both inputs are 0x addresses (40 hex characters); no contract returns 404 and a non-ERC-20 contract 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC, USDT, WETH or DAI, or the 0x ERC-20 contract address | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld, but the description goes well beyond them: it discloses error semantics (404 for no contract, 422 for non-ERC-20, both uncharged), pricing ($0.01/call, first 25 free, failed calls free), and that repeats are billed — which usefully explains the non-obvious idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what it does and the sibling routing, then pricing/error details last — correct ordering. It is dense and packs pricing, error codes, and validation into one paragraph, so a little tightening would help, but no sentence is pure 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?
No output schema exists, yet the description enumerates the return shape (raw amount, decimals, symbol, human-readable amount). Combined with auth/billing and error behavior, an agent has everything needed to call it and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds address validation ('40 hex characters') but then says 'Both inputs are 0x addresses', which conflicts with the schema's statement that token may be a ticker like USDC/USDT — that ambiguity slightly undercuts rather than sharpens parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (read ERC-20 balanceOf for a wallet on Ink) and enumerates what is returned (raw amount, decimals, symbol, human-readable amount). It also explicitly distinguishes itself from the sibling ink_balance by naming the native-coin case as out of 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?
Gives an explicit when-to-use ('check stablecoin or token holdings before a transfer or trade') and an explicit alternative ('for the native coin use ink_balance'). The routing decision between sibling balance tools is fully resolvable from the description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ink_token_infoInk token info, ERC-20ARead-onlyInspect
Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Ink, live from the contract. Use to identify an unknown token address or to format raw amounts; for a holder's balance use ink_token_balance. Input is a ticker (USDC, WETH…) or the token's 0x contract address; an address that is not an ERC-20 contract returns 422, uncharged. Example: token=0xF1815bd50389c46847f0Bda824eC8da914045D14. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: reads live from the contract, non-ERC-20 addresses return 422 uncharged, $0.01/call with 25 free and failed calls free, and repeats are billable (explaining the idempotentHint=false). However it never describes the shape of the returned object, so an agent still cannot predict the key names for name/symbol/decimals/supply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the capability, then usage, then input, then error/pricing. Dense and mostly waste-free, though the pricing sentence is repeated in three clauses ('$0.01/call', 'first 25 free', 'failed calls free', 'each call is charged') and could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, it names the four returned fields and covers the failure mode and cost model, which is close to complete. The missing piece is the exact response structure/serialization, which no other field supplies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents ticker-or-address, so the baseline is 3. The description adds marginal value by giving a concrete example address and stating that a non-ERC-20 address produces 422, which sharpens what counts as a valid input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (look up name, symbol, decimals, total supply of an ERC-20 contract) and pins the chain with 'on Ink', which separates it from the ~20 same-named siblings on other networks. The sibling that could be confused with it, ink_token_balance, is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases (identify an unknown token address, format raw amounts) and an explicit exclusion routing balance queries to ink_token_balance. Nothing is left to inference about when to pick this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ink_token_transfersToken transfers, InkARead-onlyInspect
List a wallet's recent transfers of one ERC-20 token (default USDC) on Ink, in and out, over the last N blocks (1-2,000, default 1,000): direction, counterparty, amount and transaction, newest first, up to 50. Use to confirm a payment arrived or see what was sent; for the current balance use ink_token_balance. Malformed addresses are rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Token: a ticker such as USDT or WETH, or the 0x ERC-20 contract (default: USDC on this network) | |
| blocks | No | How many recent blocks to scan (1-2000, default 1000; 2,000 blocks is about 33 minutes on Ink) | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/non-destructive, but the description adds genuinely new context: malformed addresses return 400 with no charge, failed calls are free, results are capped at 50 newest-first, and repeat calls are billed (explaining the non-idempotent hint). Pricing detail is useful but partly promotional rather than behavioral.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with scope and return shape, then usage routing, then edge cases. Dense but nearly every clause earns its place; the price/free-tier sentence is the one part that runs long relative to its decision value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating returned fields (direction, counterparty, amount, transaction), ordering, and the 50-row cap. Combined with error behavior and the balance sibling reference, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all three parameters; the description adds a concrete address example, restates the block window/default, and clarifies that token defaults to USDC. That is modest value on top of a complete 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?
States a specific verb (List) and resource (a wallet's recent ERC-20 transfers) plus chain, default token, direction, and result shape. It is immediately distinguishable from ink_token_balance and ink_token_info by naming the exact scope and default.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the concrete use case (confirm a payment arrived, see what was sent) and explicitly routes balance questions to ink_token_balance. That is an explicit when-to-use plus named alternative, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ink_txInk transactionARead-onlyInspect
Look up an Ink transaction by hash: sender, recipient, value in ETH, nonce, gas limit, the 4-byte function selector and its block. Use to see what was sent or whether it exists; for success or failure and fees paid use ink_receipt, for emitted events ink_logs. Input is a 0x-prefixed 64-hex hash; an unknown hash returns 404, uncharged. Example: hash=0x31e16195b9b6d9da5303988095e0dd5ee278693cb920de7d09fcee624c4f4733. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive and open-world, but the description adds genuinely new behavior: an unknown hash returns 404 and is uncharged, failed calls are free, and repeated calls are not free because each is billed. That last point explains why idempotentHint is false rather than contradicting it. It stops short of describing response shape or latency, which keeps it at 4 rather than 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the lookup and its returned fields, then guidance, then input format, then pricing. It is dense but every clause carries information. The single long pricing sentence ('Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free') is the one place where commercial detail crowds out lookup detail.
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?
There is no output schema, so the description compensates by listing the returned fields, and it covers the input format, the not-found case, and the cost model. For a one-parameter read tool in a large chain-prefixed family, that is everything an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already says '0x-prefixed transaction hash (64 hex characters)', so the baseline is 3. The description earns a step up by supplying a concrete worked example hash and by stating the failure mode for a hash that isn't found, which the schema does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Look up an Ink transaction by hash') and enumerates exactly what is returned: sender, recipient, value in ETH, nonce, gas limit, 4-byte selector and block. It also disambiguates from its closest siblings (ink_receipt for status/fees, ink_logs for events), so an agent can pick it apart from ink_tx's neighbours without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives both positive triggers ('use to see what was sent or whether it exists') and explicit routing to alternatives with the conditions that select them: ink_receipt for success/failure and fees paid, ink_logs for emitted events. The unknown-hash/404 note further tells the agent what to expect when the lookup misses.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keccakKeccak256, function selector: Keccak-256 hash, 4-byte selector and event topicARead-onlyInspect
Keccak-256 hash (the Ethereum hash) of text or of 0x hex bytes, as used for function selectors, event topics and storage slots. Use when building or decoding EVM calls. Example: text=transfer(address,uint256). Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text, or 0x-prefixed hex bytes, up to 10,000 characters |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered; the description usefully adds pricing ($0.01/call, 25 free, failed calls free) and the non-idempotent cost note, which matches idempotentHint=false. It does not describe the exact return shape (hash only vs. hash plus 4-byte selector), which is the remaining behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the definition and use case, then the example, then pricing. The pricing/free-tier sentence is longer than necessary for tool selection and could be trimmed, keeping it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry return semantics; the title's "4-byte selector and event topic" hints at outputs but the body only says it hashes, leaving ambiguity about whether a selector is returned alongside the hash. Everything else needed to call it (input format, cost, safety) is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema documents the 10,000-character limit, so the baseline is 3; the worked example adds real value by showing the accepted input syntax (raw signature text rather than encoded calldata). It still doesn't clarify the 0x-hex byte branch with an example, so not a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific operation (Keccak-256 hash) over a specific input (text or 0x hex bytes) and names the concrete uses (function selectors, event topics, storage slots). It is trivially distinguishable from every sibling, which are all chain-prefixed RPC lookups rather than a pure hashing utility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use when building or decoding EVM calls" plus a concrete example (text=transfer(address,uint256)) gives a clear triggering context. It stops short of explicit exclusions or alternatives (e.g. use eth_call to actually simulate the encoded call), so it earns 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.
linea_allowanceToken allowance, Linea ERC-20ARead-onlyInspect
ERC-20 token allowance on Linea: how much a spender may move from an owner's wallet (allowance), raw and in token units, and whether the approval is unlimited. Use to check an approval before a swap or to audit risky open approvals; for the owner's balance use linea_token_balance. Token is a ticker (USDC, USDT, WETH…) or a 0x contract; a missing contract is 404 and a non-ERC-20 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | 0x wallet that gave the approval | |
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address | |
| spender | Yes | 0x contract or wallet allowed to spend (the example is Uniswap Permit2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered, and the description reinforces it with "reads or computes only and changes nothing." It adds real context the annotations cannot express: per-call pricing ($0.01, first 25 free, failed calls free), the 404/422 failure modes for bad token contracts, and the note that repeats are charged (explaining the non-idempotent hint).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return shape, then usage, then token semantics, then pricing. Every clause is doing work, though the billing detail runs long and slightly crowds the operational 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?
There is no output schema, so the description carries the return-value burden and does so precisely (raw and token units plus unlimited flag). For a three-required-param read tool with full annotation coverage, an agent has everything needed to call it and interpret the result.
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 all three parameters are documented in-schema; the description restates the ticker-or-0x-contract flexibility for `token` but adds genuine value by stating what a missing contract (404) or non-ERC-20 (422) does. The `owner` and `spender` semantics are left to the schema, which fully covers them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (read an ERC-20 allowance on Linea) plus the exact return shape: raw amount, token-unit amount, and an unlimited-approval flag. It explicitly distinguishes itself from the sibling linea_token_balance, so an agent can route between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases (pre-swap approval check, auditing risky open approvals) and names the alternative tool plus the condition that selects it ("for the owner's balance use linea_token_balance"). Nothing about when to reach for this tool is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linea_balanceLinea balance, native coinARead-onlyInspect
Native ETH balance (eth_getBalance) of any 0x wallet address on Linea at the latest block, in wei and in ETH. Use to check whether a wallet can pay gas or a transfer; for ERC-20 tokens use linea_token_balance, for all holdings at once use wallet_portfolio. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet or contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint true, destructiveHint false, openWorldHint true), and the description goes further by disclosing cost behavior: $0.01/call via x402 USDC or a card key, first 25 free, failed calls free, and that repeats are not free, which explains the idempotentHint=false flag. It does not describe pagination or response shape, but neither applies to a single-value read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, units, alternatives, error behavior and pricing are front-loaded in three tight sentences with no filler. The pricing and free-tier detail is dense but earns its place because it explains the non-idempotent, per-call-charged behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read with no output schema, the description covers everything an agent needs: what is returned and in which units, the block height used, invalid-input handling, cost model, and the alternatives for token or multi-asset queries. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one parameter, so the schema already carries the baseline. The description still adds value by showing a concrete example address and confirming that any 0x wallet or contract address is acceptable while a malformed one returns 400, which the schema does not say.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (returns the native ETH balance of a 0x address on Linea via eth_getBalance at the latest block), and declares both output units (wei and ETH). It explicitly distinguishes itself from linea_token_balance and wallet_portfolio, so the agent can separate it from the many sibling *_balance tools without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case (check whether a wallet can pay gas or a transfer) and names the alternatives with the condition that selects them: linea_token_balance for ERC-20, wallet_portfolio for all holdings at once. It also states what happens on bad input (400, uncharged), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linea_blockLinea block numberARead-onlyInspect
Latest block number and block details on Linea, or any block by decimal number: hash, timestamp, transaction count, gas used and limit, base fee in gwei and producer. Use for timestamps and confirmation counts; for current fees use linea_gas. A block that does not exist yet returns 404, uncharged. Example: number=latest. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| number | No | Block number, or 'latest' (default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds genuinely non-structured context: $0.01/call via x402 USDC or card key, first 25 free, failed calls free, and a 404-with-no-charge for a block that does not exist yet. However, it partly repeats the annotation semantics ('reads or computes only and changes nothing'), and the idempotentHint=false rationale is only implied rather than stated.
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?
Dense but front-loaded: purpose, returned fields, then usage routing, then pricing. The clause 'Reads or computes only and changes nothing' duplicates the readOnlyHint annotation and could be cut, and the pricing sentence is packed with three separate facts.
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?
There is no output schema, but the description enumerates the returned fields, so an agent knows what it gets back. Combined with error behavior (404, uncharged), cost model, and the alternative tool, nothing needed to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already documents 'Block number, or latest (default)'. The description still adds value by specifying the accepted format ('decimal number') and supplying a literal example, which reduces formatting errors.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (latest block number / any block by number on Linea) and enumerates the returned fields: hash, timestamp, tx count, gas used/limit, base fee in gwei, producer. It also explicitly distinguishes itself from the sibling linea_gas, so an agent can pick it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives positive guidance ('Use for timestamps and confirmation counts') and names the alternative with its selecting condition ('for current fees use linea_gas'). A concrete example (number=latest) removes any remaining ambiguity about invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linea_callEth call, Linea contract callARead-onlyInspect
Read-only contract call on Linea (eth_call): send ABI-encoded calldata to a contract at the latest block and get the raw return data, without a transaction or gas. Use to read any view function that has no dedicated tool (the example reads USDC totalSupply, selector 0x18160ddd); decode the result with the function's ABI. Calldata up to 8 KB; a call that reverts is 422 with the reason, uncharged. Example: to=0x176211869cA2b568f2A7D4EE941E073a821EE1ff, data=0x18160ddd. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x contract address to call | |
| data | Yes | 0x ABI-encoded calldata: 4-byte selector plus arguments | |
| from | No | Optional 0x sender address for calls that check msg.sender |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: latest-block-only semantics, an 8 KB calldata cap, 422-with-reason on revert with no charge, and a $0.01/call price with the first 25 free. It even explains the idempotentHint=false consequence in plain terms ("each call is charged, so repeats are not free"), which is exactly the context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the definition, then usage, then limits/pricing, which is a sensible order. There is some redundancy: "Reads or computes only and changes nothing" restates read-only (already in annotations) and the charging model is stated twice.
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 no output schema, the description carries the return-value burden and does so ("raw return data", decode with the ABI), plus error and cost behavior. The only gap is the unmentioned `from` parameter, which the schema itself documents, so nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces `to` and `data` with concrete example values and the decode step, but adds little beyond the schema and never mentions the optional `from` parameter or its msg.sender use case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Read-only contract call on Linea (eth_call)") and immediately names the exact mechanics: ABI-encoded calldata in, raw return data out, no transaction or gas. It also carves itself out from the many linea_* siblings by saying it is for "any view function that has no dedicated tool," so an agent can tell it apart from linea_token_balance, linea_storage, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it (view functions lacking a dedicated tool) and gives a worked example (USDC totalSupply, selector 0x18160ddd) plus the follow-up step (decode with the ABI). It does not name a specific sibling to prefer for common reads, but the "no dedicated tool" rule covers the exclusion adequately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linea_estimate_gasEstimate gas, LineaARead-onlyInspect
Estimate the gas a transaction would use on Linea (eth_estimateGas) and what it would cost at the current gas price, in gas units, gwei and ETH. Give to, plus value in ETH and calldata for a contract call, and the sender when the call depends on it. Use before sending a transaction or to price a batch; for the gas price alone use linea_gas. A transaction that would revert is 422 with the reason, uncharged. Example: to=0x000000000000000000000000000000000000dEaD. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x recipient or contract address | |
| data | No | Optional 0x calldata for a contract call | |
| from | No | 0x sender address (default: an empty address) | |
| value | No | Amount of ETH to send, in ETH (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint true, destructiveHint false), and the description corroborates and enriches them: it declares the tool computes only and changes nothing, explains the non-idempotency hint (each call is charged, repeats are not free), details pricing/credits, and specifies the revert outcome. This is materially more than the structured fields provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and an example address, then usage, error behavior and cost. It runs long for a 4-parameter tool, and the charging model is stated twice ('each call is charged, so repeats are not free' after the x402/free-tier sentence), a minor redundancy in otherwise tight prose.
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?
There is no output schema, so the description carries the return-value burden — and it does, naming the three units returned (gas units, gwei, ETH). Combined with the revert/error contract and cost model, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description lifts it by explaining intent rather than types: value is in ETH, calldata goes with a contract call, and 'from' is only needed 'when the call depends on it' — nuance the schema's 'default: an empty address' does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Estimate the gas a transaction would use on Linea') and names the underlying RPC (eth_estimateGas), extending the scope to cost in gas units, gwei and ETH. It explicitly distinguishes itself from the sibling linea_gas, which the agent can act on without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use before sending a transaction or to price a batch' gives the triggering contexts, and 'for the gas price alone use linea_gas' names the alternative with the condition that selects it. The revert behavior (422 with reason, uncharged) tells the agent what a failed attempt looks like rather than leaving it to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linea_gasLinea gas priceARead-onlyInspect
Current gas price on Linea (eth_gasPrice): gas price, base fee and suggested priority fee in gwei, plus what a plain ETH transfer (21,000 gas) costs right now. Takes no input. Use before sending a transaction or to decide whether to wait; for the fee a past transaction actually paid use linea_receipt. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Optional: comma-separated top-level result keys to keep, for a smaller answer (for example only=price,symbol); unknown keys are ignored and an empty match returns the full result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint, but the description adds value beyond them: the price model ($0.01/call via x402 USDC or card key, first 25 free, failed calls free) and the warning that repeats are not free, which is meaningful given idempotentHint=false. It also states 'reads or computes only and changes nothing', confirming side-effect freedom in plain language.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return fields, then usage, then cost, then safety. Mostly earned content, though the pricing sentence is dense and could be tightened; the 'Takes no input' clause is wasted words that also introduce an error.
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?
No output schema exists, so the description appropriately names the returned values and their units (gwei), giving an agent enough to interpret results. The one gap is the unmentioned 'only' parameter, which is covered by a rich schema description, so the omission is minor.
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 documents the single optional 'only' parameter at 100% coverage, which would normally set a baseline of 3. However, the description asserts 'Takes no input', which actively contradicts the existence of that parameter and could lead an agent to miss the response-trimming option. Misleading is worse than silent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-resource pair ('Current gas price on Linea') and enumerates the concrete outputs: gas price, base fee, suggested priority fee in gwei, plus the cost of a 21,000-gas ETH transfer. It distinguishes itself from the sibling linea_receipt by scope (current vs. what a past transaction paid).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('before sending a transaction or to decide whether to wait') and names the alternative for the adjacent question ('for the fee a past transaction actually paid use linea_receipt'). The routing decision is fully determined without opening siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linea_gas_historyLinea gas history, gas priceARead-onlyInspect
Gas price history on Linea (eth_feeHistory): base fee in gwei for each of the last N blocks (5-100, default 20), how full each block was, and the 10th, 50th and 90th percentile priority fees, with the low, average and high base fee over the window. Use to judge whether fees are rising, pick a priority fee or time a transaction; for the current price alone use linea_gas. Example: blocks=20. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks, 5-100 (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/destructive/openWorld, and the description adds genuinely new behavioral context: per-call pricing ($0.01 via x402 USDC or card key), a 25-call free tier, failed calls free, and that repeats are charged (consistent with idempotentHint=false). It does not cover error modes or latency, but the cost model is material and non-obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph that front-loads what is returned, then usage, then cost. Every sentence carries information, though the pricing/credits clause at the end is slightly tacked on and could be separated for readability.
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?
There is no output schema, so the description must explain return values, and it does so thoroughly (per-block base fee and fullness, three priority-fee percentiles, window aggregates). For a one-optional-parameter read tool, an agent has everything needed to call it and interpret results.
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 states "How many recent blocks, 5-100 (default 20)". The description restates the same range and default plus an example (blocks=20), adding only marginal meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (gas price history on Linea via eth_feeHistory) and enumerates exactly what is returned: base fee per block, block fullness, 10th/50th/90th percentile priority fees, and low/average/high base fee. It explicitly contrasts with the sibling linea_gas for the current price alone, so the agent can pick between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use guidance ("judge whether fees are rising, pick a priority fee or time a transaction") and names the alternative plus the condition that selects it ("for the current price alone use linea_gas"). Nothing about tool selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linea_is_contractLinea is-contract checkARead-onlyInspect
Check whether a 0x address on Linea is a smart contract or a plain wallet: bytecode size, and whether it is an EIP-1167 minimal proxy and which implementation it points to. Use before sending funds or approving a spender; for a fuller risk verdict use check_counterparty. A malformed address is rejected with 400, uncharged. Example: address=0x176211869cA2b568f2A7D4EE941E073a821EE1ff. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, idempotent=false, and openWorld, so the safety profile is covered. The description adds genuinely useful context beyond them: malformed-address handling (400, uncharged), pricing and free-call policy, and the fact that repeats are charged (consistent with idempotentHint=false). It stops short of describing response shape, but with annotations present this is solid additive value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and outputs, then usage, then edge cases and pricing. Dense but each clause carries information; the trailing pricing/free-call sentences are somewhat lengthy but still relevant to cost-aware invocation.
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 no output schema and a single-parameter tool, the description fully specifies return contents (bytecode size, minimal-proxy detection, implementation pointer), error behavior, and cost model. Nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one parameter, so the schema already documents 'address'. The description reinforces the 0x format and supplies a worked example, which is marginal added meaning over structured data.
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 gives a concrete verb and resource ('Check whether a 0x address on Linea is a smart contract or a plain wallet') plus the specific outputs (bytecode size, EIP-1167 minimal-proxy status, implementation address). It distinguishes itself from the risk-verdict sibling check_counterparty, though it does not clarify how it differs from the closely related linea_proxy tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('before sending funds or approving a spender') and a named alternative with its selection condition ('for a fuller risk verdict use check_counterparty'). The agent needs no inference to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linea_logsLinea event logsARead-onlyInspect
Recent contract event logs on Linea (eth_getLogs): the events a contract emitted over the last N blocks (1-1,000, default 50), optionally filtered by topic0 (the 0x 32-byte event signature hash). Returns up to 100 logs with block, transaction hash and topics. Use to watch transfers or contract events; for one transaction's outcome use linea_receipt. Example: address=0x176211869cA2b568f2A7D4EE941E073a821EE1ff. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks to scan (1-1000, default 50) | |
| topic0 | No | Optional 0x event signature hash to filter by | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only safety, open-world, non-idempotent and non-destructive traits, and the description adds pricing/auth context ($0.01/call via x402 USDC or card key, first 25 free, failed calls free) plus non-idempotence warning ('each call is charged, so repeats are not free'). It also discloses result caps (up to 100 logs). It does not explain pagination beyond the cap, which is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and scope are front-loaded, then filters, then return shape, then routing to a sibling, then pricing. It is dense but every clause earns its place; pricing details add slight bulk but are behaviorally relevant.
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 3-parameter read-only log query with no output schema, the description covers scope, filter semantics, return shape (block, transaction hash, topics), limits, cost model, and the sibling alternative. Nothing material to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all three parameters including ranges and defaults. The description adds interpretation of topic0 as the 0x 32-byte event signature hash and an example address, but largely restates schema content, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Recent contract event logs on Linea (eth_getLogs)') and clarifies the scope as events a contract emitted over the last N blocks. It also explicitly distinguishes itself from the sibling linea_receipt ('for one transaction's outcome use linea_receipt').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance ('Use to watch transfers or contract events') and names the alternative with the condition that selects it ('for one transaction's outcome use linea_receipt'). It also includes a concrete example call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linea_nonceLinea nonce, account nonceARead-onlyInspect
Read the transaction count (nonce) of a 0x address on Linea, both confirmed and including pending transactions. Use to build the next transaction or to tell whether an address has ever sent anything; for its balance use linea_balance. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint=false, but the description adds meaningful things beyond them: a $0.01 per-call price, 25 free calls, malformed addresses returning 400 uncharged, and the warning that repeats are not free (consistent with idempotentHint=false). It only stops short of describing the shape of the returned data, which slightly blunts how complete the behavioral picture is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then usage routing, then pricing and failure semantics, so the most important information comes first. The pricing and credits clause ('$0.01/call via x402 USDC or a card key (/credits), first 25 free') is slightly dense and reads more like billing copy than tool guidance, though it is relevant for a paid endpoint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the definition covers purpose, alternatives, cost, and input validation well. It never says what the response looks like (for example, whether confirmed and pending counts come back as separate fields), which leaves one small gap for a caller that needs to consume the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'address' field, so the schema already carries most of the weight and the baseline is 3. The description adds genuine meaning by giving a concrete example address and stating that a malformed address is rejected with 400 without charge, which tells the caller what counts as valid input rather than merely repeating '0x address'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the transaction count (nonce) of a 0x address on Linea') and disambiguates scope by noting both confirmed and pending counts. It also names the sibling it is not ('for its balance use linea_balance'), so an agent can distinguish it from linea_balance without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases ('to build the next transaction' and 'to tell whether an address has ever sent anything') and explicitly routes balance lookups to linea_balance. The only guidance a caller might want and does not get is a warning against using it for anything other than Linea, which the name already conveys.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linea_proxyProxy implementation, LineaARead-onlyInspect
Find the implementation behind a proxy contract on Linea: reads the EIP-1967 implementation, beacon and admin slots, EIP-1822 (UUPS), the older OpenZeppelin layout and EIP-1167 minimal-proxy bytecode, and names the kind found. Use before trusting or decoding a contract whose code can be swapped by its admin; for a fuller risk verdict use contract_risk. A malformed address is 400; an address without code is 404, both uncharged. Example: address=0x176211869cA2b568f2A7D4EE941E073a821EE1ff. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: error semantics (400 for malformed address, 404 for address without code, both uncharged), pricing ($0.01/call, first 25 free, failed calls free), and an explicit note that repeats are charged, which explains the non-obvious idempotentHint=false. It doesn't describe the response shape (what the 'kind' values are), but the safety/pricing profile is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and the enumerated standards, then usage, errors, pricing. Most sentences earn their place, but the payment/free-tier clause is lengthy relative to the tool's core purpose and could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with no output schema, the description covers purpose, alternatives, errors, and cost. The one gap is that the return value is only gestured at ('names the kind found') without indicating the possible kinds or fields, which matters since no output schema exists.
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 a single 'address' parameter, so the baseline would be 3; the description earns an extra point by supplying a concrete example address that pins down the expected 0x format, and by describing address-level failure modes (400/404).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Find the implementation behind a proxy contract on Linea') and enumerates exactly which storage slots and proxy standards are read (EIP-1967 impl/beacon/admin, EIP-1822 UUPS, OZ legacy layout, EIP-1167 bytecode). This clearly distinguishes it from sibling read tools like linea_storage or linea_is_contract, which don't resolve proxy targets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('use before trusting or decoding a contract whose code can be swapped by its admin') and names the alternative for a different need ('for a fuller risk verdict use contract_risk'). Nothing about when to pick this versus a sibling is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linea_receiptLinea transaction receiptARead-onlyInspect
Transaction receipt on Linea (eth_getTransactionReceipt): success or reverted, gas used, effective gas price, fee paid in ETH, number of event logs and any contract created. Use to confirm a payment or call went through; for sender, value and calldata use linea_tx. Input is a 0x-prefixed 64-hex hash; a pending or unknown hash returns 404, uncharged. Example: hash=0x638169f15ccab7f5491b46b3a883fa1aa5b5399ba5c56fa0110355d47a526a93. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses cost per call, the free tier, that failed calls are free, that 404/uncharged results occur for pending or unknown hashes, and that repeats are not free (explaining the non-idempotent billing model). It also reaffirms a read-only, no-side-effect profile that is consistent with readOnlyHint=true and destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return fields, then routing, then input format and billing. Dense and mostly waste-free, though the charging model is stated twice ('Price $0.01/call...' and 'each call is charged, so repeats are not free'), which is mild 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?
Single-parameter read tool with no output schema; the description compensates by enumerating returned fields, documenting the error/pending path, and stating the pricing model. An agent has everything needed to call it and interpret a 404.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents the 0x-prefixed 64-hex hash format, so the description is not required to explain the parameter. It still adds value with a concrete example hash and the semantic behavior of pending/unknown inputs (404).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (retrieve the transaction receipt on Linea) and enumerates exactly what it returns: status, gas used, effective gas price, fee in ETH, log count, created contract. It also distinguishes itself from the sibling linea_tx by naming what that tool covers instead (sender, value, calldata).
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 case ('confirm a payment or call went through') paired with an explicit alternative and its selection condition ('for sender, value and calldata use linea_tx'). It also states the negative case: a pending or unknown hash returns 404, uncharged.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linea_storageStorage slot read, LineaARead-onlyInspect
Read one raw storage slot of a contract on Linea (eth_getStorageAt): the 32-byte word, as a number and, when it holds one, as an address. Slot is a decimal index or a 0x 32-byte key (mapping and proxy slots). Use to inspect contract state that has no getter, owners or implementation pointers; for proxies use linea_proxy. A malformed address or slot is rejected with 400, uncharged. Example: address=0x176211869cA2b568f2A7D4EE941E073a821EE1ff. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | Slot: a decimal index (0, 1, 2…) or a 0x 32-byte key | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description would only need to add context. It does add genuinely useful behavior: malformed address/slot returns 400 uncharged, pricing model, and that repeats are billable. However, that last point sits uneasily with readOnlyHint=true – it explains non-idempotence in cost terms rather than operational terms, and does not say what happens when slot is omitted. With annotations covering the safety profile, this is decent but not rich 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?
A single dense paragraph that front-loads the operation and return format, then use cases, then guards and pricing. Most sentences earn their place, but the billing rules are stated twice ('Price $0.01/call… failed calls free' vs. 'each call is charged, so repeats are not free'), and the slot/address prose duplicates the schema wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description correctly covers return values, error behavior, pricing, and the proxy alternative. The notable omission is what slot means when omitted (slot is optional, required is only address) – an agent cannot tell whether the tool defaults to slot 0 or errors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description adds value by clarifying that slot accepts a decimal index or a 0x 32-byte key and by explaining why (mapping and proxy slots), plus a concrete address example. It does not state the default when the optional slot parameter is omitted, which is the main remaining semantic gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read one raw storage slot of a contract on Linea'), names the underlying RPC method (eth_getStorageAt), and specifies the return shape (32-byte word as number, and as address when applicable). It also distinguishes itself from the very similarly named linea_proxy, so an agent can disambiguate among the many sibling storage tools by chain prefix alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('inspect contract state that has no getter, owners or implementation pointers') and an explicit alternative with its selection condition ('for proxies use linea_proxy'). The when-to-use and when-to-use-something-else are both stated, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linea_token_balanceLinea ERC-20 balanceARead-onlyInspect
ERC-20 token balance of a wallet on Linea (USDC, USDT, WETH or any token, via balanceOf): raw amount, decimals, symbol and the human-readable amount, live from the token contract. Use to check stablecoin or token holdings before a transfer or trade; for the native coin use linea_balance. Both inputs are 0x addresses (40 hex characters); no contract returns 404 and a non-ERC-20 contract 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC, USDT, WETH or DAI, or the 0x ERC-20 contract address | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/destructive=false, but the description adds substantial context the annotations cannot: error semantics (404 for no contract, 422 for non-ERC-20), that failed calls are uncharged, the $0.01/call x402 pricing with first 25 free, and the warning that repeats are billed. This is consistent with idempotentHint=false, where a naive reader would otherwise assume a read is free to repeat.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return shape, then routing, then error/pricing caveats — good ordering with no filler sentences. It is dense and semicolon-heavy, packing pricing, errors and idempotency into one long clause, which costs some readability.
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 no output schema, the description carries the return payload itself (raw amount, decimals, symbol, human-readable amount) and covers the two realistic failure modes plus billing. An agent has everything needed to call it, interpret the result, and anticipate a 404/422.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both params are documented there, so the baseline is 3; the description earns a bump by restating that both inputs are 0x 40-hex addresses and that `token` accepts either a ticker or a contract address. It adds validation detail beyond the schema text but no examples of token resolution edge cases.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: ERC-20 balanceOf for a wallet on Linea, including the exact token set (USDC, USDT, WETH or any token) and the return fields. It explicitly separates itself from linea_balance (native coin) and implicitly from linea_allowance/linea_token_info, so an agent can pick the right sibling without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use to check stablecoin or token holdings before a transfer or trade" gives a concrete use context, and "for the native coin use linea_balance" names the specific alternative and the condition that selects it. Nothing essential is left to inference for a read-only balance lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linea_token_infoLinea token info, ERC-20ARead-onlyInspect
Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Linea, live from the contract. Use to identify an unknown token address or to format raw amounts; for a holder's balance use linea_token_balance. Input is a ticker (USDC, WETH…) or the token's 0x contract address; an address that is not an ERC-20 contract returns 422, uncharged. Example: token=0x176211869cA2b568f2A7D4EE941E073a821EE1ff. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the 422 outcome for a non-ERC-20 address (and that it is uncharged), the $0.01/call x402 pricing with 25 free calls, and that repeated calls are billed — which explains why idempotentHint is false despite the read-only nature. It also states data is read live from the contract.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage, then input format, then cost — a sensible ordering. It is dense and the pricing clause is long, but every sentence carries information an agent needs (cost, failure behavior, sibling routing) rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by enumerating the returned fields. Combined with error semantics, cost, and the sibling alternative, nothing material is missing for a single-parameter read 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?
Schema coverage is 100% and the schema already says the parameter accepts a ticker or a 0x address, so the description's restatement is redundant; however the concrete example address and the 422 behavior for non-ERC-20 contracts add real semantic value about what the input will and won't resolve to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource plus the exact fields returned ('name, symbol, decimals and total supply of an ERC-20 token contract on Linea'), and explicitly contrasts itself with linea_token_balance. An agent can distinguish it from the ~180 sibling tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases ('identify an unknown token address', 'format raw amounts') and names the alternative tool with the condition that selects it ('for a holder's balance use linea_token_balance'). No inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linea_token_transfersToken transfers, LineaARead-onlyInspect
List a wallet's recent transfers of one ERC-20 token (default USDC) on Linea, in and out, over the last N blocks (1-2,000, default 1,000): direction, counterparty, amount and transaction, newest first, up to 50. Use to confirm a payment arrived or see what was sent; for the current balance use linea_token_balance. Malformed addresses are rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Token: a ticker such as USDT or WETH, or the 0x ERC-20 contract (default: USDC on this network) | |
| blocks | No | How many recent blocks to scan (1-2000, default 1000; 2,000 blocks is about 2.4 hours on Linea) | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-idempotent, but the description adds pricing ($0.01/call via x402 or card key, first 25 free, failed calls free), the charging implication of repeats, and validation behavior. That is exactly the extra context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and result shape, then usage, error behavior, example, and pricing. Dense but sensibly ordered; the pricing sentence is lengthy but earns its place for a paid, non-idempotent call.
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?
Without an output schema, the description supplies the result fields (direction, counterparty, amount, transaction), ordering (newest first), and cap (50), plus validation and pricing. Nothing material for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so token, blocks, and address are already documented. The description largely restates defaults and ranges, adding only a sample address and 'about 2.4 hours' framing, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (list a wallet's recent ERC-20 transfers on Linea) plus scope (blocks, up to 50, newest first). Explicitly distinguishes itself from linea_token_balance, so an agent won't confuse it with the balance sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use cases (confirm a payment arrived, see what was sent) and names the alternative for the current balance. Also states failure behavior (malformed address → 400, uncharged), which helps the agent anticipate errors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linea_txLinea transactionARead-onlyInspect
Look up a Linea transaction by hash: sender, recipient, value in ETH, nonce, gas limit, the 4-byte function selector and its block. Use to see what was sent or whether it exists; for success or failure and fees paid use linea_receipt, for emitted events linea_logs. Input is a 0x-prefixed 64-hex hash; an unknown hash returns 404, uncharged. Example: hash=0x638169f15ccab7f5491b46b3a883fa1aa5b5399ba5c56fa0110355d47a526a93. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses that an unknown hash returns 404 and is uncharged, that failed calls are free, that successful calls cost $0.01 via x402 USDC or a card key, and that repeats are charged. This is genuinely useful pre-call knowledge that annotations cannot express. It stops short of describing the response payload shape or any rate limits, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and returned fields, then routing, then input format and error behavior. Dense but almost every clause carries information. The pricing sentence is long and stacks several facts (per-call price, payment rails, free tier, failed-call refund), which slightly dilutes the tightness of the rest.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with full schema coverage and no output schema, everything an agent needs is present: scope, sibling disambiguation, input format with example, and cost/error behavior. There is no meaningful gap left to fill.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so baseline is 3, but the description adds value by spelling out the 0x-prefixed 64-hex format, giving a concrete example hash, and defining the failure semantics for an unmatched hash (404, uncharged). The example makes the format unambiguous without opening 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?
States a specific verb and resource ('Look up a Linea transaction by hash') and enumerates exactly which fields come back: sender, recipient, value, nonce, gas limit, selector, block. It also differentiates itself from the two nearest siblings, linea_receipt and linea_logs, by scope rather than by name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing rules: use this to see what was sent or whether a tx exists, use linea_receipt for success/failure and fees, use linea_logs for emitted events. That is a when-to-use plus two named alternatives with their selection conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ln_invoiceDecode a Lightning invoice: decode a BOLT11 Lightning invoice: amount, description, expiry and payment hashARead-onlyInspect
Decode a BOLT11 Lightning Network invoice without paying it: network, amount in sats and BTC, description, payment hash, creation time, expiry time and whether it has already expired. Use to check what an invoice asks for before an agent pays it. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| invoice | Yes | BOLT11 invoice string starting with ln (lnbc... for mainnet) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive and non-idempotent, but the description adds real value beyond them: it explains why repeats are not free ('each call is charged'), discloses the price model ($0.01/call via x402 USDC or card key, first 25 free, failed calls free), and confirms the operation 'reads or computes only and changes nothing'. That is exactly the kind of billing and side-effect disclosure annotations cannot carry.
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 decode scope and the 'without paying' caveat are front-loaded, which is the right ordering. There is slight redundancy in restating the charging model twice ('Price $0.01/call...' and 'each call is charged, so repeats are not free'), but both sentences otherwise earn their 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?
With no output schema, the description compensates by enumerating what comes back — network, amount in sats and BTC, description, payment hash, creation/expiry times and expired status. Combined with the payment model disclosure, an agent has everything needed to decide to call and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'invoice' parameter is already documented as a BOLT11 string starting with 'ln'. The description's list of decoded fields is return-value information rather than parameter guidance, so it adds nothing to the one argument beyond the schema — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Decode a BOLT11 Lightning Network invoice') plus the crucial scope qualifier 'without paying it'. No sibling tool in the list touches Lightning, so the tool is unambiguous against the EVM/BTC cluster it sits in.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use to check what an invoice asks for before an agent pays it' gives a clear triggering context and even implies the decision it supports. No alternatives or exclusions are named, but there is no competing sibling to route away from, so the gap is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantle_allowanceToken allowance, Mantle ERC-20ARead-onlyInspect
ERC-20 token allowance on Mantle: how much a spender may move from an owner's wallet (allowance), raw and in token units, and whether the approval is unlimited. Use to check an approval before a swap or to audit risky open approvals; for the owner's balance use mantle_token_balance. Token is a ticker (USDC, USDT, WETH…) or a 0x contract; a missing contract is 404 and a non-ERC-20 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | 0x wallet that gave the approval | |
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address | |
| spender | Yes | 0x contract or wallet allowed to spend (the example is Uniswap Permit2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description provides rich behavioral context beyond the `readOnlyHint: true` annotation. It details pricing models ($0.01/call, first 25 free), transaction failure codes (404, 422), and confirms it is a read/compute operation. This adds significant value to the agent's decision-making process.
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 dense but highly efficient. While some sentences are slightly long, every clause adds critical information regarding function, scope, and cost, making it context-rich without being verbose.
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 inclusion of sibling tools and a clear parameter set, the description provides all necessary information regarding usage, constraints, failure modes, and operational costs, making it fully complete for the AI to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is high. The description adds valuable semantic context to the `token` parameter, explaining it can be a ticker (USDC) or a 0x contract address, which clarifies input expectations beyond just the 'type: string' in 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?
Explicitly states it checks the ERC-20 token allowance and specifies what information is returned: raw/token units and unlimited status. It also differentiates itself by mentioning that `mantle_token_balance` should be used for simple balances.
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 extremely clear use cases: check approval before a swap or for auditing risky open approvals. It also provides crucial usage context regarding failure codes (404, 422) and pricing (first 25 free). It implicitly excludes standard balance checks via `mantle_token_balance`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantle_balanceMantle balance, native coinARead-onlyInspect
Native MNT balance (eth_getBalance) of any 0x wallet address on Mantle at the latest block, in wei and in MNT. Use to check whether a wallet can pay gas or a transfer; for ERC-20 tokens use mantle_token_balance, for all holdings at once use wallet_portfolio. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet or contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the description's 'reads or computes only and changes nothing' is largely redundant. It does add genuinely new context beyond annotations: malformed addresses return 400 at no charge, calls cost $0.01 with 25 free, and repeats are billed because idempotentHint=false — but this billing detail is framed as generic pricing rather than explaining the non-idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, units, and the sibling routing; the tail carries validation, pricing, and safety notes. Most sentences earn their place, though the pricing sentence ('$0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free') is dense and only loosely tied to correct tool invocation.
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 no output schema, the description must carry return semantics, and it does specify wei and MNT at the latest block, plus error behavior for bad input. It stops short of naming the response fields or shape, so an agent still learns the exact JSON structure only by calling 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?
The single address parameter is already 100% documented in the schema, so the baseline applies. The description adds meaningful behavior on top: malformed addresses are rejected with 400 without being charged, and a well-formed example address is given, which clarifies accepted format beyond 'string'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (native MNT balance, eth_getBalance), the chain (Mantle), the block height (latest), and the units returned (wei and MNT). It also explicitly routes away from mantle_token_balance and wallet_portfolio, so the agent can distinguish it from the many sibling *_balance tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case ('check whether a wallet can pay gas or a transfer') plus two named alternatives with the conditions that select them (ERC-20 → mantle_token_balance, all holdings → wallet_portfolio). No inference about when to use it is left to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantle_blockMantle block numberARead-onlyInspect
Latest block number and block details on Mantle, or any block by decimal number: hash, timestamp, transaction count, gas used and limit, base fee in gwei and producer. Use for timestamps and confirmation counts; for current fees use mantle_gas. A block that does not exist yet returns 404, uncharged. Example: number=latest. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| number | No | Block number, or 'latest' (default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations: 404/uncharged behavior for future blocks, $0.01/call pricing, first 25 free, failed calls free, and that repeats are not free (consistent with idempotentHint=false). This is exactly the billing and failure context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and return fields, then usage, then billing. Dense but each clause carries information; the pricing sentence is long but relevant to call planning.
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?
No output schema exists, yet the description enumerates returned fields (hash, timestamp, tx count, gas used/limit, base fee, producer) and covers error and cost behavior, leaving nothing essential missing for a single-param 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?
Schema coverage is 100% and already documents 'number' with 'latest' default, but the description adds the decimal-number format expectation and a concrete example (number=latest), giving modest extra 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?
States a specific verb+resource ('Latest block number and block details on Mantle') and enumerates the returned fields, so an agent knows exactly what it gets and can distinguish it from mantle_gas and mantle_tx.
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 routes usage: 'Use for timestamps and confirmation counts; for current fees use mantle_gas.' It names the alternative and the condition that selects it, plus shows the 'latest' example.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantle_callEth call, Mantle contract callARead-onlyInspect
Read-only contract call on Mantle (eth_call): send ABI-encoded calldata to a contract at the latest block and get the raw return data, without a transaction or gas. Use to read any view function that has no dedicated tool (the example reads USDC totalSupply, selector 0x18160ddd); decode the result with the function's ABI. Calldata up to 8 KB; a call that reverts is 422 with the reason, uncharged. Example: to=0x09Bc4E0D864854c6aFB6eB9A9cdF58aC190D0dF9, data=0x18160ddd. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x contract address to call | |
| data | Yes | 0x ABI-encoded calldata: 4-byte selector plus arguments | |
| from | No | Optional 0x sender address for calls that check msg.sender |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, destructiveHint false, openWorldHint, idempotentHint false), and the description adds substantive context on top: 8 KB calldata cap, revert returns 422 with the reason and is uncharged, pricing via x402 USDC or card key with first 25 free, and the explicit warning that repeats are not free. That last point reinforces why idempotentHint is false, and 'reads or computes only and changes nothing' corroborates rather than contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded paragraph opening with the verb and transport, then usage, limits, error semantics, and pricing in descending order of importance. No sentence is redundant despite the density; the example is compact enough to justify its space.
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 no output schema, the description adequately covers the return path (raw return data, decode via ABI) and the failure path (422 with revert reason). It doesn't describe the success response envelope or deposit/credits setup details, but nothing needed to invoke the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real value beyond the schema: a concrete to/data pair, the note that data is a 4-byte selector plus arguments, the 8 KB ceiling, and the instruction to decode output with the function's ABI. The optional from parameter (msg.sender checks) is left to the schema, which is acceptable given full 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?
States a specific verb+resource (read-only eth_call on Mantle) with scope pinned down: ABI-encoded calldata to a contract at the latest block, raw return data, no transaction or gas. The clause 'read any view function that has no dedicated tool' separates it from siblings like mantle_token_balance or mantle_storage without the agent needing to open schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a positive use condition (view functions lacking a dedicated tool) plus a concrete worked example with selector 0x18160ddd. It stops short of naming which sibling tools supersede it, leaving the agent to infer the boundary, but the fallback rule is clear enough to act on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantle_estimate_gasEstimate gas, MantleARead-onlyInspect
Estimate the gas a transaction would use on Mantle (eth_estimateGas) and what it would cost at the current gas price, in gas units, gwei and MNT. Give to, plus value in MNT and calldata for a contract call, and the sender when the call depends on it. Use before sending a transaction or to price a batch; for the gas price alone use mantle_gas. A transaction that would revert is 422 with the reason, uncharged. Example: to=0x000000000000000000000000000000000000dEaD. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x recipient or contract address | |
| data | No | Optional 0x calldata for a contract call | |
| from | No | 0x sender address (default: an empty address) | |
| value | No | Amount of MNT to send, in MNT (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: revert behavior (422 with reason, uncharged), pricing model ($0.01/call via x402 or card key, first 25 free, failed calls free), and the non-idempotent charging caveat for repeats. The only minor gap is no mention of pagination/confirmation depth or eventual consistency, but for a compute-only tool this is rich disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and alternative routing before the example and pricing details. Dense but nearly every clause carries information; the pricing/payment sentence is long but operationally relevant given the x402 charge model.
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 no output schema, the description compensates by explaining what is returned (gas units, gwei, and MNT cost), the error path, and the charging semantics. An agent has everything needed to call it and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds real value by clarifying units ('value in MNT'), that calldata is for a contract call, and the conditional guidance that 'from' is needed when the call depends on the sender — a nuance absent from 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?
States a specific verb and resource ('Estimate the gas a transaction would use on Mantle'), names the underlying RPC (eth_estimateGas), and explicitly distinguishes itself from the sibling mantle_gas by scope. An agent can separate it from the ~15 other *_estimate_gas and *_gas tools at a glance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('before sending a transaction or to price a batch') and an explicit alternative ('for the gas price alone use mantle_gas'). Also specifies which inputs to supply and when 'from' matters, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantle_gasMantle gas priceARead-onlyInspect
Current gas price on Mantle (eth_gasPrice): gas price, base fee and suggested priority fee in gwei, plus what a plain MNT transfer (21,000 gas) costs right now. Takes no input. Use before sending a transaction or to decide whether to wait; for the fee a past transaction actually paid use mantle_receipt. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Optional: comma-separated top-level result keys to keep, for a smaller answer (for example only=price,symbol); unknown keys are ignored and an empty match returns the full result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true and idempotentHint=false, and the description adds real context beyond them: pricing ($0.01/call, first 25 free, failed calls free) and the explicit warning that repeats are not free, which explains the idempotentHint=false. It stops short of describing result shape details like units beyond gwei or the freshness/latency of the price, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, return fields, and usage before pricing boilerplate. The pricing/settlement sentence is longer than the functional content needs, but it carries genuinely decision-relevant cost information, so it earns most of its space.
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?
No output schema exists, and the description compensates by naming the returned fields and units (gwei) plus a concrete derived figure (21,000-gas transfer cost). Combined with the zero-required-param schema and safety annotations, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the `only` filter is already fully documented in the schema; baseline 3 applies. The description does not mention `only` and instead says 'Takes no input', which is slightly at odds with the optional projection parameter and gives an agent no extra guidance on using it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Current gas price on Mantle') and enumerates the returned fields: gas price, base fee, suggested priority fee in gwei, plus the cost of a 21,000-gas MNT transfer. It is clearly distinguishable from mantle_gas_history and mantle_receipt, the latter named explicitly as the historical alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit triggers ('Use before sending a transaction or to decide whether to wait') and routes the historical-fee case to mantle_receipt. An agent knows both when to call this and when to call something else.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantle_gas_historyMantle gas history, gas priceARead-onlyInspect
Gas price history on Mantle (eth_feeHistory): base fee in gwei for each of the last N blocks (5-100, default 20), how full each block was, and the 10th, 50th and 90th percentile priority fees, with the low, average and high base fee over the window. Use to judge whether fees are rising, pick a priority fee or time a transaction; for the current price alone use mantle_gas. Example: blocks=20. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks, 5-100 (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive and open-world behavior, and the description adds material context beyond them: per-call pricing ($0.01 via x402 USDC or card key), first 25 free, failed calls free, and that repeats are charged. That last point explains why idempotentHint=false on a pure read, resolving what would otherwise look like an inconsistency.
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?
Return contents and the mantle_gas routing decision are front-loaded in the first two sentences, with pricing appended afterwards. It is a single dense paragraph rather than a list, but no sentence is discardable given the pay-per-call model.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description enumerates the returned fields in enough detail that an agent knows what it will get, and it covers cost and side-effect posture. Nothing needed to call this one-parameter tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already documents the 5-100 range and default of 20; the description only restates those bounds plus a trivial "Example: blocks=20". Baseline 3 applies since the schema carries the semantic load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Gas price history on Mantle (eth_feeHistory)") and enumerates exactly what comes back: base fee in gwei per block, block fullness, 10th/50th/90th percentile priority fees, and low/avg/high base fee over the window. It is unambiguously distinguishable from the sibling mantle_gas, which it names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use cases (judge whether fees are rising, pick a priority fee, time a transaction) and an explicit exclusion rule: "for the current price alone use mantle_gas." The when-to-use and the alternative are both stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantle_is_contractMantle is-contract checkARead-onlyInspect
Check whether a 0x address on Mantle is a smart contract or a plain wallet: bytecode size, and whether it is an EIP-1167 minimal proxy and which implementation it points to. Use before sending funds or approving a spender; for a fuller risk verdict use check_counterparty. A malformed address is rejected with 400, uncharged. Example: address=0x09Bc4E0D864854c6aFB6eB9A9cdF58aC190D0dF9. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false and idempotentHint=false, and the description usefully reinforces idempotence by noting each call is charged so repeats are not free. It also discloses error behavior (malformed address returns 400, uncharged) and pricing, which the annotations do not cover. It stops short of describing the response shape, but that is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and the recommended usage come first, and every clause about proxies, pricing, and error handling carries real information. It is dense and packs commercial/error details into the middle, which slightly dilutes the front-loading but avoids 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 no output schema, the description still explains the return content (bytecode size, proxy status, implementation target), plus pricing, error handling, and the alternative tool. For a simple one-parameter read tool, nothing an agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% on a single address parameter, so the baseline is 3. The description adds meaning by giving a concrete example value and the malformed-input behavior (400, uncharged), which helps the agent format and validate input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check whether a 0x address on Mantle is a smart contract or a plain wallet') and enumerates the payload the answer carries (bytecode size, EIP-1167 minimal proxy status, implementation address). This goes well beyond restating the name and differentiates it from the sibling mantle_proxy and *_balance tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use before sending funds or approving a spender') and names an alternative for a different need ('for a fuller risk verdict use check_counterparty'). An agent knows exactly when this tool is the right pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantle_logsMantle event logsARead-onlyInspect
Recent contract event logs on Mantle (eth_getLogs): the events a contract emitted over the last N blocks (1-1,000, default 50), optionally filtered by topic0 (the 0x 32-byte event signature hash). Returns up to 100 logs with block, transaction hash and topics. Use to watch transfers or contract events; for one transaction's outcome use mantle_receipt. Example: address=0x09Bc4E0D864854c6aFB6eB9A9cdF58aC190D0dF9. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks to scan (1-1000, default 50) | |
| topic0 | No | Optional 0x event signature hash to filter by | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description still adds real value beyond them: a 100-log return cap, the 1-1,000 block scan window, and the per-call cost model (first 25 free, failed calls free, repeats charged — consistent with idempotentHint=false). This is a solid contribution on top of a well-annotated 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?
Front-loaded with purpose, then return shape, then routing to a sibling, then cost. Dense but every sentence carries information; the pricing tail is slightly bulky but operationally relevant given per-call charges.
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?
There is no output schema, and the description compensates by stating the return contents (up to 100 logs with block, transaction hash and topics). Combined with the cost model and block-range limits, nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents address, blocks (1-1000, default 50) and topic0. The description mostly restates these; its only marginal additions are the gloss '0x 32-byte event signature hash' and a concrete example address value. 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?
States a specific verb and resource ('Recent contract event logs on Mantle (eth_getLogs)') plus scope (last N blocks, optional topic0 filter) and explicitly distinguishes itself from mantle_receipt for single-transaction outcomes. An agent can identify this tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance ('watch transfers or contract events') and names the alternative it is not for ('for one transaction's outcome use mantle_receipt'). The block-range and topic0 filter hints tell the agent how to narrow a scan rather than fall back to a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantle_nonceMantle nonce, account nonceARead-onlyInspect
Read the transaction count (nonce) of a 0x address on Mantle, both confirmed and including pending transactions. Use to build the next transaction or to tell whether an address has ever sent anything; for its balance use mantle_balance. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: malformed addresses are rejected with 400 and uncharged, pricing is $0.01/call with 25 free calls, failed calls are free, and repeats are not free. That last point usefully explains the economic consequence behind idempotentHint=false. It stops short of describing the response shape or chain-reorg handling, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core definition, then usage, then error and pricing semantics, with no filler sentences. Pricing and the 'repeats are not free' clause overlap slightly, and the error/payment details crowd a simple one-parameter read tool, but every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description covers what it returns (confirmed and pending counts), what breaks it (400 on malformed address), cost model, and safe-read semantics. An agent has everything needed to call it correctly and interpret pricing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 100% schema coverage, the baseline is 3; the description exceeds it by giving a concrete example address and stating the validation failure mode for a malformed one, which the schema's bare '0x address' does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the transaction count (nonce)') scoped to a named chain (Mantle) and a named address type (0x), and adds the confirmed-plus-pending detail that distinguishes it from a naive nonce lookup. Chain-specific siblings (eth_nonce, base_nonce, etc.) are already separated by name, and the description makes the Mantle scope 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?
Gives two concrete when-to-use cases ('build the next transaction', 'tell whether an address has ever sent anything') and explicitly routes the balance case to mantle_balance instead. Nothing about tool selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantle_proxyProxy implementation, MantleARead-onlyInspect
Find the implementation behind a proxy contract on Mantle: reads the EIP-1967 implementation, beacon and admin slots, EIP-1822 (UUPS), the older OpenZeppelin layout and EIP-1167 minimal-proxy bytecode, and names the kind found. Use before trusting or decoding a contract whose code can be swapped by its admin; for a fuller risk verdict use contract_risk. A malformed address is 400; an address without code is 404, both uncharged. Example: address=0x09Bc4E0D864854c6aFB6eB9A9cdF58aC190D0dF9. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing error semantics (malformed address = 400, no code = 404, both uncharged), pricing ($0.01/call, first 25 free, failed calls free), and the fact that repeat calls cost money — which explains the otherwise puzzling idempotentHint=false. It restates 'reads or computes only and changes nothing', which the readOnlyHint already covers, and does not describe the shape of the returned record.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, followed by usage, then errors and pricing in a logical order. It is dense and slightly over-packed (standards list plus pricing plus error codes in one paragraph), but nearly every clause carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining returns; it says which slots are read and that the kind is named, plus error codes and cost, which is enough to call it correctly. It stops short of specifying the concrete response fields (implementation, beacon, admin, kind) for a non-proxy case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single required 'address' parameter, so the baseline is 3. The description adds value with a concrete example address that demonstrates the expected 0x hex format, and by tying a malformed address to a 400 response.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Find the implementation behind a proxy contract on Mantle' — and enumerates exactly which slot standards it resolves (EIP-1967 impl/beacon/admin, EIP-1822/UUPS, legacy OZ layout, EIP-1167 minimal proxy) plus that it names the kind detected. This clearly separates it from mantle_is_contract, mantle_storage and mantle_call without the agent needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use before trusting or decoding a contract whose code can be swapped by its admin') and names the alternative for a different need ('for a fuller risk verdict use contract_risk'). The when-to-use condition is tied to a concrete risk scenario rather than left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantle_receiptMantle transaction receiptARead-onlyInspect
Transaction receipt on Mantle (eth_getTransactionReceipt): success or reverted, gas used, effective gas price, fee paid in MNT, number of event logs and any contract created. Use to confirm a payment or call went through; for sender, value and calldata use mantle_tx. Input is a 0x-prefixed 64-hex hash; a pending or unknown hash returns 404, uncharged. Example: hash=0xa93012fcae16a5b4b9d6f7c7469ed2838cd27eb387b28e7334678add918d174f. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: pending/unknown hashes return 404 and are uncharged, each call costs $0.01 via x402/card key, first 25 free, failed calls free, and repeats are not free. That pricing-and-retry information is exactly the kind of behavior an agent needs and cannot get from readOnlyHint/openWorldHint. It stops short of describing the receipt's shape beyond field names, but there is no output schema to lean on, so that omission is only minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and returned fields, then usage, then input, then pricing. Dense and nearly waste-free, though the inline full 66-character example hash and the payment-mechanics clause make it longer than strictly necessary for a one-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value explanation and does so adequately. Input contract, failure mode, cost model, and sibling boundary are all covered, leaving nothing an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the hash format is already documented; the description repeats it but adds real value with the 404-on-pending behavior and a concrete example hash. That goes beyond a baseline 3 but does not add anything about edge cases like malformed vs. well-formed-but-unknown hashes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource, names the underlying RPC method (eth_getTransactionReceipt), and enumerates exactly what is returned (status, gas used, effective gas price, MNT fee, log count, contract created). It explicitly distinguishes itself from the closest sibling, mantle_tx, by naming the fields that belong there instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case ("confirm a payment or call went through") and routes the agent to the alternative ("for sender, value and calldata use mantle_tx"). The when-not-to-use case is stated explicitly rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantle_storageStorage slot read, MantleARead-onlyInspect
Read one raw storage slot of a contract on Mantle (eth_getStorageAt): the 32-byte word, as a number and, when it holds one, as an address. Slot is a decimal index or a 0x 32-byte key (mapping and proxy slots). Use to inspect contract state that has no getter, owners or implementation pointers; for proxies use mantle_proxy. A malformed address or slot is rejected with 400, uncharged. Example: address=0x09Bc4E0D864854c6aFB6eB9A9cdF58aC190D0dF9. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | Slot: a decimal index (0, 1, 2…) or a 0x 32-byte key | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses error handling ('malformed address or slot is rejected with 400, uncharged'), cost model ($0.01/call via x402 USDC or card key, first 25 free, failed calls free), and clarifies that repeats are charged — which explains the idempotentHint=false flag. Also confirms read-only semantics ('reads or computes only and changes nothing'), consistent with readOnlyHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and return shape, then usage, then errors, then pricing. Dense but mostly purposeful; the pricing/auth sentence is long and reads partly as boilerplate, keeping it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully carries the burden: it specifies return values (word as number plus address when applicable), error behavior, cost, and safety profile. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real value: it explains that a 0x 32-byte slot key is used for mapping and proxy slots and gives a concrete address example. Only slightly above baseline because the decimal-vs-hex distinction is already in 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?
States a specific verb and resource ('Read one raw storage slot of a contract on Mantle') and names the underlying RPC (eth_getStorageAt), including the return shape (32-byte word as number, address when applicable). It also distinguishes itself from the sibling family by pointing proxy introspection to mantle_proxy.
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 states when to use it ('inspect contract state that has no getter, owners or implementation pointers') and names the alternative for the proxy case ('for proxies use mantle_proxy'). An agent can route between mantle_storage, mantle_proxy, and mantle_call without opening schemas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantle_token_balanceMantle ERC-20 balanceARead-onlyInspect
ERC-20 token balance of a wallet on Mantle (USDC, USDT, WETH or any token, via balanceOf): raw amount, decimals, symbol and the human-readable amount, live from the token contract. Use to check stablecoin or token holdings before a transfer or trade; for the native coin use mantle_balance. Both inputs are 0x addresses (40 hex characters); no contract returns 404 and a non-ERC-20 contract 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC, USDT, WETH or DAI, or the 0x ERC-20 contract address | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/destructive annotations: documents the error contract (404 for no contract, 422 for non-ERC-20, both uncharged), the billing model ($0.01/call via x402 or card key, first 25 free, failed calls free), and that repeats are not free. This is exactly the kind of context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and return shape, and every sentence carries distinct information (usage, input format, errors, pricing). It is dense rather than bloated, though the pricing sentence is lengthy and could be trimmed slightly.
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?
There is no output schema, but the description enumerates the returned fields (raw amount, decimals, symbol, human-readable amount), so an agent knows exactly what it will get, plus error and cost behavior. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds constraints not in the schema: both inputs are 0x addresses of 40 hex characters, and the token argument accepts either a ticker or a contract address. That is meaningful disambiguation for invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('ERC-20 token balance of a wallet on Mantle ... via balanceOf'), enumerates the return fields, and explicitly distinguishes itself from the sibling mantle_balance for the native coin.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('check stablecoin or token holdings before a transfer or trade') and an explicit exclusion routing to another tool ('for the native coin use mantle_balance'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantle_token_infoMantle token info, ERC-20ARead-onlyInspect
Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Mantle, live from the contract. Use to identify an unknown token address or to format raw amounts; for a holder's balance use mantle_token_balance. Input is a ticker (USDC, WETH…) or the token's 0x contract address; an address that is not an ERC-20 contract returns 422, uncharged. Example: token=0x09Bc4E0D864854c6aFB6eB9A9cdF58aC190D0dF9. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful non-annotated behavior: 422 on non-ERC-20 addresses with no charge, failed calls free, per-call pricing, and the first-25-free allowance, which explains the non-idempotentHint. However, 'Reads or computes only and changes nothing' largely restates the annotations, and repeated free/charged phrasing dilutes the 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?
Front-loaded with purpose and the key alternative, and the example is well placed. It is somewhat dense with pricing/credits details repeated in several forms ('uncharged', 'first 25 free', 'failed calls free', 'each call is charged'), which adds minor 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?
With no output schema, the description correctly compensates by naming the four returned fields. It also covers input formats, the error case, and cost model, leaving no obvious gap for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds real value beyond the schema: it clarifies a ticker OR a 0x address is acceptable, gives a worked address example, and documents the failure mode (422, uncharged) for addresses that are not ERC-20 contracts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('look up') plus resource (ERC-20 token contract metadata on Mantle) and an explicit enumeration of the returned fields (name, symbol, decimals, total supply). It also distinguishes itself from mantle_token_balance by naming that sibling directly.
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?
States two concrete use cases ('identify an unknown token address', 'format raw amounts') and an explicit when-not with the alternative tool ('for a holder's balance use mantle_token_balance'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantle_token_transfersToken transfers, MantleARead-onlyInspect
List a wallet's recent transfers of one ERC-20 token (default USDC) on Mantle, in and out, over the last N blocks (1-2,000, default 1,000): direction, counterparty, amount and transaction, newest first, up to 50. Use to confirm a payment arrived or see what was sent; for the current balance use mantle_token_balance. Malformed addresses are rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Token: a ticker such as USDT or WETH, or the 0x ERC-20 contract (default: USDC on this network) | |
| blocks | No | How many recent blocks to scan (1-2000, default 1000; 2,000 blocks is about 67 minutes on Mantle) | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses error behavior (malformed addresses rejected with 400, uncharged), billing model ($0.01/call via x402 or card key, first 25 free, failed calls free), repeat-call cost, and result shape/ordering (newest first, capped at 50). The "each call is charged, so repeats are not free" line also correctly reinforces idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what it returns and how it is scoped, then use case, then error/pricing caveats — all sentences carry information. It is densely packed into essentially one paragraph, with pricing and example details competing for the same block, which slightly hurts scannability.
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 no output schema, the description takes on the burden of describing the return fields (direction, counterparty, amount, transaction), ordering, and the 50-row cap — which it does. Combined with cost, error and network context, nothing an agent needs before calling is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so token, blocks range and defaults are already documented in the schema, and the description mostly restates them (default USDC, 1-2,000 blocks). The only genuine addition is a worked address example, which is marginal — baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List a wallet's recent transfers of one ERC-20 token ... on Mantle, in and out") plus scope (last N blocks, newest first, up to 50). The default token (USDC) and the network are named, and it explicitly separates itself from mantle_token_balance, so an agent can pick it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete intent ("confirm a payment arrived or see what was sent") and names the alternative for the neighboring question ("for the current balance use mantle_token_balance"). It does not address the other plausible route to the same data — raw Transfer logs via mantle_logs — or when token_info would be needed first to resolve a contract, so guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantle_txMantle transactionARead-onlyInspect
Look up a Mantle transaction by hash: sender, recipient, value in MNT, nonce, gas limit, the 4-byte function selector and its block. Use to see what was sent or whether it exists; for success or failure and fees paid use mantle_receipt, for emitted events mantle_logs. Input is a 0x-prefixed 64-hex hash; an unknown hash returns 404, uncharged. Example: hash=0xa93012fcae16a5b4b9d6f7c7469ed2838cd27eb387b28e7334678add918d174f. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is rich in behavioral context far beyond the annotations. It discloses crucial operational facts: billing (cost per call, first 25 free, failed calls free), execution guarantee (reads/computes only), and edge case behavior (unknown hash returns 404, uncharged).
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 paragraph is dense, but every sentence carries essential, non-redundant information, progressing logically from basic function to usage guidelines, then behavioral specifics and finally cost/operational constraints. It is highly 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 complexity of a blockchain interaction tool, the description is fully comprehensive. It covers input format, operational safety, alternative routing, and the economic constraints of using 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?
While the schema coverage is 100%, the description reinforces the critical input format requirement—a '0x-prefixed 64-hex hash.' This is an essential semantic detail that ensures correct tool invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The purpose is perfectly clear: 'Look up a Mantle transaction by hash.' It achieves maximum clarity by simultaneously listing all transaction components it reveals and explicitly directing the user to two specific sibling tools for related information (mantle_receipt and mantle_logs).
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 tool provides excellent usage guidelines by specifying exactly which alternative tool to use for specific needs. It guides the user to mantle_receipt for success/failure/fees and mantle_logs for events, preventing tool confusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merkle_treeMerkle tree, merkle root and proofsARead-onlyInspect
Build a Merkle tree for an allowlist or airdrop and get the root and a proof per entry, OpenZeppelin-compatible: values ABI-encoded by types (address,uint256 for airdrops), double-keccak leaves, sorted pairs, so proofs verify with MerkleProof.verify and the dump loads in StandardMerkleTree.load. Up to 2,000 values; proofs for the first 256 or the one you ask for. Ready bytes32 leaves work too. Use to set up a claim contract or check a list. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| types | No | Solidity types of each row's fields, comma-separated (default: read from the rows: address,uint256 or address or bytes32 leaves) | |
| values | Yes | The entries: a JSON array of rows ([["0xabc…","100"],…]) or one row per line, fields comma-separated | |
| proofFor | No | Only the proof for this entry: its 0-based index or its first field (an address) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses hard limits (2,000 values, proofs for the first 256 unless proofFor is given), the exact hashing/encoding scheme, output compatibility with StandardMerkleTree.load, and the billing model including that failed calls are free. It also confirms the read-only nature ("Reads or computes only and changes nothing") and explains why idempotentHint=false matters in practice (each call is charged).
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?
Everything stated is useful and the payoff-affecting facts (compatibility, limits, pricing) are front-loaded. The main weakness is density — one very long run-on sentence with heavy parenthetical packing makes it harder to scan than a couple of short sentences would.
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 no output schema, the description carries the burden of explaining return values and does so: root, proof per entry, proof cap of 256 unless proofFor is supplied. Combined with the limits, encoding rules, and billing, an agent has everything needed to call this correctly and to know the cost of doing so.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains that values are ABI-encoded by types with address,uint256 as the airdrop default, that raw bytes32 leaves are accepted, and that proofFor selects either an index or a first-field address. It stops short of describing how types is inferred or what happens on rows that conflict with declared types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Build a Merkle tree for an allowlist or airdrop") and immediately names the concrete outputs (root and a proof per entry). It also pins down the exact flavor of tree (OpenZeppelin-compatible, double-keccak, sorted pairs), which cleanly separates it from the sibling merkle_verify that only checks proofs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use to set up a claim contract or check a list" gives a clear when-to-use context. It does not explicitly route the agent away from merkle_verify or state exclusions, so it falls short of a full when/when-not treatment, but the intended context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merkle_verifyMerkle proof verifyARead-onlyInspect
Check a Merkle proof against a root, the way OpenZeppelin's MerkleProof.verify does on chain (sorted-pair keccak256): give the leaf hash, or the entry's values and their Solidity types (double-keccak OpenZeppelin leaf). Returns valid true or false and the root the proof leads to. Use before submitting an airdrop claim or to debug an allowlist mint. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| leaf | Yes | The leaf hash, or the entry's fields (comma-separated or a JSON array) to hash with types | |
| root | Yes | The Merkle root (32-byte hex) | |
| proof | Yes | The proof: JSON array or comma-separated 32-byte hashes | |
| types | No | Solidity types of value's fields (default address,uint256) | |
| value | No | The entry's fields, instead of leaf (comma-separated or a JSON array) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint/destructiveHint already supplied, the description adds genuinely non-obvious behavior: cost per call ($0.01 via x402 USDC or card key), first 25 free, failed calls free, and 'each call is charged, so repeats are not free' — which explains the otherwise puzzling idempotentHint=false for a pure computation. It also states 'Reads or computes only and changes nothing,' consistent with the annotations, and discloses return shape ('valid true or false and the root the proof leads to') since no output schema 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?
Purpose and algorithm come first, followed by parameter form, returns, use cases, and pricing — a sensible front-loaded order with no filler sentences. The payment sentence is long and merges several facts (price, two payment rails, free tier, failed-call policy), which makes it slightly dense but still load-bearing for a paid tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter, annotation-covered, no-output-schema tool, the description covers what it does, how leaves are hashed, what comes back, when to call it, and its cost/safety profile — nearly everything an agent needs. The residual gap is not pointing at merkle_tree for proof construction and not disambiguating the leaf-vs-value path with types.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description still adds meaning the schema doesn't: the leaf may be supplied either as a raw hash or as entry values plus Solidity types, and that the value path uses double-keccak OpenZeppelin leaf hashing under sorted-pair keccak256. It leaves one ambiguity unresolved — whether 'types' is only meaningful together with 'value' — but overall it clarifies the leaf/value duality beyond the field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource — 'Check a Merkle proof against a root' — and pins the exact semantics ('the way OpenZeppelin's MerkleProof.verify does on chain (sorted-pair keccak256)'), so it cannot be confused with generic siblings like eth_call or keccak. It stops short of naming its nearest sibling merkle_tree (which builds trees/proofs) as the contrasting tool, so sibling differentiation is implied by the algorithm detail rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives two concrete trigger scenarios — 'Use before submitting an airdrop claim or to debug an allowlist mint' — which is real when-to-use guidance. It does not say when NOT to use it, nor route the agent to merkle_tree when a proof needs to be generated first, which is the obvious adjacent need.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
networkNetwork info, Base and USDC: Base network facts for payment clients: chain id, USDC contract, RPC and explorer URLsARead-onlyInspect
Reference facts for paying and reading on Base mainnet: chain id, native USDC contract and decimals, block explorer and public RPC URLs, and the x402 network identifier. Use to configure an x402 or Base client. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Optional: comma-separated top-level result keys to keep, for a smaller answer (for example only=price,symbol); unknown keys are ignored and an empty match returns the full result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses cost per call ($0.01), that failed calls are free, that the first 25 calls are free, and that repeats are charged — valuable context an agent cannot infer from readOnlyHint/destructiveHint. It also explicitly states the tool changes nothing, reinforcing readOnlyHint without contradicting it. It says nothing about response shape or the odd idempotentHint=false, leaving that hint unexplained.
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 returned fields are front-loaded in the first clause, followed by the use case and then pricing. Sentences are dense but each contributes; only 'Reads or computes only and changes nothing' is mildly redundant against the readOnlyHint annotation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-optional-parameter, no-output-schema reference tool, the description covers what is returned, why to call it, and the billing model. Nothing an agent needs in order to decide to call it and to expect the cost 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?
The single parameter 'only' is fully documented in the schema (100% coverage) and the description adds nothing about filtering behavior. Baseline 3 applies when the schema already carries the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a precise verb-plus-resource statement: static reference constants for Base mainnet, enumerated explicitly (chain id, native USDC contract and decimals, explorer and RPC URLs, x402 network identifier). This clearly separates it from the many sibling tools that perform live chain queries (base_block, base_token_info, base_gas), which return mutable state rather than fixed configuration facts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names a concrete use case ('Use to configure an x402 or Base client') and explains the payment paths (x402 USDC or card key via /credits, first 25 free). It does not name alternatives or state when not to use it, but the static-configuration framing makes the boundary reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
op_allowanceToken allowance, Optimism ERC-20ARead-onlyInspect
ERC-20 token allowance on Optimism: how much a spender may move from an owner's wallet (allowance), raw and in token units, and whether the approval is unlimited. Use to check an approval before a swap or to audit risky open approvals; for the owner's balance use op_token_balance. Token is a ticker (USDC, USDT, WETH…) or a 0x contract; a missing contract is 404 and a non-ERC-20 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | 0x wallet that gave the approval | |
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address | |
| spender | Yes | 0x contract or wallet allowed to spend (the example is Uniswap Permit2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/destructive annotations it discloses pricing ($0.01/call via x402, first 25 free, failed calls free), error semantics (404 for missing contract, 422 for non-ERC-20, both uncharged), and clarifies that repeats are billed — directly explaining the idempotentHint=false flag in practical terms.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and every sentence carries information, but the pricing/billing clauses are packed into a dense multi-clause sentence that could be trimmed or split without losing meaning.
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?
Only three fully-specified parameters, no output schema, and the description still covers the return shape, error behavior, cost model, and a sibling alternative — nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds meaning beyond the schema by explaining that the token parameter accepts a ticker or 0x contract and what each failure mode (404/422) maps to. Owner and spender semantics are largely restated from the schema, so not a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: ERC-20 allowance on Optimism, plus what is returned (raw and token units, unlimited flag). It explicitly distinguishes itself from the sibling op_token_balance, so an agent can separate the two without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use cases ('check an approval before a swap or to audit risky open approvals') and names the alternative for a different need ('for the owner's balance use op_token_balance'). Routing is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
op_balanceOptimism balance, native coinARead-onlyInspect
Native ETH balance (eth_getBalance) of any 0x wallet address on Optimism at the latest block, in wei and in ETH. Use to check whether a wallet can pay gas or a transfer; for ERC-20 tokens use op_token_balance, for all holdings at once use wallet_portfolio. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet or contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly and non-destructive annotations, the description discloses pricing ($0.002/call, first 25 free), that failed calls are free, that malformed addresses are rejected with 400 uncharged, that each successful call is charged, and that results are at the latest block in both wei and ETH. These details materially help an agent understand cost, error behavior, and repeat-call implications.
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 operation, then usage alternatives, validation behavior, example, pricing, and safety. Every sentence adds practical information, and there is no redundant or filler content.
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 one-parameter balance lookup with no output schema, the description covers the chain, block scope, units, usage alternatives, validation errors, billing behavior, and read-only nature. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole address parameter is already fully described in the schema, so the baseline is high. The description still adds useful meaning by stating that any 0x wallet address is accepted, that malformed addresses are rejected with 400, and by providing a concrete example address.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: native ETH balance via eth_getBalance for any 0x wallet address on Optimism at the latest block. It also names the sibling alternatives op_token_balance and wallet_portfolio, so an agent can distinguish it from adjacent tools without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit usage guidance: use it to check whether a wallet can pay gas or a transfer, and routes ERC-20 queries to op_token_balance and aggregate holdings to wallet_portfolio. This is a clear when-to-use and when-to-use-something-else statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
op_blockOptimism block numberARead-onlyInspect
Latest block number and block details on Optimism, or any block by decimal number: hash, timestamp, transaction count, gas used and limit, base fee in gwei and producer. Use for timestamps and confirmation counts; for current fees use op_gas. A block that does not exist yet returns 404, uncharged. Example: number=latest. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| number | No | Block number, or 'latest' (default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, non-destructive, and, crucially, idempotentHint=false; the description explains why by noting each call is charged so repeats are not free, plus pricing tiers and that failed calls are free. That is real added context beyond the structured fields. It stops short of describing response shape depth or pagination-style concerns, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the capability and returned fields, then usage routing, then cost/edge-case details. Dense but every clause carries information; the pricing sentence is long but relevant given the non-idempotent, per-call-cost model.
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?
There is no output schema, and the description compensates by listing the returned fields, so an agent knows what comes back. Combined with the 404 behavior and cost model, a simple single-param read tool is fully covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents the one param as block number or 'latest' with default. The description adds that numbers must be decimal and supplies a concrete example (number=latest), which meaningfully reduces misuse risk.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Latest block number and block details on Optimism, or any block by decimal number') and enumerates returned fields (hash, timestamp, tx count, gas used/limit, base fee, producer). It also names the sibling it is not for ('for current fees use op_gas'), so it is separable from op_gas and op_gas_history without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('timestamps and confirmation counts') and an explicit when-not with the alternative named ('for current fees use op_gas'). It also covers the edge case of a not-yet-existing block returning 404, uncharged.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
op_callEth call, Optimism contract callARead-onlyInspect
Read-only contract call on Optimism (eth_call): send ABI-encoded calldata to a contract at the latest block and get the raw return data, without a transaction or gas. Use to read any view function that has no dedicated tool (the example reads USDC totalSupply, selector 0x18160ddd); decode the result with the function's ABI. Calldata up to 8 KB; a call that reverts is 422 with the reason, uncharged. Example: to=0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85, data=0x18160ddd. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x contract address to call | |
| data | Yes | 0x ABI-encoded calldata: 4-byte selector plus arguments | |
| from | No | Optional 0x sender address for calls that check msg.sender |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: 8 KB calldata cap, revert behavior (422 with reason, uncharged), required ABI decoding of the result, and the per-call $0.01 pricing with 25 free calls. The pricing note usefully explains the idempotentHint=false annotation — repeats cost money.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core operation and the main usage rule before pricing and error details. Slightly dense with parenthetical details and pricing, but nearly every clause carries information an agent needs.
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 no output schema, the description correctly explains that the return is raw return data requiring ABI decoding, and covers failure mode and cost. For a low-parameter passthrough tool, nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so `to`, `data`, and `from` are already documented; the description mostly restates the ABI-encoded calldata requirement. The worked example (to=0x0b2C..., data=0x18160ddd) adds modest concrete value but no new semantics for the optional `from` parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — read-only eth_call on Optimism — with the scope (latest block, no transaction, raw return data). It is clearly distinguishable from the many sibling *_call tools (eth_call, base_call, arb_call, polygon_call) by naming the chain, and from dedicated read tools like op_token_balance by framing it as the generic escape hatch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use it for view functions that have no dedicated tool, and the example shows the concrete case (USDC totalSupply). It does not explicitly state when to prefer a sibling like op_token_balance or how it differs from eth_call when a user is ambiguous about chain, but the positive guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
op_estimate_gasEstimate gas, OptimismARead-onlyInspect
Estimate the gas a transaction would use on Optimism (eth_estimateGas) and what it would cost at the current gas price, in gas units, gwei and ETH. Give to, plus value in ETH and calldata for a contract call, and the sender when the call depends on it. Use before sending a transaction or to price a batch; for the gas price alone use op_gas. A transaction that would revert is 422 with the reason, uncharged. Example: to=0x000000000000000000000000000000000000dEaD. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x recipient or contract address | |
| data | No | Optional 0x calldata for a contract call | |
| from | No | 0x sender address (default: an empty address) | |
| value | No | Amount of ETH to send, in ETH (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: 422-with-reason for reverting transactions, no charge on failure, per-call pricing, and the warning that repeats are not free (which explains the idempotentHint=false annotation). The only shortfall is that the revert/pricing detail is embedded in a dense run-on rather than clearly separated from estimation semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then usage routing, then params, then pricing — a sensible order with no filler about the tool's importance. Slightly overpacked (pricing promo sentence plus example), but every sentence carries usable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Though there is no output schema, the description states the return shape in gas units, gwei and ETH, covers the error path (422 with reason), and discloses cost and safety characteristics. An agent has everything needed to call it and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real semantic value beyond it: value is denominated in ETH, calldata is for a contract call, and 'from' matters only when the call depends on the sender. That is meaning the schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Estimate the gas a transaction would use on Optimism') plus the underlying RPC (eth_estimateGas), and explicitly distinguishes itself from the sibling op_gas. It also states the output dimensions (gas units, gwei, ETH), so an agent knows exactly what it gets back.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('before sending a transaction or to price a batch') and an explicit alternative with the selecting condition ('for the gas price alone use op_gas'). Nothing about routing to the sibling is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
op_gasOptimism gas priceARead-onlyInspect
Current gas price on Optimism (eth_gasPrice): gas price, base fee and suggested priority fee in gwei, plus what a plain ETH transfer (21,000 gas) costs right now. Takes no input. Use before sending a transaction or to decide whether to wait; for the fee a past transaction actually paid use op_receipt. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Optional: comma-separated top-level result keys to keep, for a smaller answer (for example only=price,symbol); unknown keys are ignored and an empty match returns the full result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description reinforces this with 'reads or computes only and changes nothing'. It adds genuinely useful non-annotation context on pricing, auth (x402 USDC or card key), free tier, and the fact that repeats are charged, which aligns with idempotentHint=false. It does not, however, describe freshness/staleness of the returned price, which matters for a rate that changes every block.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and returned values, with usage guidance following. Slight redundancy between 'Price $0.002/call via x402 USDC or a card key' and 'each call is charged, so repeats are not free', which say nearly the same thing twice.
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 no output schema, the description fully carries the return-value burden by naming each field and its unit. It also covers cost, auth, and failure behavior, leaving nothing essential an agent needs before calling.
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 would be 3, but the description says 'Takes no input' while the schema defines an optional `only` projection parameter. That statement actively under-describes the interface and could lead an agent to skip a useful response-trimming option.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb/resource (current Optimism gas price via eth_gasPrice) and enumerates the returned quantities: gas price, base fee, suggested priority fee in gwei, and the cost of a 21,000-gas ETH transfer. It also names the sibling it is not (op_receipt), so an agent can separate it from surrounding tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit usage conditions ('before sending a transaction or to decide whether to wait') and an exclusion routing to op_receipt for historical/actual paid fees. It stops short of distinguishing itself from op_gas_history and op_estimate_gas, which are the most confusable siblings in this list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
op_gas_historyOptimism gas history, gas priceARead-onlyInspect
Gas price history on Optimism (eth_feeHistory): base fee in gwei for each of the last N blocks (5-100, default 20), how full each block was, and the 10th, 50th and 90th percentile priority fees, with the low, average and high base fee over the window. Use to judge whether fees are rising, pick a priority fee or time a transaction; for the current price alone use op_gas. Example: blocks=20. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks, 5-100 (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and non-destructive, but the description adds disclosure the annotations cannot: pay-per-call billing, 25 free calls, failed calls free, and explicitly that repeated identical calls are still charged — which explains and reinforces the idempotentHint=false annotation. That billing/repeat-cost warning is exactly the kind of behavioral context an agent needs before looping.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what is returned, then usage, then an example, then pricing. Every sentence carries information, though the trailing pricing/licensing clause is slightly long relative to the single-parameter payload.
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?
No output schema exists, so the description must carry the return shape — and it does, specifying per-block base fee, fullness, three priority-fee percentiles, and window-level low/average/high. Combined with usage and billing notes, an agent has everything needed to call and interpret this 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?
Schema coverage is 100% and the schema already documents 'How many recent blocks, 5-100 (default 20)'. The description restates the same range and default and adds only the trivial example blocks=20, so it adds little beyond the structured field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: gas price history on Optimism via eth_feeHistory, and enumerates exactly what is returned (base fee in gwei per block, block fullness, 10/50/90th percentile priority fees, low/avg/high base fee). It explicitly separates itself from op_gas by scoping that sibling to 'current price alone'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete decision contexts ('judge whether fees are rising, pick a priority fee or time a transaction') and names the alternative tool with the condition that selects it ('for the current price alone use op_gas'). An agent does not need to infer when to pick this over op_gas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
op_is_contractOptimism is-contract checkARead-onlyInspect
Check whether a 0x address on Optimism is a smart contract or a plain wallet: bytecode size, and whether it is an EIP-1167 minimal proxy and which implementation it points to. Use before sending funds or approving a spender; for a fuller risk verdict use check_counterparty. A malformed address is rejected with 400, uncharged. Example: address=0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds cost and failure semantics that annotations cannot express: malformed addresses return 400 uncharged, failed calls are free, $0.01/call via x402 USDC or card key, first 25 free. It also explains the otherwise puzzling idempotentHint=false by stating each call is charged so repeats are not free, and confirms 'reads or computes only and changes nothing.'
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then usage, then error/example, then pricing. Every sentence carries information, but the pricing tail is dense and the description runs long for a single-parameter read tool; slight trimming of the payment detail would improve scanability without losing meaning.
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?
There is no output schema, so the description carries the burden of describing return values, and it does: bytecode size, whether it is an EIP-1167 minimal proxy, and which implementation it points to. Combined with error and cost behavior, an agent has everything needed to call this correctly and interpret the result.
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 a single required 'address' string, so the baseline is 3. The description adds value beyond the schema by supplying a concrete example address and stating the rejection behavior for malformed input (400, uncharged), which tells the agent what format is acceptable and what happens on a bad 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?
States a specific verb and resource ('Check whether a 0x address on Optimism is a smart contract or a plain wallet') and enumerates what the result contains: bytecode size, EIP-1167 minimal-proxy detection, and implementation address. The chain scoping ('on Optimism') clearly distinguishes it from the many sibling *_is_contract tools for other networks, and the proxy detail distinguishes it from a bare existence check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use trigger ('before sending funds or approving a spender') and names an alternative for a different need ('for a fuller risk verdict use check_counterparty'). The agent can route between this and the sibling without opening any schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
op_logsOptimism event logsARead-onlyInspect
Recent contract event logs on Optimism (eth_getLogs): the events a contract emitted over the last N blocks (1-1,000, default 50), optionally filtered by topic0 (the 0x 32-byte event signature hash). Returns up to 100 logs with block, transaction hash and topics. Use to watch transfers or contract events; for one transaction's outcome use op_receipt. Example: address=0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks to scan (1-1000, default 50) | |
| topic0 | No | Optional 0x event signature hash to filter by | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-idempotent/non-destructive, yet the description adds real substance: a scan window of 1-1,000 blocks (default 50), a hard cap of ~100 returned logs, the returned fields, and the billing model with the note that repeats are not free — which explains the non-idempotent hint. The closing 'changes nothing' sentence only restates readOnlyHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and returns, then usage, then the example, then cost. Almost every sentence earns its place, though 'Reads or computes only and changes nothing' duplicates the readOnlyHint annotation and the pricing sentence is dense.
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?
No output schema exists, and the description compensates by naming the returned fields (block, transaction hash, topics) and the 100-log ceiling. Together with the scan-window limits and cost model, an agent has everything needed to call it and interpret results.
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 all three parameters are documented upstream; the description repeats the block range/default and clarifies that topic0 is the 32-byte event signature hash, only marginally beyond the schema. The example address is a nice touch but not semantic clarification of usage rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Recent contract event logs on Optimism') and anchors it to the underlying RPC call (eth_getLogs). It names the sibling it is not — op_receipt — so an agent can separate it from the other ~20 op_* tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit positive case ('watch transfers or contract events') and an explicit negative case with the alternative to use instead ('for one transaction's outcome use op_receipt'). That is the when/when-not/alternative triad done properly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
op_nft_balanceNFT balance, OptimismARead-onlyInspect
How many NFTs of one ERC-721 collection a wallet holds on Optimism (balanceOf), with the collection's name and symbol. Use to check a holder before a token-gated action or to see whether a wallet still holds a collection; for who holds one token id use op_nft_owner. Both inputs are 0x addresses; a missing contract is 404, a contract that is not ERC-721 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet address | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses failure semantics (404/422, both uncharged), billing behavior ($0.01/call via x402 USDC or card key, first 25 free, failed calls free), and the fact that repeats cost money again — which explains the otherwise surprising idempotentHint=false. It also confirms read-only, consistent with readOnlyHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph with purpose front-loaded, followed by alternatives, error codes and pricing. Every clause carries information, though the pricing/billing run-on is heavy enough that it slightly crowds the core call semantics.
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 two-address read tool with no output schema, the description covers inputs, chain, return contents (balance plus collection name and symbol), error behavior, cost and safety. Nothing an agent needs in order to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented in the schema. The description only restates that both inputs are 0x addresses and that the contract must be an ERC-721 collection, adding little beyond the structured field descriptions. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb, resource, standard and chain: count of NFTs from one ERC-721 collection held by a wallet on Optimism via balanceOf, plus the name/symbol returned. It explicitly differentiates from the sibling op_nft_owner ('for who holds one token id use op_nft_owner'), so the agent can choose without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use cases (pre-token-gated-action holder check, verifying a wallet still holds a collection) and names the alternative tool with the condition that selects it. It also supplies when-not conditions in the form of error outcomes (404 for missing contract, 422 for non-ERC-721).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
op_nft_metadataNFT metadata, OptimismARead-onlyInspect
NFT metadata on Optimism: the token URI of one ERC-721 token id (tokenURI) and the JSON it points to (name, description, image, attributes), read from data: URIs, https or ipfs:// (through ipfs.io). Strings over 1,000 characters, such as on-chain SVG images, are shortened. Use to show or check what an NFT is; for its owner use op_nft_owner. A token that does not exist is 422, uncharged; unreachable metadata is reported in metadataError. Example: contract=0xC36442b4a4522E871399CD717aBDD847Ab11FE88, tokenId=1. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | Token id, a whole number | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description discloses resolution sources (data: URIs, https, ipfs:// via ipfs.io), truncation of strings over 1,000 characters such as on-chain SVGs, the 422-uncharged failure mode, metadataError reporting, and the charging model ($0.01/call, first 25 free, failed calls free). "Each call is charged, so repeats are not free" explains the idempotentHint=false rather than 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?
Front-loaded with the operation and semantics, then alternatives, then edge cases, then pricing — a logical order. The pricing/credits clause is longer than strictly needed for tool selection, which keeps it off a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return burden and does: it enumerates the returned fields, describes transformation of long strings, and defines both failure shapes (422 vs metadataError). Nothing an agent needs to call or interpret this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes modestly further by tying tokenURI lookups to "one ERC-721 token id" and supplying a concrete worked example (contract=0xC364...FE88, tokenId=1) that clarifies address/id formatting. It does not add new constraints beyond the schema's "whole number" and 0x-address notes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource with scope: reads the tokenURI of one ERC-721 token id on Optimism and the JSON it resolves to (name, description, image, attributes). It also names the adjacent sibling it is not (op_nft_owner), so an agent can pick it without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use to show or check what an NFT is; for its owner use op_nft_owner" gives explicit when-to-use plus a named alternative with the condition that selects it. Error-path guidance (non-existent token = 422 uncharged, unreachable metadata surfaces in metadataError) further tells the agent what to expect at failure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
op_nft_ownerOptimism NFT ownerARead-onlyInspect
Owner of an NFT on Optimism: the wallet that holds one ERC-721 token id right now (ownerOf), plus the collection's name and symbol. Use to verify who holds an NFT before a trade, a mint gate or an airdrop; for how many a wallet holds use op_nft_balance, for the token's metadata op_nft_metadata. A missing contract is 404, a token that does not exist 422, both uncharged. Example: contract=0xC36442b4a4522E871399CD717aBDD847Ab11FE88, tokenId=1. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | Token id, a whole number | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful non-annotation context: 404 for a missing contract, 422 for a nonexistent token, both uncharged, plus $0.01/call pricing and the first-25-free rule. However, the pricing/billing block is repeated in compressed form (charged per call, failed calls free), which is helpful but not deep behavioral disclosure beyond cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and return shape are front-loaded, then alternatives, then error codes and pricing. It is dense but every sentence carries information; the only mild redundancy is the repeated statement that calls are charged (both in the price sentence and the closing clause).
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?
There is no output schema, yet the description states exactly what is returned: the owner wallet plus collection name and symbol. Combined with error semantics and cost, an agent has everything needed to call and interpret the result.
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 both parameters (contract address, token id) are already documented in the schema. The description reinforces this with a concrete example pair (contract=0xC364..., tokenId=1), which aids correctness but adds no syntax or constraint information 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 names a specific verb and resource: the wallet that currently holds a given ERC-721 token id (ownerOf), plus the collection name and symbol. It explicitly differentiates itself from siblings op_nft_balance and op_nft_metadata, so an agent can route correctly without inspecting other schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states concrete use cases (verifying holders before a trade, mint gate, airdrop) and names the two alternatives with the conditions that select them: op_nft_balance for counts, op_nft_metadata for token metadata. Nothing about when to prefer this tool is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
op_nonceOptimism nonce, account nonceARead-onlyInspect
Read the transaction count (nonce) of a 0x address on Optimism, both confirmed and including pending transactions. Use to build the next transaction or to tell whether an address has ever sent anything; for its balance use op_balance. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/idempotent annotations, it discloses pending-vs-confirmed inclusion, the 400-on-malformed-address behavior with no charge, pricing ($0.01/call, x402 USDC or card key, first 25 free, failed calls free), and that repeats are billed. That is exactly the kind of billing and failure context an agent cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and use cases are front-loaded, followed by pricing and safety notes; the example is compact. Minor redundancy appears where 'changes nothing' and 'repeats are not free' restate the readOnly and idempotent annotations, but the sentences are short and earn their space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, it covers purpose, cost, failure modes, and billing. The only gap is the return shape: 'confirmed and including pending' hints at two counts without saying how they are presented, which an agent may need to interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single address parameter, so baseline would be 3; the description adds a concrete example address and confirms the 0x format plus rejection behavior, giving modest extra meaning. It does not explain any normalization or checksum handling, so a 4 rather than 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Read the transaction count (nonce) of a 0x address on Optimism', and clarifies it covers both confirmed and pending counts. The Optimism scoping and the pointer to op_balance for a different quantity separate it from the otherwise identical *_nonce 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?
Gives two concrete use cases ('build the next transaction', 'tell whether an address has ever sent anything') and explicitly routes balance queries to op_balance. The chain is fixed by the tool, so no further alternative-selection guidance is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
op_proxyProxy implementation, OptimismARead-onlyInspect
Find the implementation behind a proxy contract on Optimism: reads the EIP-1967 implementation, beacon and admin slots, EIP-1822 (UUPS), the older OpenZeppelin layout and EIP-1167 minimal-proxy bytecode, and names the kind found. Use before trusting or decoding a contract whose code can be swapped by its admin; for a fuller risk verdict use contract_risk. A malformed address is 400; an address without code is 404, both uncharged. Example: address=0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses error semantics (400 malformed, 404 no code, both uncharged), pricing ($0.01/call, first 25 free, failures free), and that repeats are not free — which explains the idempotentHint=false rather than contradicting it. It also restates the no-state-change property of a read/compute 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?
Front-loads purpose, then alternative, then failure modes and cost — a sound order with little filler. It is dense (pricing plus error codes plus mechanism list in a few sentences) and could be tightened, but every clause carries operational value for an agent deciding to call it.
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, annotated, no-output-schema tool, the description covers what is returned (the implementation and the kind found), when to use it, what failure responses look like, and what it costs. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema coverage is 100% ('0x contract address'); the description adds an example address confirming the expected format but no syntax or constraint details beyond what the schema already conveys. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('find the implementation behind a proxy contract on Optimism') and enumerates the detection mechanisms (EIP-1967, beacon, admin, UUPS/EIP-1822, OZ layout, EIP-1167). The chain prefix in the name is reinforced in prose, so it is clearly distinguishable from eth_proxy/arb_proxy/base_proxy/polygon_proxy 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?
Gives an explicit when-to-use ('before trusting or decoding a contract whose code can be swapped by its admin') and names the escalation path ('for a fuller risk verdict use contract_risk'). Nothing is left to inference about the decision boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
op_receiptOptimism transaction receiptARead-onlyInspect
Transaction receipt on Optimism (eth_getTransactionReceipt): success or reverted, gas used, effective gas price, fee paid in ETH, number of event logs and any contract created. Use to confirm a payment or call went through; for sender, value and calldata use op_tx. Input is a 0x-prefixed 64-hex hash; a pending or unknown hash returns 404, uncharged. Example: hash=0x721f3e9a996da49e2a8929bd2dd42e0f51344c11d7ca7bc3328fda349cdfae89. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare read-only, open-world, non-idempotent, non-destructive; the description adds the billing model ($0.01/call, 25 free, failed calls free, repeats charged), which explains and is consistent with idempotentHint=false. It also discloses the miss path (404, uncharged) and restates the no-side-effects guarantee.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and its payload, then the alternative, then input/error semantics, then cost. Dense but every clause carries decision-relevant information for an agent that will be charged per call.
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?
No output schema exists, and the description compensates by enumerating the receipt fields returned. For a single-parameter, read-only, billed tool, nothing an agent needs to call it correctly or interpret the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented, so the baseline is 3; the description goes further by supplying a concrete example hash and tying hash validity to the 404 outcome. It stops short of explaining hash casing or malformed-input behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource — fetch an Optimism transaction receipt — and immediately enumerates the returned facts (status, gas used, effective gas price, fee in ETH, log count, contract created). It also names the sibling it is not (op_tx) with the payload it does not cover, so an agent can separate the two without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ("confirm a payment or call went through") and an explicit alternative with the condition that selects it ("for sender, value and calldata use op_tx"). Pending/unknown hashes are routed to a defined outcome (404) rather than left ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
op_storageStorage slot read, OptimismARead-onlyInspect
Read one raw storage slot of a contract on Optimism (eth_getStorageAt): the 32-byte word, as a number and, when it holds one, as an address. Slot is a decimal index or a 0x 32-byte key (mapping and proxy slots). Use to inspect contract state that has no getter, owners or implementation pointers; for proxies use op_proxy. A malformed address or slot is rejected with 400, uncharged. Example: address=0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | Slot: a decimal index (0, 1, 2…) or a 0x 32-byte key | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond annotations: malformed address or slot yields a 400 and is uncharged, pricing is $0.01/call with first 25 free and failed calls free, and repeats are billed — which explains the otherwise puzzling idempotentHint=false. It also confirms read-only semantics ('reads or computes only and changes nothing'), consistent with readOnlyHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and return shape are front-loaded, followed by usage routing, error behavior, and cost. Slightly overstuffed at the end: the payment-channel detail ('x402 USDC or a card key (/credits)') and the restated charging note ('each call is charged, so repeats are not free') partially repeat the same fact.
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 2-parameter, annotation-covered read with no output schema, the description covers purpose, input formats, return value, error behavior, and cost. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3; the description adds meaning by clarifying that the slot can be a mapping or proxy slot as well as a plain index, and supplies a concrete address example. It stops short of explaining what happens when the slot is empty or how the word is formatted numerically.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource+chain: 'Read one raw storage slot of a contract on Optimism (eth_getStorageAt)', and states the return shape (32-byte word as number, and as address when applicable). This clearly separates it from siblings like op_call and op_proxy without requiring schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it ('inspect contract state that has no getter, owners or implementation pointers') and names the alternative for the adjacent case ('for proxies use op_proxy'). Also explains the two accepted slot encodings, so an agent knows what inputs are valid before invoking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
op_token_balanceOptimism ERC-20 balanceARead-onlyInspect
ERC-20 token balance of a wallet on Optimism (USDC, USDT, WETH or any token, via balanceOf): raw amount, decimals, symbol and the human-readable amount, live from the token contract. Use to check stablecoin or token holdings before a transfer or trade; for the native coin use op_balance. Both inputs are 0x addresses (40 hex characters); no contract returns 404 and a non-ERC-20 contract 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC, USDT, WETH or DAI, or the 0x ERC-20 contract address | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: no-contract returns 404, non-ERC-20 contract returns 422, both uncharged; pricing is $0.01/call via x402 USDC or card key, first 25 free, failed calls free. The "each call is charged, so repeats are not free" note is consistent with idempotentHint=false and warns about metered repetition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and scope, then folds error codes, pricing and the native-coin alternative into two dense sentences. Slightly over-packed, and "Reads or computes only and changes nothing" restates readOnlyHint/destructiveHint, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still enumerates the return shape (raw amount, decimals, symbol, human-readable amount), plus failure modes and cost. For a 2-parameter read tool this covers everything needed to call it correctly and interpret the result.
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 both parameters are already documented; the description adds the balanceOf source and return fields but little about the inputs. The line "Both inputs are 0x addresses (40 hex characters)" is imprecise for `token`, which the schema and the opening sentence both say accepts a ticker such as USDC — a minor contradiction the agent must resolve from 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?
Names a specific verb+resource+chain: ERC-20 balance of a wallet on Optimism, sourced via balanceOf from the token contract. It explicitly separates itself from the sibling op_balance (native coin) and implicitly from op_token_info/op_allowance, so an agent can route without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete when-to-use ("check stablecoin or token holdings before a transfer or trade") and an explicit when-not with the named alternative ("for the native coin use op_balance"). That is exactly the routing information an agent needs among this large sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
op_token_infoOptimism token info, ERC-20ARead-onlyInspect
Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Optimism, live from the contract. Use to identify an unknown token address or to format raw amounts; for a holder's balance use op_token_balance. Input is a ticker (USDC, WETH…) or the token's 0x contract address; an address that is not an ERC-20 contract returns 422, uncharged. Example: token=0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: data is read live from the contract, a non-ERC-20 address returns 422 and is uncharged, pricing is $0.01/call via x402 or card key with 25 free calls and failed calls free. It even explains why repeats cost money, which reconciles the idempotentHint=false with what the caller will observe.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and the primary differentiation before covering input, errors, and pricing. Dense but nearly every sentence carries distinct information; the pricing tail is long, though justified for a paid x402 tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Single required parameter, no output schema, and the description enumerates the returned fields (name, symbol, decimals, total supply) so the agent knows what comes back. Safety profile, cost, and error behavior are all covered, leaving nothing an agent needs before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds a worked example address and the failure semantics for a non-ERC-20 address, which the schema does not express. It does not add format details beyond ticker-or-address, so it is not a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('look up') and resource (ERC-20 name, symbol, decimals, total supply on Optimism, read live from the contract), and explicitly names the sibling it is not ('for a holder's balance use op_token_balance'). An agent can distinguish it from op_token_balance and op_token_transfers without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases ('identify an unknown token address', 'format raw amounts') and an explicit alternative with its selecting condition (holder balance → op_token_balance). Also states the input can be a ticker or address, which routes the caller without guesswork.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
op_token_transfersToken transfers, OptimismARead-onlyInspect
List a wallet's recent transfers of one ERC-20 token (default USDC) on Optimism, in and out, over the last N blocks (1-2,000, default 1,000): direction, counterparty, amount and transaction, newest first, up to 50. Use to confirm a payment arrived or see what was sent; for the current balance use op_token_balance. Malformed addresses are rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Token: a ticker such as USDT or WETH, or the 0x ERC-20 contract (default: USDC on this network) | |
| blocks | No | How many recent blocks to scan (1-2000, default 1000; 2,000 blocks is about 67 minutes on Optimism) | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, but the description still adds real context beyond them: per-call pricing ($0.01 via x402 or card key), a 25-call free tier, failed calls free, malformed addresses rejected with 400 and uncharged, and a 50-result cap ordered newest first. The note that repeats are not free is consistent with idempotentHint=false rather than 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?
Purpose and scope are front-loaded in the first clause, followed by usage routing, then error and pricing details. It is a single dense paragraph where nearly every clause carries information, though the pricing/free-tier detail crowds the block and slightly dilutes the core instruction.
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 no output schema, the description responsibly names the returned fields (direction, counterparty, amount, transaction), the ordering (newest first), and the 50-row cap. Combined with annotations and a fully described schema, an agent has everything needed to call it correctly; only result pagination/truncation semantics are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both optional parameters already document their defaults and the 1-2,000 block range in detail. The description largely restates those defaults; the only added value is an example 0x address demonstrating expected format. Baseline 3 is appropriate when the schema carries the parameter 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?
States a specific verb and resource ('List a wallet's recent transfers of one ERC-20 token ... on Optimism, in and out'), including the scope (last N blocks), default token, and max results. An agent can distinguish it immediately from op_token_balance and from the per-chain variants like eth_token_transfers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case ('confirm a payment arrived or see what was sent') and names the alternative with its condition ('for the current balance use op_token_balance'). The exclusion is explicit, so the agent does not have to infer which sibling to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
op_txOptimism transactionARead-onlyInspect
Look up an Optimism transaction by hash: sender, recipient, value in ETH, nonce, gas limit, the 4-byte function selector and its block. Use to see what was sent or whether it exists; for success or failure and fees paid use op_receipt, for emitted events op_logs. Input is a 0x-prefixed 64-hex hash; an unknown hash returns 404, uncharged. Example: hash=0x721f3e9a996da49e2a8929bd2dd42e0f51344c11d7ca7bc3328fda349cdfae89. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: states that an unknown hash returns 404 uncharged, that failed calls are free, that pricing is $0.01/call via x402 USDC or a card key with the first 25 free, and that repeated calls are not free — the latter explaining the idempotentHint=false in billing terms. It also confirms the read-only profile ("reads or computes only and changes nothing"), consistent with readOnlyHint=true and destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return fields, then alternatives, then input format, then commercial terms — good ordering. It is slightly overpacked for one paragraph, and the charging model is stated twice ("Price $0.01/call... failed calls free" and "each call is charged, so repeats are not free"), which is the only 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?
No output schema exists, so the description carries the return-value burden and does so by listing the returned fields. Combined with error behavior, cost model, and input format for a single-parameter tool, an agent has everything needed to call it correctly and predict the outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description adds a concrete format constraint and a full worked example hash, plus the 404-on-miss behavior for an unknown value. It does not add anything about normalization or case sensitivity, so it stops short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ("Look up an Optimism transaction by hash") and enumerates exactly what comes back: sender, recipient, value in ETH, nonce, gas limit, 4-byte function selector, block. It also explicitly separates itself from op_receipt and op_logs, so the agent can distinguish it from its closest siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives positive triggers ("see what was sent or whether it exists") and names two alternatives with the exact condition that selects each: op_receipt for success/failure and fees, op_logs for emitted events. Nothing is left to inference for the routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pack_evm_toolboxEVM developer utilities toolbox: checksum, keccak, selectors, unitsARead-onlyInspect
One call that works out what an EVM value is and converts it every useful way: an address gets its EIP-55 checksum and bytes32 form; a signature its 4-byte selector and event topic; calldata is decoded (ERC-20, NFT, permit, EIP-3009); a bytes32 becomes uint256, address and units; a number converts between wei, gwei, ether (or any decimals) and hex; text gets keccak256. Local, no network. Use for building or debugging contracts and agents. Example: input=transfer(address,uint256). Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | An address, signature, calldata, hex value, number or text | |
| decimals | No | Token decimals for unit conversions (default 18) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and non-destructive status, and the description adds what they cannot: it is local with no network calls, it changes nothing, it is billed per call ($0.01 via x402/card key, first 25 free, failures free), and repeats are explicitly not free — which usefully reinforces idempotentHint=false. Minor tension: the description says "no network" while openWorldHint=true is asserted, which an agent could read as inconsistent even though the safety hints align.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core behavior and organized as a per-input-type enumeration, so an agent can scan for its case quickly. It is dense but nearly every sentence carries information; the pricing/clause near the end is the least essential part and could be tightened.
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 polymorphic dispatcher with only two parameters and no output schema, the description covers the input modes well. The notable gap is the response shape — an agent does not know what fields come back when an input matches multiple interpretations, nor what the error/degenerate-case behavior looks like beyond "failed calls free".
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains that `input` is auto-detected rather than declared by the caller, and maps each accepted shape to its resulting conversions, plus notes decimals default to 18 and "any decimals" are supported. It does not say how ambiguous inputs (a hex string that could be calldata, a value, or a hash) are disambiguated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-and-resource with a dispatch model: it inspects an EVM value and converts it, enumerating each input type and its outputs (address→EIP-55 + bytes32, signature→selector/topic, calldata→decoded, bytes32→uint256/address/units, number→wei/gwei/ether, text→keccak256). That is far more specific than the title alone. It does not name the overlapping siblings (evm_checksum, evm_decode_calldata, keccak, units_convert) it supersedes, so the differentiation is inferential rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear applicability ("Use for building or debugging contracts and agents") plus a concrete worked input example, which is enough for an agent to recognize the right moment. It offers no explicit when-not conditions and never routes the agent away from the single-purpose sibling tools that do overlapping work.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pack_gas_trackerGas tracker, multichain gas: 5 EVM chains and Bitcoin feesARead-onlyInspect
One call for current gas prices on Base, Ethereum, Arbitrum, Optimism and Polygon: gas price, base fee and priority fee in gwei and what a plain transfer costs in the native coin and, for the ETH chains, in US dollars (Uniswap ETH price), sorted cheapest first, plus Bitcoin fee rates in sat/vB. Cheaper than the tools bought one by one. Use to pick the cheapest chain, time a transaction or show fees in a wallet. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Optional: comma-separated top-level result keys to keep, for a smaller answer (for example only=price,symbol); unknown keys are ignored and an empty match returns the full result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: pricing model ($0.002/call via x402 USDC or card key, first 25 free, failed calls free), output ordering (cheapest first), the USD conversion source (Uniswap ETH price), and the explicit warning that repeats are not free. That last point is consistent with idempotentHint=false and readOnlyHint=true, and 'reads or computes only and changes nothing' reinforces the non-destructive profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with coverage and returned fields, and every clause is informative. It is a single dense run-on that mixes output spec, marketing ('Cheaper than the tools bought one by one') and billing terms, so a little tightening would help readability.
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 no output schema, the description fully compensates by naming every returned field, its unit (gwei, native coin, USD, sat/vB) and its ordering. Cost and billing terms are present too, which matters for an agent deciding how often to call. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single optional 'only' projection parameter, and its schema entry already documents the comma-separated key syntax and the fallback to a full result at 100% coverage. The description never mentions it, but the schema carries the weight, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('One call for current gas prices') plus exact chain coverage (Base, Ethereum, Arbitrum, Optimism, Polygon, Bitcoin) and the returned fields (gas price, base fee, priority fee, transfer cost in native coin and USD, BTC sat/vB). This clearly distinguishes it from the single-chain siblings like eth_gas, base_gas and btc_fees.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives three concrete use cases (pick the cheapest chain, time a transaction, show fees in a wallet) and positions itself against the per-chain tools ('Cheaper than the tools bought one by one'). It stops short of an explicit exclusion such as 'use eth_gas if you only need one chain', so the alternative routing is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pack_nft_analysisNFT analysis: owner, metadata, holdings and collectionARead-onlyInspect
One call to analyse an NFT: its current owner, its metadata (name, description, image, traits from data:, https or ipfs), how many NFTs of the collection that owner holds, and the collection contract (name, symbol, whether it is an upgradeable proxy). ERC-721 on Base, Ethereum, Arbitrum, Optimism or Polygon. Cheaper than the tools bought one by one. Use before buying, listing or verifying an NFT. Example: contract=0xC36442b4a4522E871399CD717aBDD847Ab11FE88, tokenId=1. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Network: eth (default), base, arb, op or polygon | |
| tokenId | Yes | Token id, a whole number | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, and the description adds materially: 'Reads or computes only and changes nothing', explicit pricing ($0.01/call via x402 USDC or card key), a 25-call free tier, failed calls free, and the warning that 'each call is charged, so repeats are not free' — which coherently explains the idempotentHint=false annotation in billing terms. This is behavior an agent needs before calling a paid tool and cannot get from structured fields 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?
It is front-loaded with the purpose and outputs, and most sentences carry distinct load (networks, cost, use case, example, safety). The block is dense and the pricing/billing clause is slightly buried after the chain list, but nothing is pure 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?
There is no output schema, so the description must describe the return values — and it does so field by field (owner, metadata, holdings, collection contract and proxy status). Combined with the chain scope, cost model and read-only/side-effect disclosure, an agent has everything needed to decide and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents chain, tokenId and contract, so the baseline is 3. The description adds a concrete worked example (contract=0xC36442b4a4522E871399CD717aBDD847Ab11FE88, tokenId=1) and reiterates the ERC-721 / five-chain constraint, giving usable format guidance 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 names a specific verb and resource ('One call to analyse an NFT') and then enumerates exactly what is returned: current owner, metadata fields and their source schemes (data:, https, ipfs), collection holdings count for that owner, and collection contract name/symbol/proxy status. It also states the supported networks and ERC-721 scope, which cleanly separates it from the per-chain siblings like eth_nft_owner or base_nft_metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear usage context ('Use before buying, listing or verifying an NFT') and points at the alternative it replaces ('Cheaper than the tools bought one by one'), which maps onto the many per-chain nft_* siblings. It does not state any when-not-to-use condition, so it falls short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pack_tx_explainExplain transaction, decoded: what an EVM transaction didARead-onlyInspect
Explain an EVM transaction in plain words: success or revert, sender and contract, ETH value, fee, the function called (decoded for common ERC-20, ERC-721, WETH, permit and multicall calls), and every token transfer, mint, burn and approval it emitted with amounts and symbols, plus one-line summaries. Base, Ethereum, Arbitrum, Optimism or Polygon. Use to check what a payment or contract call really did before trusting it or reporting it. Example: hash=0x7d108fa131ed949c76d50caf2e7dfe25fc9903b9d276c40a0446d8afbdfe86b0. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x transaction hash | |
| chain | No | Network: base (default), eth, arb, op or polygon |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive, open-world, and non-idempotent; the description adds genuinely new context: pricing ($0.01/call, first 25 free, failed calls free), that repeat calls are re-charged (explaining the non-idempotent hint), and the limited decode scope ("common ERC-20, ERC-721, WETH, permit and multicall"). It does not discuss rate limits or what happens on unknown/non-decodable calldata beyond implying graceful fallback.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core capability is front-loaded in the first sentence, with use case, example, pricing, and safety follow-ups in descending priority. It is dense and slightly long, but nearly every clause carries information an agent needs; the pricing sentence is a bit promotional in tone.
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 no output schema, the description does the work of explaining the return contents in detail (decoded function, transfers with amounts and symbols, summaries), plus chains, cost, and safety. What is missing is failure-mode behavior for exotic calldata or unverified contracts, which matters for a decoding 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?
Schema coverage is 100%, with both hash and chain fully documented including the default and the five network aliases, so the schema carries the parameter burden. The description only restates the chain set and adds a worked hash example, which adds marginal value at best.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific action (explain an EVM transaction) and enumerates exactly what the output covers: status, sender/contract, ETH value, fee, decoded function, token transfers/mints/burns/approvals plus one-line summaries. It also names the supported chains, which distinguishes it from the per-chain siblings (base_tx, eth_receipt, arb_tx, etc.) that return raw data rather than a decoded narrative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use to check what a payment or contract call really did before trusting it or reporting it" gives a clear verification-before-reliance use case, and the example hash shows the intended call shape. It does not explicitly name the raw alternatives (e.g., base_tx, evm_decode_calldata) or say when raw data is preferable, so routing is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pack_wallet_profileWallet profile: balances, activity, contract check and sanctionsARead-onlyInspect
One call to profile an EVM wallet: native and USDC balances on Base, Ethereum, Arbitrum, Optimism and Polygon, transaction counts on Base and Ethereum, whether it is a contract or a plain wallet, its recent USDC transfers on Base, and an OFAC sanctions screen. Cheaper than the tools bought one by one. Use before paying, onboarding or trusting a counterparty wallet; for a single risk verdict use check_counterparty. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing pricing ($0.01/call via x402 or card key, first 25 free, failed calls free) and that 'each call is charged, so repeats are not free' – which meaningfully explains the idempotentHint=false flag. It restates the read-only nature ('reads or computes only and changes nothing'), which is redundant with readOnlyHint but harmless. It does not describe latency, rate limits, or partial-failure behavior across the five chains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the capability, then usage, then pricing/constraints – a sensible order with no filler. It is dense and slightly long, with the pricing clause spanning a full sentence, but each part carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description enumerates the returned data categories (balances per chain, tx counts, contract status, USDC transfers, sanctions result), so an agent knows what it gets back. Combined with cost and side-effect disclosure, nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With one parameter at 100% schema coverage the baseline is 3, but the description adds value by qualifying the address as an 'EVM wallet' and supplying a concrete example address, reinforcing the expected 0x format and that only EVM networks are supported.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('One call to profile an EVM wallet') and enumerates exactly what the profile contains: native/USDC balances across five chains, tx counts, contract-vs-wallet, recent USDC transfers, OFAC screen. This makes it clearly distinguishable from granular siblings like base_balance or sanctions_check.
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 states when to use it ('before paying, onboarding or trusting a counterparty wallet') and names the alternative for a different need ('for a single risk verdict use check_counterparty'). Also positions it as a bundle ('cheaper than the tools bought one by one'), giving the agent a cost-based selection rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polygon_allowanceToken allowance, Polygon ERC-20ARead-onlyInspect
ERC-20 token allowance on Polygon PoS: how much a spender may move from an owner's wallet (allowance), raw and in token units, and whether the approval is unlimited. Use to check an approval before a swap or to audit risky open approvals; for the owner's balance use polygon_token_balance. Token is a ticker (USDC, USDT, WETH…) or a 0x contract; a missing contract is 404 and a non-ERC-20 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | 0x wallet that gave the approval | |
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address | |
| spender | Yes | 0x contract or wallet allowed to spend (the example is Uniswap Permit2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and idempotentHint=false; the description usefully explains the idempotent=false consequence (each call is charged, repeats are not free) and adds pricing/auth detail (x402 USDC, card key via /credits, first 25 free) plus error semantics (404 missing contract, 422 non-ERC-20, both uncharged). That is real added behavioral context. The 3 reflects only minor gaps, such as pagination/return shape detail, but the charge-and-error disclosure is close to a 4 against annotated safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The primary purpose and the sibling disambiguation are front-loaded, and pricing/error notes follow in a compact block. The pricing and payment sentence is dense but every clause (charge per call, free failures) changes agent behavior, so nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still tells the agent what is returned (raw and token-unit allowance plus an unlimited flag), how errors surface, and what a call costs. That is complete enough to invoke correctly for a 3-required-param read 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?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning on top: token accepts a ticker or a 0x contract and the failure modes for each (404 vs 422). Owner/spender distinctions are left to schema descriptions, which already cover them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('ERC-20 token allowance on Polygon PoS') and names exactly what is returned (raw and human units plus unlimited flag). It explicitly distinguishes itself from the sibling polygon_token_balance, so an agent can differentiate without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use cases ('check an approval before a swap', 'audit risky open approvals') and routes the balance question to polygon_token_balance. Exclusions and the sibling alternative are both named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polygon_balancePolygon balance, native coinARead-onlyInspect
Native POL balance (eth_getBalance) of any 0x wallet address on Polygon PoS at the latest block, in wei and in POL. Use to check whether a wallet can pay gas or a transfer; for ERC-20 tokens use polygon_token_balance, for all holdings at once use wallet_portfolio. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet or contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/destructive annotations it discloses block semantics (latest block), return units (wei and POL), error behavior (malformed address returns 400 and is uncharged), and pricing ($0.002/call, first 25 free, failed calls free). The line 'each call is charged, so repeats are not free' also explains the non-obvious idempotentHint=false, which annotations alone would leave puzzling for a read-only 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?
Front-loads what the tool returns and at what block, then routing, then error and cost semantics, in one tight paragraph. Each clause carries distinct information, including the pricing details that no structured field conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description covers units, block freshness, error handling, cost, and sibling routing. Nothing an agent needs to invoke it correctly or interpret the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already described as a 0x wallet or contract address, so the baseline is 3. The description adds a worked example address and the rejection consequence for malformed input, giving slightly more than the schema alone, though it does not clarify contract-vs-wallet address behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: native POL balance (eth_getBalance) of a 0x address on Polygon PoS at the latest block, returned in wei and POL. It explicitly separates itself from polygon_token_balance (ERC-20) and wallet_portfolio (all holdings), so an agent can pick it without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete when-to-use ('check whether a wallet can pay gas or a transfer') and names two alternative tools with the conditions that select them (ERC-20 tokens, all holdings at once). Exclusions and alternatives are both explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polygon_blockPolygon block numberARead-onlyInspect
Latest block number and block details on Polygon PoS, or any block by decimal number: hash, timestamp, transaction count, gas used and limit, base fee in gwei and producer. Use for timestamps and confirmation counts; for current fees use polygon_gas. A block that does not exist yet returns 404, uncharged. Example: number=latest. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| number | No | Block number, or 'latest' (default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover readOnly/openWorld/non-idempotent, but the description adds genuinely new behavior: billing is per call ($0.002 via x402 USDC or card key), the first 25 calls are free, failed calls are free, and repeats are not free because each call is charged. This is the key operational trait for a non-idempotent paid call; it stops just short of describing return shape beyond field names.
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?
Dense but front-loaded: scope and return fields first, then routing to polygon_gas, then error and pricing. The pricing sentence carries some provider-specific detail (x402, /credits) but it earns its place for a metered tool; nothing is padded.
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 no output schema, the description enumerates the returned fields (hash, timestamp, tx count, gas used and limit, base fee in gwei, producer), states the error behavior, and discloses billing. An agent has everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents the 'latest' default, so the baseline is 3. The description adds that an explicit value is a decimal block number and gives a concrete example (number=latest), which is marginal but useful syntax guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+chain: latest block number and details on Polygon PoS, or any block by number, and enumerates the returned fields. It is immediately distinguishable from polygon_gas and other polygon_* 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?
Explicitly says what to use it for (timestamps, confirmation counts) and names the alternative for the other case ('for current fees use polygon_gas'). It also covers the failure case: a block that doesn't exist yet returns 404 and is uncharged.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polygon_callEth call, Polygon contract callARead-onlyInspect
Read-only contract call on Polygon PoS (eth_call): send ABI-encoded calldata to a contract at the latest block and get the raw return data, without a transaction or gas. Use to read any view function that has no dedicated tool (the example reads USDC totalSupply, selector 0x18160ddd); decode the result with the function's ABI. Calldata up to 8 KB; a call that reverts is 422 with the reason, uncharged. Example: to=0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359, data=0x18160ddd. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x contract address to call | |
| data | Yes | 0x ABI-encoded calldata: 4-byte selector plus arguments | |
| from | No | Optional 0x sender address for calls that check msg.sender |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: calldata capped at 8 KB, reverting calls return 422 with the reason and are uncharged, pricing is $0.01/call via x402 USDC or card key with the first 25 free, and repeated calls are billed (matching idempotentHint=false). These are exactly the cost and failure-mode facts an agent needs before calling a paid endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what it does and who it is for, then limits, error behavior, and pricing in a logical order. The pricing/auth sentence is long and could be tightened, but every clause carries information an agent needs (cost is the key differentiator for a paid tool).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter, no-output-schema tool this covers the full picture: input format, size limit, revert semantics, output being raw undecoded bytes requiring ABI decoding, and billing behavior. Nothing material is missing that would cause a misinvocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns an extra point by adding a real constraint not in the schema (calldata up to 8 KB) plus a concrete to/data pair showing the expected format. It does not explain the optional 'from' parameter's msg.sender use case, which the schema already covers, so it stops short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — read-only eth_call on Polygon PoS that returns raw return data without a transaction or gas — and clearly separates it from the many polygon_* dedicated-tool siblings by framing it as the generic escape hatch. An agent immediately knows this is the low-level contract-read primitive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing rule: 'Use to read any view function that has no dedicated tool', which both selects this tool and excludes cases where polygon_token_balance, polygon_nonce, etc. should be used instead. The worked example (USDC totalSupply, selector 0x18160ddd) and the 'decode the result with the function's ABI' follow-up step make the intended invocation pattern concrete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polygon_estimate_gasEstimate gas, PolygonARead-onlyInspect
Estimate the gas a transaction would use on Polygon PoS (eth_estimateGas) and what it would cost at the current gas price, in gas units, gwei and POL. Give to, plus value in POL and calldata for a contract call, and the sender when the call depends on it. Use before sending a transaction or to price a batch; for the gas price alone use polygon_gas. A transaction that would revert is 422 with the reason, uncharged. Example: to=0x000000000000000000000000000000000000dEaD. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x recipient or contract address | |
| data | No | Optional 0x calldata for a contract call | |
| from | No | 0x sender address (default: an empty address) | |
| value | No | Amount of POL to send, in POL (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses failure semantics (a reverting transaction returns 422 with the reason, uncharged), the billing model ($0.01/call via x402 USDC or card key, first 25 free, failed calls free), and that repeats are charged. That last point also explains why idempotentHint=false holds for an otherwise read-only tool, which is a genuinely useful reconciliation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return units, then arguments, then the sibling alternative, then failure and billing behavior. Nearly every sentence carries information, though the example address and the pricing boilerplate add length that a caller only needs once.
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?
There is no output schema, so the description carries the full burden of describing the return value — and it does, naming all three units. Combined with failure semantics and cost model, an agent has everything needed to call this correctly and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all four parameters and the 3 baseline is met. The description adds real nuance by noting value is denominated in POL and that 'from' matters only 'when the call depends on it' — meaning sender-dependent estimation — which the schema's '(default: an empty address)' does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (estimate gas for a transaction on Polygon PoS), names the underlying RPC method, and specifies the three units returned (gas units, gwei, POL). It explicitly distinguishes itself from polygon_gas, the gas-price-only sibling, so an agent can route correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives both when to use ('before sending a transaction or to price a batch') and when not to ('for the gas price alone use polygon_gas'), plus the argument requirements for a contract call vs a plain transfer. This is explicit routing guidance, not implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polygon_gasPolygon PoS gas priceARead-onlyInspect
Current gas price on Polygon PoS (eth_gasPrice): gas price, base fee and suggested priority fee in gwei, plus what a plain POL transfer (21,000 gas) costs right now. Takes no input. Use before sending a transaction or to decide whether to wait; for the fee a past transaction actually paid use polygon_receipt. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Optional: comma-separated top-level result keys to keep, for a smaller answer (for example only=price,symbol); unknown keys are ignored and an empty match returns the full result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld/non-destructive, but the description adds a real behavioral fact beyond them: per-call pricing ($0.002, first 25 free, failed calls free) and that repeats are charged, which explains the idempotentHint=false. It does not discuss latency, rate limits, or caching, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and return contents before pricing and safety details; every clause is informative. The pricing/licensing sentence is dense but does earn its place, though it could be split for readability.
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?
No output schema exists, yet the description fully specifies the return shape (price, base fee, priority fee in gwei, plus a concrete 21,000-gas transfer cost estimate). Combined with cost and safety disclosure, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the optional 'only' filter is already fully documented in the schema, establishing the baseline of 3. The description adds nothing about the parameter and its claim that the tool 'takes no input' mildly undercuts the existence of the optional projection parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource (current gas price on Polygon PoS), names the underlying RPC method (eth_gasPrice), and enumerates the returned fields (gas price, base fee, priority fee, 21,000-gas transfer cost). It is clearly separable from sibling reads like polygon_gas_history and polygon_receipt.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives both when-to-use ('before sending a transaction or to decide whether to wait') and when to use an alternative ('for the fee a past transaction actually paid use polygon_receipt'). The only gap is that polygon_gas_history, the other natural alternative, is not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polygon_gas_historyPolygon gas history, gas priceARead-onlyInspect
Gas price history on Polygon PoS (eth_feeHistory): base fee in gwei for each of the last N blocks (5-100, default 20), how full each block was, and the 10th, 50th and 90th percentile priority fees, with the low, average and high base fee over the window. Use to judge whether fees are rising, pick a priority fee or time a transaction; for the current price alone use polygon_gas. Example: blocks=20. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks, 5-100 (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and idempotentHint=false, and the description reinforces that it changes nothing. It adds genuinely new context beyond annotations: the $0.01/call x402 pricing, 25 free calls, failed calls free, and that paid repeats are not free — which explains the non-idempotent hint. Minor repetition of the read-only claim keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Information is front-loaded: what it returns, then when to use it, then the alternative, then pricing. The pricing sentence is long and partially restates the 'changes nothing' claim already covered by annotations, so it is efficient but not maximally tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so: per-block base fee, block fullness, percentile priority fees, plus window-level low/average/high base fee. Cost and failure behavior are also disclosed, so an agent has everything needed to call it correctly and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already documents 'How many recent blocks, 5-100 (default 20)'; the description restates that range and default. It does clarify what the window length governs (which block range the fee percentile summary covers), but adds little syntax or semantics beyond the schema. 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?
States a specific verb and resource (gas price history on Polygon PoS via eth_feeHistory) and enumerates the returned measures: base fee in gwei, block fullness, 10th/50th/90th percentile priority fees. It explicitly names the sibling it is not (polygon_gas) for current-price-only queries, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use cases (judge whether fees are rising, pick a priority fee, time a transaction) and an explicit exclusion routed to polygon_gas. A usage example (blocks=20) is included, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polygon_is_contractPolygon is-contract checkARead-onlyInspect
Check whether a 0x address on Polygon PoS is a smart contract or a plain wallet: bytecode size, and whether it is an EIP-1167 minimal proxy and which implementation it points to. Use before sending funds or approving a spender; for a fuller risk verdict use check_counterparty. A malformed address is rejected with 400, uncharged. Example: address=0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, destructiveHint=false, openWorldHint), the description discloses cost ($0.01/call, first 25 free), the billing channel (x402 USDC or card key), that failed/malformed calls are uncharged with a 400, and that repeats are billed again — which reinforces the idempotentHint=false annotation rather than contradicting it. It also explicitly states it 'changes nothing,' matching readOnlyHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, then usage, error handling, example, and pricing in a logical progression with no repeated content. The payment-channel detail (x402 USDC / card key / first 25 free) is somewhat dense for one sentence but is genuinely decision-relevant, so it 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?
With one required parameter, full schema coverage, no output schema, and clear annotations, everything an agent needs is present: what is returned (bytecode size, proxy status, implementation), when to call it, error semantics, and cost. No output schema exists, so the description's return-value summary is an appropriate substitute.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'address' parameter, so the baseline is 3. The description adds a concrete example value and the failure behavior for a malformed address, but no format rule (checksum vs lowercase, length) beyond what the schema's '0x address' already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource with scope: 'Check whether a 0x address on Polygon PoS is a smart contract or a plain wallet,' and enumerates what the answer contains (bytecode size, EIP-1167 proxy status, implementation address). It separates itself from the risk-verdict sibling check_counterparty, but leaves its overlap with the listed polygon_proxy sibling unresolved, so an agent cannot fully rule out that tool from this text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit decision context ('Use before sending funds or approving a spender') and an explicit alternative with the condition that selects it ('for a fuller risk verdict use check_counterparty'). This is exactly the when-to-use / when-to-use-something-else guidance the dimension asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polygon_logsPolygon event logsARead-onlyInspect
Recent contract event logs on Polygon PoS (eth_getLogs): the events a contract emitted over the last N blocks (1-1,000, default 50), optionally filtered by topic0 (the 0x 32-byte event signature hash). Returns up to 100 logs with block, transaction hash and topics. Use to watch transfers or contract events; for one transaction's outcome use polygon_receipt. Example: address=0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks to scan (1-1000, default 50) | |
| topic0 | No | Optional 0x event signature hash to filter by | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, destructiveHint=false), so the description adds cost and limit behavior: $0.01/call, 25 free calls, failed calls free, repeats not free, and a 100-log return cap. That is genuine value beyond the structured fields, though it does not discuss result completeness when the 100-log cap is hit or rate limiting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single dense paragraph, front-loaded with what the tool does and what it returns, with the alternative and pricing deferred to the end where they belong. It is somewhat overstuffed with payment mechanics ('via x402 USDC or a card key (/credits)') for a one-sentence description.
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 no output schema, the description carries the burden of describing returns, and it does ('up to 100 logs with block, transaction hash and topics'), plus limits, cost, and the checkout alternative. An agent has enough to call this correctly; only the behavior at the 100-log truncation boundary is unstated.
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 all three parameters are already documented, including the 1-1000 range and default 50. The description restates the block range and clarifies that topic0 is a 0x 32-byte event signature hash, which only marginally extends the schema's wording, plus one address example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Recent contract event logs on Polygon PoS (eth_getLogs)') along with the scope (last N blocks, optional topic0 filter) and explicitly names the sibling it is not ('for one transaction's outcome use polygon_receipt'). An agent can distinguish this from polygon_receipt, polygon_tx, and polygon_token_transfers without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete use cases ('watch transfers or contract events') and an explicit routing rule to an alternative for the adjacent case (polygon_receipt for one transaction's outcome). The only gap is no guidance on choosing between polygon_logs and polygon_token_transfers, but the named alternative is the one an agent is most likely to confuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polygon_nft_balanceNFT balance, PolygonARead-onlyInspect
How many NFTs of one ERC-721 collection a wallet holds on Polygon PoS (balanceOf), with the collection's name and symbol. Use to check a holder before a token-gated action or to see whether a wallet still holds a collection; for who holds one token id use polygon_nft_owner. Both inputs are 0x addresses; a missing contract is 404, a contract that is not ERC-721 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet address | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/no-destroy, but the description adds real context they don't: 404 on a missing contract, 422 on a non-ERC-721 contract, both uncharged, and $0.01/call with 25 free calls and repeats being billed. This also explains the idempotentHint=false annotation (each call costs money), which the annotation alone leaves ambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns and the sibling it is not, then errors, then pricing — a sensible order. It is dense and the billing/free-tier sentence runs long, but no sentence is pure 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 no output schema, the description still says what comes back (count plus collection name and symbol) and covers failure modes and cost, which is everything an agent needs to decide to call it and interpret the result. Nothing material is missing for a two-parameter read 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?
Schema coverage is 100% and both parameter descriptions already say '0x wallet address' and '0x ERC-721 collection contract address'. The description's 'Both inputs are 0x addresses' and its ERC-721 framing restate that rather than adding format, checksum, or validation guidance, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope: counts NFTs of one ERC-721 collection held by a wallet on Polygon PoS, names the underlying call (balanceOf) and the extra fields returned (name, symbol). It explicitly distinguishes itself from polygon_nft_owner, so an agent can pick between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases (gate a holder before a token-gated action, check whether a wallet still holds a collection) and the explicit alternative for the other question ('for who holds one token id use polygon_nft_owner'). When-to-use and when-to-use-something-else are both present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polygon_nft_metadataNFT metadata, PolygonARead-onlyInspect
NFT metadata on Polygon PoS: the token URI of one ERC-721 token id (tokenURI) and the JSON it points to (name, description, image, attributes), read from data: URIs, https or ipfs:// (through ipfs.io). Strings over 1,000 characters, such as on-chain SVG images, are shortened. Use to show or check what an NFT is; for its owner use polygon_nft_owner. A token that does not exist is 422, uncharged; unreachable metadata is reported in metadataError. Example: contract=0xC36442b4a4522E871399CD717aBDD847Ab11FE88, tokenId=1. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | Token id, a whole number | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond annotations: data: URI / https / ipfs.io resolution paths, truncation of strings over 1,000 characters, 422 (uncharged) for a nonexistent token, and metadataError for unreachable metadata. The note that each call is charged also explains why idempotentHint is false, which the annotation alone would leave opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and identity are front-loaded in the first clause, and the pricing/error details arrive after. It is dense but nearly every sentence carries actionable information; the billing tail is slightly long for a read-only lookup.
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 no output schema, the description still spells out what is returned (tokenURI and the parsed JSON fields), plus error and truncation semantics. Nothing an agent needs to call it or interpret a response is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already defines both parameters, giving a baseline of 3. The description adds a concrete worked example (contract=0xC364...FE88, tokenId=1) and clarifies tokenId refers to a single ERC-721 token, which reduces format guesswork.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'the token URI of one ERC-721 token id (tokenURI) and the JSON it points to (name, description, image, attributes)'. It also names the sibling it is not (polygon_nft_owner), so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States explicitly 'Use to show or check what an NFT is; for its owner use polygon_nft_owner', giving both the use case and the alternative. It also flags cost per call and that repeats are not free, which informs when to avoid redundant calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polygon_nft_ownerPolygon NFT ownerARead-onlyInspect
Owner of an NFT on Polygon PoS: the wallet that holds one ERC-721 token id right now (ownerOf), plus the collection's name and symbol. Use to verify who holds an NFT before a trade, a mint gate or an airdrop; for how many a wallet holds use polygon_nft_balance, for the token's metadata polygon_nft_metadata. A missing contract is 404, a token that does not exist 422, both uncharged. Example: contract=0xC36442b4a4522E871399CD717aBDD847Ab11FE88, tokenId=1. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | Token id, a whole number | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and non-destructive behavior, but the description adds important operational details: 404 for missing contract, 422 for nonexistent token, both uncharged, plus pricing and failed-call billing. It also clarifies that repeated calls are charged, which is valuable context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and routing guidance, and the pricing/error details are useful for this paid API. It is somewhat dense, but nearly every clause supports correct invocation or interpretation.
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 no output schema, the description still states what is returned: the owner wallet plus collection name and symbol. It also covers error behavior and pricing, leaving no critical gap for a two-parameter read-only 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?
Schema description coverage is 100%, so the two parameters are already documented by the schema. The description adds a concrete example with contract and tokenId, which helps invocation, but it does not add meaningful semantics beyond the schema's own parameter definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb/resource: the owner of one ERC-721 token id on Polygon PoS via ownerOf, plus collection name and symbol. It explicitly distinguishes itself from polygon_nft_balance and polygon_nft_metadata, so an agent can route correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use cases: verifying who holds an NFT before a trade, mint gate, or airdrop. It also names the alternatives for count (polygon_nft_balance) and metadata (polygon_nft_metadata), making when-to-use and when-not-to-use explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polygon_noncePolygon nonce, account nonceARead-onlyInspect
Read the transaction count (nonce) of a 0x address on Polygon PoS, both confirmed and including pending transactions. Use to build the next transaction or to tell whether an address has ever sent anything; for its balance use polygon_balance. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and non-idempotent, but the description adds real context beyond them: that the count includes pending transactions, that malformed addresses return 400 without charge, that each call is billed $0.01 (first 25 free, failures free), and that repeats are not free. It effectively explains the non-idempotent annotation, which is unusually 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?
Purpose and the balance alternative are front-loaded, and every sentence carries information. The pricing and free-call detail is useful but makes the description longer than strictly necessary for a one-parameter read tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, error behavior, pricing, and pending-vs-confirmed semantics are covered. The only soft spot is that it doesn't clarify the shape of the result (e.g., whether confirmed and pending counts are returned as separate fields).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still earns credit by adding a concrete example address and stating that malformed addresses are rejected with 400, which tells the agent the input is validated rather than silently coerced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: read the transaction count (nonce) of a 0x address on Polygon PoS. It also distinguishes itself from the sibling polygon_balance explicitly, so an agent can route between them without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use cases (building the next transaction, checking whether an address has ever sent anything) and names the alternative tool (polygon_balance) for the adjacent need. That is explicit when-to-use plus a named alternative, which is the top of the scale.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polygon_proxyProxy implementation, PolygonARead-onlyInspect
Find the implementation behind a proxy contract on Polygon PoS: reads the EIP-1967 implementation, beacon and admin slots, EIP-1822 (UUPS), the older OpenZeppelin layout and EIP-1167 minimal-proxy bytecode, and names the kind found. Use before trusting or decoding a contract whose code can be swapped by its admin; for a fuller risk verdict use contract_risk. A malformed address is 400; an address without code is 404, both uncharged. Example: address=0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only/non-destructive, and the description adds genuinely new behavioral facts: 400 on malformed address, 404 on address without code, both uncharged, and that every successful call is billed so repeats are not free — which explains the idempotentHint=false. Pricing (x402 USDC, card key, first 25 free) and the 'reads or computes only and changes nothing' guarantee round out the contract with the caller.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and standards, then usage, then error/pricing semantics in descending importance — no sentence is filler. The billing tail is somewhat dense and could be split, but each clause carries usable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a one-parameter read tool: it covers what is resolved, when to use it, error outcomes and cost. What is under-specified is the shape of the result — which of implementation/beacon/admin addresses come back and in what form — though with no output schema and a simple return, this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter is fully documented in the schema (100% coverage), so the baseline is 3; the description adds value with a concrete worked example address (0x3c49…3359) and an explicit validation rule (malformed address → 400). It does not describe address formatting constraints beyond the example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Find the implementation behind a proxy contract on Polygon PoS') and enumerates exactly which standards it resolves (EIP-1967 impl/beacon/admin slots, EIP-1822/UUPS, legacy OZ layout, EIP-1167 minimal proxy) plus that it names the proxy kind. This is far more specific than the sibling chain-family names (eth_proxy, arb_proxy, base_proxy) and lets an agent pick correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear trigger ('use before trusting or decoding a contract whose code can be swapped by its admin') and names the escalation path ('for a fuller risk verdict use contract_risk'). It stops short of an explicit when-not (e.g. for non-proxy or EOA addresses, or how it differs from polygon_storage/polygon_is_contract), so it falls just below the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polygon_receiptPolygon PoS transaction receiptARead-onlyInspect
Transaction receipt on Polygon PoS (eth_getTransactionReceipt): success or reverted, gas used, effective gas price, fee paid in POL, number of event logs and any contract created. Use to confirm a payment or call went through; for sender, value and calldata use polygon_tx. Input is a 0x-prefixed 64-hex hash; a pending or unknown hash returns 404, uncharged. Example: hash=0x23e86c30c46638b2e9798692fe89327a66aa8569a5d4a566125f655aeb8f80c7. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, non-destructive behavior, but the description adds meaningful operational context: it lists receipt fields, says pending or unknown hashes return 404 and are uncharged, explains pricing and payment methods, and notes that repeated calls are charged. That is substantial context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose, return fields, and the sibling distinction, then follows with usage, input format, example, and pricing. It is longer than typical but most sentences carry useful information; the pricing and payment details are relevant but make it somewhat dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with complete schema coverage and no output schema, the description supplies the missing context: what receipt fields are returned, what happens on pending or unknown hashes, pricing behavior, and the alternative tool for transaction details. It is complete enough for an agent to call it correctly and interpret common edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds value by restating the required input format, supplying a concrete example hash, and explaining the 404 behavior when the hash is pending or unknown. The schema already carries the core parameter description, so this is an enhancement rather than the sole source of semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: fetches a Polygon PoS transaction receipt via eth_getTransactionReceipt. It enumerates the returned facts and explicitly distinguishes itself from polygon_tx for sender, value, and calldata, so an agent can choose between the two siblings immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete use case—confirming whether a payment or call went through—and names the alternative tool plus the exact condition that selects it: use polygon_tx for sender, value, and calldata. This is explicit when-to-use and when-to-use-another guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polygon_storageStorage slot read, PolygonARead-onlyInspect
Read one raw storage slot of a contract on Polygon PoS (eth_getStorageAt): the 32-byte word, as a number and, when it holds one, as an address. Slot is a decimal index or a 0x 32-byte key (mapping and proxy slots). Use to inspect contract state that has no getter, owners or implementation pointers; for proxies use polygon_proxy. A malformed address or slot is rejected with 400, uncharged. Example: address=0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | Slot: a decimal index (0, 1, 2…) or a 0x 32-byte key | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds genuinely non-obvious behavior beyond the annotations: malformed address/slot returns 400 and is uncharged, pricing is $0.01/call with the first 25 free and failed calls free, and each repeat call is billed. That last point explains the otherwise puzzling idempotentHint=false on a pure read, which the annotations alone would not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the operation and the return shape, then routes to the alternative and closes with error/pricing facts. Dense and mostly waste-free, though the charging point is restated ('first 25 free; failed calls free' then 'each call is charged, so repeats are not free').
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 two-parameter read tool with no output schema, the description still explains what comes back (number and optional address decoding), what errors to expect, and cost implications. Nothing an agent needs to call it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, but the description adds meaning the schema does not: that the slot argument accepts mapping and proxy slots and that the address form is a 0x 32-byte key, plus a worked address example. Marginal but real value over the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('read one raw storage slot ... eth_getStorageAt') and details the return form (32-byte word as number, and as address when applicable). It explicitly distinguishes itself from the sibling polygon_proxy, so an agent can pick between them without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case ('inspect contract state that has no getter, owners or implementation pointers') and names the alternative for proxy slots (polygon_proxy). The inverse case - use polygon_call for state that does have a getter - is only implied, so not quite a full when/when-not/alternatives statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polygon_token_balancePolygon PoS ERC-20 balanceARead-onlyInspect
ERC-20 token balance of a wallet on Polygon PoS (USDC, USDT, WETH or any token, via balanceOf): raw amount, decimals, symbol and the human-readable amount, live from the token contract. Use to check stablecoin or token holdings before a transfer or trade; for the native coin use polygon_balance. Both inputs are 0x addresses (40 hex characters); no contract returns 404 and a non-ERC-20 contract 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC, USDT, WETH or DAI, or the 0x ERC-20 contract address | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, open-world, non-destructive, and non-idempotent hints. The description adds substantial context beyond them: live contract read, no state changes, charged repeats, $0.01/call pricing, first 25 free, failed calls free, and specific 404/422 error 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 purpose and routing, followed by operational details. It is dense but mostly justified because there is no output schema and pricing/error behavior matters; minor redundancy around charging and repeats slightly weakens concision.
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?
No output schema exists, so the description carries return-value responsibility and does so: raw amount, decimals, symbol, and human-readable amount. It also covers input format, failure modes, and charging, making it complete for this 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?
Schema coverage is 100%, and the schema already explains that token may be a ticker or a 0x ERC-20 contract address. The description adds useful error details, but its claim that 'both inputs are 0x addresses' conflicts with the schema's ticker option and can mislead an agent about valid token inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and operation: ERC-20 token balance of a wallet on Polygon PoS, with token symbol/contract detail and the balanceOf mechanism. It also explicitly differentiates from the native coin case by pointing to polygon_balance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear use case: check stablecoin or token holdings before a transfer or trade. It also names the alternative for the native coin via polygon_balance, which is the key sibling distinction for this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polygon_token_infoPolygon token info, ERC-20ARead-onlyInspect
Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Polygon PoS, live from the contract. Use to identify an unknown token address or to format raw amounts; for a holder's balance use polygon_token_balance. Input is a ticker (USDC, WETH…) or the token's 0x contract address; an address that is not an ERC-20 contract returns 422, uncharged. Example: token=0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, destructiveHint=false), so the description focuses on what they cannot express: the cost model ($0.01/call, first 25 free, failed calls free), the 422/unbilled failure mode, and the fact that repeats are charged. That last point directly explains why idempotentHint is false for an otherwise pure read, which is genuinely useful 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?
Front-loaded with what it returns, then when to use it, then the input format and example, then the commercial terms — a sensible order with no filler sentences. The payment/pricing sentences are dense and could be trimmed slightly, but each carries decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one required parameter and no output schema, the description supplies the return fields, the accepted input forms, an example, the failure mode, and the billing behavior. Nothing an agent needs in order to call this correctly and interpret the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already says the token may be a ticker like USDC/WETH or a 0x contract address, so the description largely restates it. The added value is only the worked example address and the validation behavior for non-ERC-20 input, which is modest beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('look up the name, symbol, decimals and total supply of an ERC-20 token contract on Polygon PoS') and names the exact fields returned, so the agent knows what comes back without opening a schema. It is also explicitly distinguished from the closest sibling by pointing at polygon_token_balance for holder balances.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases ('identify an unknown token address', 'format raw amounts') and names the alternative tool plus the condition that selects it. It also states what happens when the input is not an ERC-20 contract (422, uncharged), which removes the main ambiguity an agent could hit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polygon_token_transfersToken transfers, Polygon PoSARead-onlyInspect
List a wallet's recent transfers of one ERC-20 token (default USDC) on Polygon PoS, in and out, over the last N blocks (1-2,000, default 1,000): direction, counterparty, amount and transaction, newest first, up to 50. Use to confirm a payment arrived or see what was sent; for the current balance use polygon_token_balance. Malformed addresses are rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Token: a ticker such as USDT or WETH, or the 0x ERC-20 contract (default: USDC on this network) | |
| blocks | No | How many recent blocks to scan (1-2000, default 1000; 2,000 blocks is about 67 minutes on Polygon PoS) | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/destructive/openWorld/idempotent, but the description adds substantial context beyond them: cost model ($0.01/call via x402 or card key, first 25 free, failed calls free), the 400 rejection for malformed addresses being uncharged, and the warning that repeats are not free because each call is billed. That billing/repeat-charge nuance is exactly the kind of behavior an agent needs and cannot get from 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?
Front-loaded with purpose, scope, alternative, then pricing; the example address earns its place as a format anchor. Slightly redundant on cost, which is mentioned twice ('first 25 free; failed calls free' and 'each call is charged, so repeats are not free'), but the density is justified for a paid tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by naming the returned fields (direction, counterparty, amount, transaction), ordering (newest first) and row cap (up to 50). No output schema leaves nothing critical unspecified for an agent to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters including defaults and ranges are already documented in structured form. The description restates the USDC default and the 1–2,000 block window, and adds a concrete example address, but adds no semantics (e.g. how block window interacts with the 50-result cap) beyond the schema. 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?
States a specific verb ('List') and resource ('recent transfers of one ERC-20 token ... on Polygon PoS') with scope details (in/out, block window, default USDC, cap of 50, sort order). It explicitly contrasts itself with polygon_token_balance, so an agent can separate it from the balance sibling without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage scenarios ('confirm a payment arrived or see what was sent') and names the alternative tool with the condition that selects it ('for the current balance use polygon_token_balance'). The when-to-use and when-to-use-something-else paths are both explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polygon_txPolygon transactionARead-onlyInspect
Look up a Polygon PoS transaction by hash: sender, recipient, value in POL, nonce, gas limit, the 4-byte function selector and its block. Use to see what was sent or whether it exists; for success or failure and fees paid use polygon_receipt, for emitted events polygon_logs. Input is a 0x-prefixed 64-hex hash; an unknown hash returns 404, uncharged. Example: hash=0x23e86c30c46638b2e9798692fe89327a66aa8569a5d4a566125f655aeb8f80c7. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, open-world; the description adds real context beyond them: 404 with no charge for unknown hashes, $0.01/call via x402 USDC or card key, first 25 free, failed calls free, and no caching benefit since repeats are charged.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and fields, then alternatives, then input format, then pricing. Dense but nearly every clause carries information; the pricing tail is long but operationally relevant given per-call charging.
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?
No output schema exists, but the description enumerates the returned fields (sender, recipient, value in POL, nonce, gas limit, selector, block), so an agent knows what it will get, and error behavior and cost are covered.
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 format is already documented; the description reinforces it with the exact 0x-prefixed 64-hex requirement and a concrete worked example hash, which aids correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Look up a Polygon PoS transaction by hash") and enumerates the returned fields, making it clearly distinct from polygon_receipt and polygon_logs, which it names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ("see what was sent or whether it exists") and names the alternatives with their conditions: polygon_receipt for success/failure and fees, polygon_logs for emitted events.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scroll_allowanceToken allowance, Scroll ERC-20ARead-onlyInspect
ERC-20 token allowance on Scroll: how much a spender may move from an owner's wallet (allowance), raw and in token units, and whether the approval is unlimited. Use to check an approval before a swap or to audit risky open approvals; for the owner's balance use scroll_token_balance. Token is a ticker (USDC, USDT, WETH…) or a 0x contract; a missing contract is 404 and a non-ERC-20 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | 0x wallet that gave the approval | |
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address | |
| spender | Yes | 0x contract or wallet allowed to spend (the example is Uniswap Permit2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/destructive annotations: it discloses error semantics (missing contract → 404, non-ERC-20 → 422, both uncharged), pricing ($0.01/call, first 25 free, failed calls free), and that repeated calls are charged because idempotentHint is false. That is exactly the cost/failure context an agent needs before calling a paid endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the definition, then usage, then failure/pricing terms; every sentence carries information. It is dense but the pricing tail is long-ish and could be tightened without losing substance.
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 no output schema, the description still tells the agent what comes back (raw and token-unit allowance, plus an unlimited flag), how inputs are shaped, and what failures look like. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents owner, token, and spender with examples (Uniswap Permit2), so the baseline is 3. The description adds only marginal parameter-level value: the ticker-or-0x contract choice is already in the schema, and the 404/422 notes are call-level error behavior rather than per-parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — ERC-20 allowance on Scroll — and immediately defines the semantics (how much a spender may move from an owner's wallet), including the unlimited-approval flag. It also explicitly distinguishes itself from scroll_token_balance, so an agent can route between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names two concrete use cases (pre-swap approval check, auditing risky open approvals) and points to the sibling tool for the adjacent case (owner balance). The when-to-use and the alternative are both explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scroll_balanceScroll balance, native coinARead-onlyInspect
Native ETH balance (eth_getBalance) of any 0x wallet address on Scroll at the latest block, in wei and in ETH. Use to check whether a wallet can pay gas or a transfer; for ERC-20 tokens use scroll_token_balance, for all holdings at once use wallet_portfolio. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet or contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile, but the description adds context they cannot: malformed addresses return 400 and are uncharged, failed calls are free, and each successful call is billed, which explains why idempotentHint is false despite being a pure read. That pricing/charging behavior is exactly the kind of non-obvious trait an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, alternatives, error behavior, example, pricing and read-only reassurance are packed into a short front-loaded block with no filler. The x402/card-key pricing clause is the only slightly promotional element, though it does carry cost information an agent may need.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description covers what is returned (wei and ETH), at what block, what happens on bad input, and the cost model. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes further by giving a concrete example address and stating that malformed addresses are rejected with 400, which tells the agent what input validation to expect. It stops short of describing format edge cases such as checksum or ENS-name acceptance.
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 names the precise resource and scope: native ETH balance (eth_getBalance) of a 0x address on Scroll at the latest block, returned in wei and ETH. It explicitly distinguishes itself from scroll_token_balance (ERC-20) and wallet_portfolio (all holdings), so an agent can pick it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the concrete use case ("check whether a wallet can pay gas or a transfer") and names two sibling alternatives with the conditions that select them. There is no ambiguity about when to reach for this tool versus the token-balance or portfolio tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scroll_blockScroll block numberARead-onlyInspect
Latest block number and block details on Scroll, or any block by decimal number: hash, timestamp, transaction count, gas used and limit, base fee in gwei and producer. Use for timestamps and confirmation counts; for current fees use scroll_gas. A block that does not exist yet returns 404, uncharged. Example: number=latest. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| number | No | Block number, or 'latest' (default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true and idempotentHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: a nonexistent block returns 404 and is uncharged, and each call is billed so repeats are not free (which explains the non-idempotent hint). It does not describe response shape or pagination, but with annotations carrying the safety burden this is solid added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and return fields, then usage routing, then edge case and pricing. Dense but every clause carries information; the pricing/free-tier sentence is the longest and is the least essential to correct invocation.
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?
There is no output schema, so the description compensates by enumerating the returned fields. Combined with the 404 behavior, pricing, and the sibling pointer, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents 'number' with the 'latest' default, so the baseline is 3. The description adds a concrete example (number=latest) and clarifies that a block may be given as a decimal number, which is slightly more than the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Latest block number and block details on Scroll, or any block by decimal number') and enumerates the returned fields (hash, timestamp, tx count, gas used/limit, base fee, producer). It also names the sibling it is not (scroll_gas), so an agent can distinguish it from the other scroll_* tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it ('for timestamps and confirmation counts') and routes the agent elsewhere for the adjacent need ('for current fees use scroll_gas'). The 'number=latest' example further anchors typical invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scroll_callEth call, Scroll contract callARead-onlyInspect
Read-only contract call on Scroll (eth_call): send ABI-encoded calldata to a contract at the latest block and get the raw return data, without a transaction or gas. Use to read any view function that has no dedicated tool (the example reads USDC totalSupply, selector 0x18160ddd); decode the result with the function's ABI. Calldata up to 8 KB; a call that reverts is 422 with the reason, uncharged. Example: to=0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4, data=0x18160ddd. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x contract address to call | |
| data | Yes | 0x ABI-encoded calldata: 4-byte selector plus arguments | |
| from | No | Optional 0x sender address for calls that check msg.sender |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond annotations: latest-block execution, 8 KB calldata cap, revert behavior (422 with reason, uncharged), and billing semantics including free tier and that repeats are not free — which explains the idempotentHint=false. This is unusually rich behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then constraints, example, and pricing — all useful. Slightly padded by mild redundancy between 'without a transaction or gas' and 'Reads or computes only and changes nothing', plus the billing detail is dense.
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?
No output schema exists, yet the description explains the return is raw return data requiring ABI decoding, plus size limits, failure semantics, and cost. An agent has everything needed to call and interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description goes further by showing a concrete to/data example with the 4-byte selector (0x18160ddd) and instructing to decode results with the function ABI. It doesn't explain the from/msg.sender param in the description, but the schema covers it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (read-only eth_call on Scroll) with scope: send ABI-encoded calldata to a contract at latest block and get raw return data. It also distinguishes itself from dedicated siblings by saying to use it for view functions that have no dedicated tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit selection criteria: use for any view function lacking a dedicated tool, and notes alternatives exist implicitly. It does not name which sibling to prefer for common cases (e.g., scroll_token_balance vs calling balanceOf), which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scroll_estimate_gasEstimate gas, ScrollARead-onlyInspect
Estimate the gas a transaction would use on Scroll (eth_estimateGas) and what it would cost at the current gas price, in gas units, gwei and ETH. Give to, plus value in ETH and calldata for a contract call, and the sender when the call depends on it. Use before sending a transaction or to price a batch; for the gas price alone use scroll_gas. A transaction that would revert is 422 with the reason, uncharged. Example: to=0x000000000000000000000000000000000000dEaD. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x recipient or contract address | |
| data | No | Optional 0x calldata for a contract call | |
| from | No | 0x sender address (default: an empty address) | |
| value | No | Amount of ETH to send, in ETH (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond annotations: revert behavior (422 with reason, uncharged), pricing model ($0.01/call via x402 USDC or card key, first 25 free, failed calls free), and the non-idempotent charged-per-call caveat that aligns with idempotentHint=false. readOnlyHint is corroborated by 'reads or computes only and changes nothing'. Rich, but the auth/payment mechanics could be slightly sharper about which key path applies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose and the sibling routing in the first two sentences, then adds failure/pricing notes. Dense but mostly earning its place; the payment/billing sentence is the longest and could be tightened.
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?
No output schema exists, and the description compensates by naming the returned units (gas, gwei, ETH) and the revert error shape. Combined with full schema coverage and annotations, an agent has everything needed to call and interpret 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?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning: it explains that value is in ETH and that the sender matters only when the call depends on it, guiding when to supply optional params. Marginal gain over the schema, hence 4 rather than 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource — estimating gas for a transaction on Scroll — and specifies the returned quantities (gas units, gwei, ETH). It explicitly distinguishes itself from the sibling scroll_gas by scoping that tool to the price alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('before sending a transaction or to price a batch') and names the alternative plus its selection condition ('for the gas price alone use scroll_gas'). Also tells the agent which inputs to supply for a contract call vs. a plain transfer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scroll_gasScroll gas priceARead-onlyInspect
Current gas price on Scroll (eth_gasPrice): gas price, base fee and suggested priority fee in gwei, plus what a plain ETH transfer (21,000 gas) costs right now. Takes no input. Use before sending a transaction or to decide whether to wait; for the fee a past transaction actually paid use scroll_receipt. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Optional: comma-separated top-level result keys to keep, for a smaller answer (for example only=price,symbol); unknown keys are ignored and an empty match returns the full result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false, openWorldHint and idempotentHint=false. The description adds genuinely non-obvious context the schema/annotations cannot express: $0.01/call via x402 USDC or card key, first 25 free, failed calls free, and that repeated calls are billed again — which explains the idempotentHint=false in cost terms. It does not add much else beyond restating 'reads or computes only and changes nothing.'
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and return contents, then usage, then cost. Slightly redundant at the tail: 'each call is charged, so repeats are not free' restates the $0.01/call and free-tier facts already given, though the repeat-billing emphasis is arguably worth the 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?
With no output schema, the description carries the return-shape burden and does so by naming the three fee components plus a concrete transfer cost. Pricing, failure behavior, side-effect freedom, and the sibling boundary (scroll_receipt) are all covered, leaving nothing an agent needs before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single optional `only` filter is fully documented in the schema, so the baseline is 3. However, the description says 'Takes no input,' which is mildly misleading given an optional result-trimming parameter exists and is never mentioned — an agent reading only the description would not know it can request a smaller payload.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Current gas price on Scroll (eth_gasPrice)') and enumerates the returned fields: gas price, base fee, suggested priority fee in gwei, plus the 21,000-gas transfer cost. It also implicitly separates itself from scroll_gas_history (current) and scroll_receipt (paid fee), so an agent can route without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('before sending a transaction or to decide whether to wait') and an explicit alternative with the condition that selects it ('for the fee a past transaction actually paid use scroll_receipt'). No alternatives are left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scroll_gas_historyScroll gas history, gas priceARead-onlyInspect
Gas price history on Scroll (eth_feeHistory): base fee in gwei for each of the last N blocks (5-100, default 20), how full each block was, and the 10th, 50th and 90th percentile priority fees, with the low, average and high base fee over the window. Use to judge whether fees are rising, pick a priority fee or time a transaction; for the current price alone use scroll_gas. Example: blocks=20. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks, 5-100 (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), and the description adds genuinely new context: the eth_feeHistory backing call, the cost model ($0.01/call via x402 USDC or card key, first 25 free, failed calls free), and the fact that each call is charged so repeats are not free — which explains the idempotentHint=false annotation. It stops short of describing pagination or response ordering, but the behavioral picture is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and return contents, then usage, then the alternative, then pricing. Dense but every sentence carries information; the pricing sentence is long but materially useful for an agent deciding whether to repeat calls.
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?
No output schema exists, and the description fully compensates by enumerating the returned fields (base fee, fullness, percentile priority fees, window aggregates). Combined with the cost and safety context, an agent has everything needed to call and interpret 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?
Schema coverage is 100% and the schema already documents the blocks parameter with its 5-100 range and default of 20, so the description's restatement adds little. The 'Example: blocks=20' is a minor aid but no 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?
States a specific verb and resource (gas price history on Scroll via eth_feeHistory) and enumerates exactly what is returned: base fee in gwei per block, block fullness, 10th/50th/90th percentile priority fees, and low/average/high base fee over the window. It explicitly distinguishes itself from the sibling scroll_gas, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use guidance (judge whether fees are rising, pick a priority fee, time a transaction) and an explicit when-not/alternative rule: 'for the current price alone use scroll_gas.' Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scroll_is_contractScroll is-contract checkARead-onlyInspect
Check whether a 0x address on Scroll is a smart contract or a plain wallet: bytecode size, and whether it is an EIP-1167 minimal proxy and which implementation it points to. Use before sending funds or approving a spender; for a fuller risk verdict use check_counterparty. A malformed address is rejected with 400, uncharged. Example: address=0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces this with 'Reads or computes only and changes nothing', plus the important caveat that each call is charged so repeats are not free (consistent with idempotentHint=false). It adds pricing, free-tier, and failed-call-cost context that annotations cannot express, but it does not describe the concrete response shape (e.g., boolean field names, proxy implementation field), so the disclosure is strong on cost and safety but incomplete on output behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, then usage, then error behavior, then a concrete example, then pricing. Despite covering many topics it stays to a handful of sentences with no filler; the pricing clause is the only part that could be trimmed slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only chain lookup with no output schema, the description covers purpose, alternatives, error handling, example input, cost, and non-mutation guarantees — everything an agent needs to select and call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one parameter, so the baseline is 3. The description goes slightly beyond the schema by supplying a concrete example address and by specifying the rejection behavior when the address is malformed, which helps the agent format the argument correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check whether a 0x address on Scroll is a smart contract or a plain wallet') and enumerates what is returned: bytecode size, EIP-1167 minimal proxy status, and the implementation it points to. This distinguishes it from nearby siblings like scroll_proxy and scroll_call, which an agent could otherwise confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use ('before sending funds or approving a spender') and names the alternative for a different job ('for a fuller risk verdict use check_counterparty'). It also tells the agent what happens on bad input (malformed address rejected with 400, uncharged), so preconditions are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scroll_logsScroll event logsARead-onlyInspect
Recent contract event logs on Scroll (eth_getLogs): the events a contract emitted over the last N blocks (1-1,000, default 50), optionally filtered by topic0 (the 0x 32-byte event signature hash). Returns up to 100 logs with block, transaction hash and topics. Use to watch transfers or contract events; for one transaction's outcome use scroll_receipt. Example: address=0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks to scan (1-1000, default 50) | |
| topic0 | No | Optional 0x event signature hash to filter by | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/destructive/openWorld, but the description adds real value beyond them: a hard cap of up to 100 returned logs, the pricing model ($0.01/call, first 25 free, failed calls free), and the fact that repeats are not free — which concretely explains the idempotentHint=false. It does not explain truncation or ordering of results when more than 100 logs match.
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 functional content is front-loaded in the first two sentences, then the alternative routing, then pricing. It is somewhat padded — the pricing/credits sentences are long and 'reads or computes only and changes nothing' repeats readOnlyHint — but nothing is genuinely off-topic.
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 no output schema, the description does its job by sketching the return shape (up to 100 logs with block, transaction hash and topics) and covering costs and the sibling alternative. The remaining gap is behavior when the result set exceeds 100 logs or how topics are ordered, which matters for a log-scanning 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?
Schema coverage is 100%, so all three parameters are already documented. The description restates the blocks range (1-1,000, default 50) and clarifies topic0 as a 0x 32-byte event signature hash, but adds little beyond the schema text and supplies only an example address value rather than format guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific RPC method (eth_getLogs) and the resource (contract event logs on Scroll), and explicitly contrasts itself with the sibling scroll_receipt for single-transaction outcomes. An agent can distinguish it from scroll_token_transfers or scroll_receipt without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the use case ('watch transfers or contract events') and names the alternative tool with the condition that selects it ('for one transaction's outcome use scroll_receipt'). This is explicit when-to-use plus explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scroll_nonceScroll nonce, account nonceARead-onlyInspect
Read the transaction count (nonce) of a 0x address on Scroll, both confirmed and including pending transactions. Use to build the next transaction or to tell whether an address has ever sent anything; for its balance use scroll_balance. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnly/destructive/openWorld annotations, it discloses pricing ($0.01/call, first 25 free, card key via /credits), that failed calls are free, and that malformed addresses return 400 uncharged. The line 'each call is charged, so repeats are not free' directly explains the non-obvious idempotentHint=false 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?
Core purpose is front-loaded in the first clause, followed by usage, error behavior, example, and pricing. It is dense but every sentence carries operational value; the inline 'Example:' and pricing tail are slightly cluttered for a single-parameter read.
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?
No output schema exists, and the description conveys that both confirmed and pending counts are returned, which covers the essential return semantics for a nonce lookup. Field names and exact response shape are not specified, a minor gap for a one-parameter read 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?
Schema coverage is 100% for the single 'address' parameter, so the baseline is 3. The example address illustrates the expected 0x format but does not add constraints the schema lacks, such as checksum requirements or ENS support.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the transaction count (nonce) of a 0x address on Scroll') and scopes it to both confirmed and pending counts. The chain prefix and the explicit hand-off to scroll_balance make it trivially distinguishable from the ~190 sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases ('build the next transaction', 'tell whether an address has ever sent anything') and names the alternative tool for a related need ('for its balance use scroll_balance'). Nothing is left to inference about when to pick this over a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scroll_proxyProxy implementation, ScrollARead-onlyInspect
Find the implementation behind a proxy contract on Scroll: reads the EIP-1967 implementation, beacon and admin slots, EIP-1822 (UUPS), the older OpenZeppelin layout and EIP-1167 minimal-proxy bytecode, and names the kind found. Use before trusting or decoding a contract whose code can be swapped by its admin; for a fuller risk verdict use contract_risk. A malformed address is 400; an address without code is 404, both uncharged. Example: address=0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: documents specific failure semantics (malformed address = 400, no code = 404, both uncharged), pricing ($0.01/call, first 25 free, failed calls free), and the side-effect profile ('reads or computes only and changes nothing'). The 'each call is charged, so repeats are not free' note is consistent with idempotentHint=false rather than 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?
Front-loads the capability and pattern list before the usage guidance, and every clause (error codes, pricing, read-only nature) is actionable. The pricing/credits tail is slightly dense but genuinely relevant to an agent deciding whether to call.
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 no output schema, the description still conveys the return shape at a high level ('names the kind found') and which slots are inspected. Error codes and cost are covered, so an agent could invoke it confidently; only the exact response fields are unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 100% schema coverage ('0x contract address'), so the schema already carries the semantics and baseline 3 applies. The description adds a concrete example address and implies the address must be a deployed contract (404 if no code), but no format details 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?
States a specific verb and resource ('Find the implementation behind a proxy contract on Scroll') and enumerates exactly which slot standards it reads (EIP-1967, beacon/admin, EIP-1822/UUPS, OZ legacy, EIP-1167) plus what it returns ('names the kind found'). The chain prefix in the name plus the explicit 'on Scroll' cleanly separates it from the ~20 sibling *_proxy tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear trigger ('Use before trusting or decoding a contract whose code can be swapped by its admin') and names an alternative ('for a fuller risk verdict use contract_risk'). It does not explicitly contrast with nearby tools like scroll_is_contract or scroll_storage, but the when-to-use condition is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scroll_receiptScroll transaction receiptARead-onlyInspect
Transaction receipt on Scroll (eth_getTransactionReceipt): success or reverted, gas used, effective gas price, fee paid in ETH, number of event logs and any contract created. Use to confirm a payment or call went through; for sender, value and calldata use scroll_tx. Input is a 0x-prefixed 64-hex hash; a pending or unknown hash returns 404, uncharged. Example: hash=0x0176fb42be8ea0058d1ac56cb253f0df883ba4b564489e71b83fb7e27e912abd. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and non-destructive nature, but the description adds what they cannot: per-call pricing ($0.01 via x402 USDC or card key, first 25 free), failed calls free, and the crucial clarification that a repeat call is charged again — which explains the otherwise puzzling idempotentHint=false on a pure read. The 404-on-pending behavior clarifies failure semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the operation and return fields, then usage routing, then input format, then pricing — a sensible order. The inline example hash is long and the pricing sentence is dense, but each carries actionable information rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description compensates by enumerating every meaningful receipt field. Combined with the payment model, error semantics, and input format, an agent has everything needed to call it correctly and predict the cost.
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 parameter is already documented; the description reinforces the 0x-prefixed 64-hex format and supplies a concrete example hash an agent can pattern-match against. It adds value but stops short of describing any transformation or normalization the server performs on the input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific operation (eth_getTransactionReceipt on Scroll) and enumerates exactly what the receipt yields: status, gas used, effective gas price, fee in ETH, log count, contract created. It also explicitly separates itself from the sibling scroll_tx by naming what that tool covers (sender, value, calldata).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use to confirm a payment or call went through' gives the triggering condition, and 'for sender, value and calldata use scroll_tx' names the alternative and the case that selects it. The pending/unknown 404 behavior further defines the boundary of what this tool can answer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scroll_storageStorage slot read, ScrollARead-onlyInspect
Read one raw storage slot of a contract on Scroll (eth_getStorageAt): the 32-byte word, as a number and, when it holds one, as an address. Slot is a decimal index or a 0x 32-byte key (mapping and proxy slots). Use to inspect contract state that has no getter, owners or implementation pointers; for proxies use scroll_proxy. A malformed address or slot is rejected with 400, uncharged. Example: address=0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | Slot: a decimal index (0, 1, 2…) or a 0x 32-byte key | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true and idempotentHint=false; the description usefully reconciles the non-idempotent hint by explaining that every call is charged, so repeats are not free. It also discloses malformed-input handling (400, uncharged) and the fee model, which goes beyond the annotations. However, much of the tail of the description is pricing boilerplate rather than behavioral context about the read itself (e.g. what a zero slot looks like, block-tag semantics).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, return shape, and the sibling alternative are front-loaded in the first two sentences, which is ideal. The final pricing/credits sentence is dense and partly commercial boilerplate, though cost is genuinely relevant to an agent deciding whether to call repeatedly.
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 no output schema, the description carries the return-value burden and does so ('the 32-byte word, as a number and, when it holds one, as an address'). Error behavior, cost, and the proxy alternative are all covered, so an agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it clarifies that the slot accepts a decimal index or a 0x 32-byte key and that such keys correspond to mapping and proxy storage slots. It also supplies a concrete address example, which aids format compliance beyond the schema's terse '0x contract address'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read one raw storage slot of a contract on Scroll') and names the underlying RPC (eth_getStorageAt), plus describes the return shape. It is clearly distinguishable from siblings like scroll_call or scroll_proxy.
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 prescribes when to use it ('inspect contract state that has no getter, owners or implementation pointers') and redirects the proxy case to scroll_proxy. This is exactly the when/when-not/alternative structure the dimension rewards.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scroll_token_balanceScroll ERC-20 balanceARead-onlyInspect
ERC-20 token balance of a wallet on Scroll (USDC, USDT, WETH or any token, via balanceOf): raw amount, decimals, symbol and the human-readable amount, live from the token contract. Use to check stablecoin or token holdings before a transfer or trade; for the native coin use scroll_balance. Both inputs are 0x addresses (40 hex characters); no contract returns 404 and a non-ERC-20 contract 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC, USDT, WETH or DAI, or the 0x ERC-20 contract address | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses the error contract (404 for no contract, 422 for non-ERC-20, both uncharged), the billing model ($0.01/call via x402 or card key, first 25 free, failures free), and the non-idempotent cost note that repeats are not free. This adds substantial operational context the readOnly/openWorld hints alone do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and the sibling routing are front-loaded in the first two clauses, and no sentence is pure filler. It is dense and slightly long, with pricing and error details stacking up, but each clause carries usable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned fields (raw amount, decimals, symbol, human-readable amount). Combined with error codes, input constraints, cost, and safety profile, an agent has everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real constraints the schema lacks: both inputs must be 0x addresses of 40 hex characters, and the token argument accepts either a ticker or a contract address. That format guidance meaningfully improves invocation accuracy, though it stops short of documenting all edge cases.
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 names a specific verb and resource ('ERC-20 token balance of a wallet on Scroll'), specifies the mechanism (balanceOf), and enumerates both the exact return fields and the accepted token forms. It explicitly distinguishes itself from the native-coin sibling scroll_balance, so an agent can route correctly without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the concrete use case ('check stablecoin or token holdings before a transfer or trade') and names the alternative with the condition that selects it ('for the native coin use scroll_balance'). When-to-use and when-to-use-something-else are both explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scroll_token_infoScroll token info, ERC-20ARead-onlyInspect
Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Scroll, live from the contract. Use to identify an unknown token address or to format raw amounts; for a holder's balance use scroll_token_balance. Input is a ticker (USDC, WETH…) or the token's 0x contract address; an address that is not an ERC-20 contract returns 422, uncharged. Example: token=0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint=true, destructiveHint=false), so the description's real contribution is the cost model ($0.01/call via x402 or card key, first 25 free, failed calls free) and the explicit non-idempotency explanation ("each call is charged, so repeats are not free"), which reconciles idempotentHint=false with a pure read. It also documents the 422-on-non-contract behavior. Missing: any statement about latency or rate limiting, though these are minor for a single-call read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then use cases, then input format, then error behavior, then pricing — a sensible ordering with no filler. Slight redundancy at the tail, where "each call is charged, so repeats are not free" restates the pricing sentence immediately before it.
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?
There is no output schema, and the description compensates by naming all four returned fields. Combined with input format, error semantics, cost, and the sibling alternative for balances, an agent has everything needed to call this correctly on the first attempt.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already says the input is a ticker or 0x address, so baseline is 3. The description goes further by giving a concrete example address and explaining that a non-ERC-20 address is rejected rather than returning empty data, which is meaning the schema does not carry.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource ("Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Scroll") with the returned fields enumerated. It explicitly separates itself from the nearest sibling ("for a holder's balance use scroll_token_balance"), so an agent can route correctly from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names two concrete use cases (identifying an unknown token address, formatting raw amounts) and a named alternative with the condition that selects it. Also states a failure boundary (non-ERC-20 address returns 422, uncharged), which removes ambiguity about what happens on a bad input.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scroll_token_transfersToken transfers, ScrollARead-onlyInspect
List a wallet's recent transfers of one ERC-20 token (default USDC) on Scroll, in and out, over the last N blocks (1-2,000, default 1,000): direction, counterparty, amount and transaction, newest first, up to 50. Use to confirm a payment arrived or see what was sent; for the current balance use scroll_token_balance. Malformed addresses are rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Token: a ticker such as USDT or WETH, or the 0x ERC-20 contract (default: USDC on this network) | |
| blocks | No | How many recent blocks to scan (1-2000, default 1000; 2,000 blocks is about 4.3 hours on Scroll) | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld annotations: malformed addresses return 400 uncharged, results are capped at 50 newest-first, repeats are billed, and pricing ($0.01/call, 25 free, failed calls free) is disclosed. The only shortfall is that it doesn't state how a partial/truncated history is signaled when the cap is hit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then constraints, then the alternative, then pricing — a sensible order with no filler. It is dense, however: the billing clause is a long trailing run of conditions that could be tightened.
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?
There is no output schema, and the description compensates by enumerating the returned fields (direction, counterparty, amount, transaction), ordering, and the 50-row cap. Combined with the charge model, an agent has everything needed to call it and interpret the result.
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 token, blocks and address, including the ranges and defaults that the description restates. The one addition beyond the schema is a concrete example address, which is helpful but marginal, so the baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: list a wallet's recent transfers of one ERC-20 token on Scroll, both directions, including which fields come back and the ordering/limit. It is instantly distinguishable from the sibling scroll_token_balance, which it names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit use cases ('confirm a payment arrived or see what was sent') and an explicit alternative for the adjacent need ('for the current balance use scroll_token_balance'). Nothing about when to pick this vs. the sibling is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scroll_txScroll transactionARead-onlyInspect
Look up a Scroll transaction by hash: sender, recipient, value in ETH, nonce, gas limit, the 4-byte function selector and its block. Use to see what was sent or whether it exists; for success or failure and fees paid use scroll_receipt, for emitted events scroll_logs. Input is a 0x-prefixed 64-hex hash; an unknown hash returns 404, uncharged. Example: hash=0x0176fb42be8ea0058d1ac56cb253f0df883ba4b564489e71b83fb7e27e912abd. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond annotations: 404 for unknown hash with no charge, per-call pricing ($0.01, first 25 free, failed calls free), and that repeats are not free — which explains idempotentHint=false well. The explanation of what the call costs and does-nothing-to-state is useful, though it could be tightened slightly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the operation and scoping/alternatives before pricing details, and every sentence carries information. The final sentence is dense (read-only + per-call charge combined) but each clause 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?
With no output schema, the description enumerates the returned fields and states the 404-miss behavior. Combined with annotations covering safety and a single fully-documented parameter, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the format is already documented, but the description reinforces the 0x-prefixed 64-hex requirement and provides a concrete example hash, plus the behavior for an unknown hash. This adds modest value over 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?
States a specific verb ("Look up") and resource ("Scroll transaction by hash") and enumerates the returned fields (sender, recipient, value in ETH, nonce, gas limit, selector, block). It explicitly distinguishes itself from scroll_receipt and scroll_logs, so an agent can route without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ("see what was sent or whether it exists") and names the two alternatives with their selecting conditions: scroll_receipt for success/failure and fees, scroll_logs for emitted events. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sei_allowanceToken allowance, Sei ERC-20ARead-onlyInspect
ERC-20 token allowance on Sei: how much a spender may move from an owner's wallet (allowance), raw and in token units, and whether the approval is unlimited. Use to check an approval before a swap or to audit risky open approvals; for the owner's balance use sei_token_balance. Token is a ticker (USDC, USDT, WETH…) or a 0x contract; a missing contract is 404 and a non-ERC-20 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | 0x wallet that gave the approval | |
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address | |
| spender | Yes | 0x contract or wallet allowed to spend (the example is Uniswap Permit2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behavior: missing contracts return 404, non-ERC-20 tokens return 422, both are uncharged, calls cost $0.01 with the first 25 free, failed calls are free, and repeats are not free because each call is charged. It also reinforces that the tool only reads/computes and changes nothing, consistent with readOnlyHint=true and destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the paragraph is dense but mostly purposeful. Pricing and error details are useful, though the single long block packs multiple supplemental clauses and slightly repeats the read-only and per-call-charge points.
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 three-parameter read-only tool with no output schema, the description covers the return shape (raw and token units, unlimited flag), error cases, and billing behavior. An agent has enough context to call it correctly and interpret common outcomes.
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 defines owner, spender, and token in detail. The description adds some context around token format and error behavior, but most parameter meaning is already carried by the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource and operation: ERC-20 token allowance on Sei, including what it returns (raw and token-unit allowance, unlimited flag). It explicitly distinguishes itself from the sibling sei_token_balance, so an agent can identify its role without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit use cases — checking an approval before a swap or auditing risky open approvals — and names the alternative for a related need: 'for the owner's balance use sei_token_balance.' This is clear routing guidance with an alternative sibling called out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sei_balanceSei balance, native coinARead-onlyInspect
Native SEI balance (eth_getBalance) of any 0x wallet address on Sei at the latest block, in wei and in SEI. Use to check whether a wallet can pay gas or a transfer; for ERC-20 tokens use sei_token_balance, for all holdings at once use wallet_portfolio. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet or contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so safety is covered. The description goes further in useful ways: it discloses pricing ($0.01/call, first 25 free, failed calls free), the 400 rejection of malformed addresses without charge, and the non-idempotent billing behavior that explains idempotentHint=false. That is real added context beyond structured fields, though return shape and block-lag semantics are not described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and scope are front-loaded in the first clause, then alternatives, then failure/pricing behavior. It is dense and every sentence carries information, but the pricing and example sentences make it slightly longer than strictly needed for tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the definition covers what it returns (wei and SEI), at what block, what inputs are valid, what happens on bad input, what it costs, and what it does not cover (tokens, portfolios). Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the single parameter is already documented; the description still adds value with an explicit 'any 0x wallet address' constraint, a concrete example address, and the fact that malformed input yields a 400 rather than a partial result. That is meaningful validation semantics beyond the schema's one-line property description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: the native SEI balance (eth_getBalance) of any 0x address on Sei at the latest block, returned in both wei and SEI. It explicitly separates itself from sei_token_balance (ERC-20) and wallet_portfolio (all holdings), so an agent can distinguish it from the dozens of sibling *_balance tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case (check whether a wallet can pay gas or a transfer) and names two alternatives with the condition that selects each: sei_token_balance for ERC-20s, wallet_portfolio for all holdings at once. No inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sei_blockSei block numberARead-onlyInspect
Latest block number and block details on Sei, or any block by decimal number: hash, timestamp, transaction count, gas used and limit, base fee in gwei and producer. Use for timestamps and confirmation counts; for current fees use sei_gas. A block that does not exist yet returns 404, uncharged. Example: number=latest. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| number | No | Block number, or 'latest' (default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and idempotentHint=false, and the description explains why: every call is charged (x402 USDC or card key), repeats are not free, failed calls are free, and a nonexistent block returns an uncharged 404. That adds billing and error behavior well beyond what the annotations convey, plus an explicit 'changes nothing' safety statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return fields, then routing, error behavior, example, and pricing. Dense but every sentence carries information; the pricing/credits clause is slightly wordy but is genuinely decision-relevant.
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 no output schema, the description enumerates what the call returns, and it covers error behavior (404), cost implications, and read-only semantics. Nothing an agent needs to call or interpret this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already documents 'latest' as default. The description adds only that a block can be specified by decimal number and repeats the 'latest' example, which is marginal beyond the schema – baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (fetch latest Sei block or any block by decimal number) and enumerates the returned fields (hash, timestamp, tx count, gas used/limit, base fee, producer). It explicitly contrasts with the sibling sei_gas, so an agent can distinguish it without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives positive guidance ('use for timestamps and confirmation counts') and names the alternative for the adjacent need ('for current fees use sei_gas'). The default and example ('number=latest') are also stated, leaving no inference needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sei_callEth call, Sei contract callARead-onlyInspect
Read-only contract call on Sei (eth_call): send ABI-encoded calldata to a contract at the latest block and get the raw return data, without a transaction or gas. Use to read any view function that has no dedicated tool (the example reads USDC totalSupply, selector 0x18160ddd); decode the result with the function's ABI. Calldata up to 8 KB; a call that reverts is 422 with the reason, uncharged. Example: to=0xe15fC38F6D8c56aF07bbCBe3BAf5708A2Bf42392, data=0x18160ddd. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x contract address to call | |
| data | Yes | 0x ABI-encoded calldata: 4-byte selector plus arguments | |
| from | No | Optional 0x sender address for calls that check msg.sender |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/destructive/openWorld, and the description adds genuinely new behavioral facts: an 8 KB calldata cap, revert semantics (422 with reason, uncharged), pricing ($0.01/call, x402 or card key, first 25 free), and that repeated calls are billed — which explains why idempotentHint is false. This is exactly the extra context annotations cannot carry.
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?
Core semantics (read-only, latest block, no gas) are front-loaded in the first clause, and the example and limits follow logically. The pricing sentence is dense but earns its place by disclosing cost per call and free-tier behavior; a single pass covers everything.
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 no output schema, the description still says the return value is raw ABI-encoded data requiring decoding, and it covers failure mode (422 + reason) and cost. Minor gap: it does not describe the response envelope or how errors other than reverts appear, but an agent has enough to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents to, data, and from. The description adds a concrete example pair (to=0xe15f..., data=0x18160ddd) and notes the result must be ABI-decoded, but says nothing about the optional from/msg.sender parameter beyond what the schema states. Baseline 3 is right.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb, resource, and chain: a read-only eth_call on Sei that sends ABI-encoded calldata to a contract at the latest block and returns raw data. It also positions itself against siblings by scoping to 'any view function that has no dedicated tool,' so an agent can tell it apart from sei_token_balance, sei_nonce, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case with a concrete worked example (USDC totalSupply, selector 0x18160ddd) and an implicit exclusion via 'has no dedicated tool.' It does not name which sibling tools take precedence, so the agent must infer the routing rule, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sei_estimate_gasEstimate gas, SeiARead-onlyInspect
Estimate the gas a transaction would use on Sei (eth_estimateGas) and what it would cost at the current gas price, in gas units, gwei and SEI. Give to, plus value in SEI and calldata for a contract call, and the sender when the call depends on it. Use before sending a transaction or to price a batch; for the gas price alone use sei_gas. A transaction that would revert is 422 with the reason, uncharged. Example: to=0x000000000000000000000000000000000000dEaD. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x recipient or contract address | |
| data | No | Optional 0x calldata for a contract call | |
| from | No | 0x sender address (default: an empty address) | |
| value | No | Amount of SEI to send, in SEI (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/destructive/openWorld, and the description corroborates them ('reads or computes only and changes nothing'). It adds real value by disclosing the 422-on-revert contract (uncharged) and the per-call billing model, which explains idempotentHint=false. However, the pricing/x402 paragraph is commercial boilerplate that dilutes rather than deepens behavioral understanding of the gas estimate itself, so it is above baseline but not exemplary given how much the annotations already carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb, resource and return units, then usage routing, then edge-case behavior. No sentence is redundant except marginal detail in the billing clause, and even that explains a non-obvious cost trait.
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 only four fully-documented parameters and no output schema, the description supplies everything missing: what the return contains (gas units, gwei, SEI), failure semantics (422 with reason, uncharged), and cost model. An agent can call this correctly on the first attempt.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description earns extra by stating units and context the schema leaves implicit ('value in SEI', 'calldata for a contract call', 'sender when the call depends on it'). The worked example (to=0x...dEaD) further anchors expected input shape.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Estimate the gas a transaction would use on Sei (eth_estimateGas)') plus the derived outputs (gas units, gwei, SEI). It explicitly distinguishes itself from the nearest sibling, sei_gas, so an agent can choose without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete triggers ('Use before sending a transaction or to price a batch') and an explicit alternative with the condition that selects it ('for the gas price alone use sei_gas'). The caller-side dependency ('the sender when the call depends on it') is also signalled.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sei_gasSei gas priceARead-onlyInspect
Current gas price on Sei (eth_gasPrice): gas price, base fee and suggested priority fee in gwei, plus what a plain SEI transfer (21,000 gas) costs right now. Takes no input. Use before sending a transaction or to decide whether to wait; for the fee a past transaction actually paid use sei_receipt. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Optional: comma-separated top-level result keys to keep, for a smaller answer (for example only=price,symbol); unknown keys are ignored and an empty match returns the full result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds useful context by confirming "reads or computes only and changes nothing." The pricing disclosure ($0.01/call via x402 USDC or card key, first 25 free, failed calls free, repeats are not free) meaningfully explains the otherwise puzzling idempotentHint=false. However, it does not describe latency, caching, or rate limiting beyond the per-call charge, so it falls short of the richest disclosure level for an annotations-covered read 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?
Front-loaded with purpose and return contents before the routing hint and the cost caveat, and it is dense with no filler. It is slightly long for a one-parameter read tool, and the pricing detail could be tightened, but every clause carries decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so: it names the units (gwei) and the concrete derived figure (cost of a plain SEI transfer). Combined with the cost and safety notes, an agent has everything needed to call it correctly and interpret the answer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single optional `only` filter is fully documented in the schema, so the baseline is 3. The description's claim "Takes no input" is loosely imprecise given that `only` exists, but it adds no meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (current Sei gas price via eth_gasPrice) and enumerates the returned fields: gas price, base fee, suggested priority fee in gwei, plus the cost of a 21,000-gas SEI transfer. It also explicitly distinguishes itself from sibling sei_receipt, so an agent can separate it from the other ~10 sei_* tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ("before sending a transaction or to decide whether to wait") and names the alternative for the adjacent question ("for the fee a past transaction actually paid use sei_receipt"). Nothing is left to inference about when this is the wrong tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sei_gas_historySei gas history, gas priceARead-onlyInspect
Gas price history on Sei (eth_feeHistory): base fee in gwei for each of the last N blocks (5-100, default 20), how full each block was, and the 10th, 50th and 90th percentile priority fees, with the low, average and high base fee over the window. Use to judge whether fees are rising, pick a priority fee or time a transaction; for the current price alone use sei_gas. Example: blocks=20. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks, 5-100 (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and non-destructive behavior, but the description adds genuinely new context: the per-call charge ($0.01 via x402 USDC or card key), the 25 free calls, that failed calls are free, and that repeats are not free — which explains the idempotentHint=false in practical terms. It stops short of describing error modes or latency, so it is not quite maximal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and return contents are front-loaded, and each sentence carries information. The billing sentence is long and slightly crowds out the technical content, but it is not redundant padding given the cost is a real decision factor for repeated calls.
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?
There is no output schema, and the description compensates by enumerating the returned metrics in detail, plus scope limits, cost, and the alternative tool. For a single optional-parameter read tool, nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already states 'How many recent blocks, 5-100 (default 20)'. The description repeats that range and adds only an example (blocks=20), so it contributes no meaning beyond the structured field — baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact underlying call (eth_feeHistory) and enumerates the returned fields: base fee in gwei, block fullness, 10th/50th/90th percentile priority fees, and low/average/high base fee over the window. It also explicitly opposes itself to the sibling sei_gas ('for the current price alone use sei_gas'), so an agent can pick between them without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete decision contexts ('judge whether fees are rising, pick a priority fee or time a transaction') and an explicit exclusion routing to the alternative tool for the current price only. This is exactly the when-to-use/when-not pattern at the top of the scale.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sei_is_contractSei is-contract checkARead-onlyInspect
Check whether a 0x address on Sei is a smart contract or a plain wallet: bytecode size, and whether it is an EIP-1167 minimal proxy and which implementation it points to. Use before sending funds or approving a spender; for a fuller risk verdict use check_counterparty. A malformed address is rejected with 400, uncharged. Example: address=0xe15fC38F6D8c56aF07bbCBe3BAf5708A2Bf42392. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing that malformed addresses return 400 uncharged, the $0.01/call price, the 25 free calls, and that failed calls are free — the last point is what makes the idempotentHint=false meaningful, since repeats are re-charged. It also confirms it reads/computes only and mutates nothing, consistent with readOnlyHint=true. Minor gap: no hint about latency or upstream failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then usage, then error handling, then example, then pricing/logistics — a sensible order with no filler sentences. It is dense to the point of feeling packed, but each clause (including pricing) conveys operationally relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned fields (contract vs wallet, bytecode size, EIP-1167 status, implementation). Combined with input format, error behavior, and cost, an agent has everything needed to call it and interpret the result.
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?
Only one parameter and schema coverage is 100%, so the schema carries the definition; the description adds a concrete example address and reinforces the 0x format, plus the malformed-input behavior. That is useful reinforcement rather than new semantics, so a 4 rather than a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (check) and resource (whether a Sei 0x address is a contract or wallet) and enumerates the returned facts: bytecode size, EIP-1167 minimal-proxy status, and implementation address. The `sei_` prefix plus the chain-specific wording cleanly separates it from the many sibling `*_is_contract` 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?
Explicitly says when to use it ('before sending funds or approving a spender') and names an alternative path for a broader need ('for a fuller risk verdict use check_counterparty'). That is a when-to-use plus an explicit alternative, not mere implication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sei_logsSei event logsARead-onlyInspect
Recent contract event logs on Sei (eth_getLogs): the events a contract emitted over the last N blocks (1-1,000, default 50), optionally filtered by topic0 (the 0x 32-byte event signature hash). Returns up to 100 logs with block, transaction hash and topics. Use to watch transfers or contract events; for one transaction's outcome use sei_receipt. Example: address=0xe15fC38F6D8c56aF07bbCBe3BAf5708A2Bf42392. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks to scan (1-1000, default 50) | |
| topic0 | No | Optional 0x event signature hash to filter by | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint and openWorldHint, so the bar is lower, yet the description still adds real behavior: a 100-log result cap, block-range limits, and that each call is billed ($0.01, first 25 free, failed calls free) so repeats are not free. That billing/idempotency context is exactly the kind of trait an agent cannot infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core verb and resource, and every clause carries information (range, filter, return shape, alternative, price). The second half is dense with semicolon-joined clauses on billing and safety, which is efficient but slightly harder to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description supplies the return shape itself ('up to 100 logs with block, transaction hash and topics'), plus scan limits, filtering, alternative routing and pricing. Nothing material is missing for calling 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%, so all three parameters are already documented, including the 1-1000/default-50 range on blocks. The description restates the block range and expands topic0 only slightly ('0x 32-byte event signature hash'), which largely mirrors the schema text; the example address is a sample value rather than added 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?
States a specific verb and resource ('Recent contract event logs on Sei (eth_getLogs)') plus the scope of what is returned. It distinguishes itself from the nearest sibling by naming sei_receipt as the tool for single-transaction outcomes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use to watch transfers or contract events; for one transaction's outcome use sei_receipt' gives a clear condition and explicitly routes one case to an alternative. It does not clarify the boundary against sei_token_transfers, which is arguably the most tempting sibling for the 'watch transfers' use case it recommends.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sei_nonceSei nonce, account nonceARead-onlyInspect
Read the transaction count (nonce) of a 0x address on Sei, both confirmed and including pending transactions. Use to build the next transaction or to tell whether an address has ever sent anything; for its balance use sei_balance. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and idempotentHint=false, yet the description still adds real context: the result spans confirmed and pending transactions, malformed addresses fail with 400 and are uncharged, pricing is $0.01/call with 25 free, and failed calls are free. The warning that 'each call is charged, so repeats are not free' usefully reinforces the non-idempotent hint with a practical consequence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and usage, then error, example, and pricing in descending priority. It is dense and mostly earns its words, though the pricing/credits sentence is longer than the calling decision strictly requires.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description covers what the value means (confirmed vs. including pending), the error contract, and the cost model. Nothing an agent needs in order to call it correctly or interpret the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema coverage ('0x address'), so the schema already carries the semantics and a baseline 3 applies. The description adds an example address that clarifies the expected 0x hex format, but nothing about checksum casing or chain-specific address handling.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the transaction count (nonce) of a 0x address on Sei') and scopes it precisely to confirmed plus pending. It names the sibling it is not ('for its balance use sei_balance'), so an agent can distinguish it from the many chain-prefixed *_nonce and sei_* siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete when-to-use cases: building the next transaction, and determining whether an address has ever sent anything. It also explicitly routes the balance case to sei_balance, which is the only plausible confusion point in this tool family.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sei_proxyProxy implementation, SeiARead-onlyInspect
Find the implementation behind a proxy contract on Sei: reads the EIP-1967 implementation, beacon and admin slots, EIP-1822 (UUPS), the older OpenZeppelin layout and EIP-1167 minimal-proxy bytecode, and names the kind found. Use before trusting or decoding a contract whose code can be swapped by its admin; for a fuller risk verdict use contract_risk. A malformed address is 400; an address without code is 404, both uncharged. Example: address=0xe15fC38F6D8c56aF07bbCBe3BAf5708A2Bf42392. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, open-world), and the description adds genuinely new context: nothing is mutated, each call costs $0.01 with the first 25 free, and failed calls are uncharged — consistent with idempotentHint=false. It stops short of describing pagination or the shape of the returned payload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the capability, then the usage rule, then failure codes, then pricing — a sensible order. The pricing/credits clause is somewhat dense for a tool description but is actionable for a cost-aware agent, so it largely 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?
With no output schema, the description carries the return-value burden; it says it 'names the kind found' but does not describe the response fields (implementation address, admin, beacon). Otherwise complete: cost, failure modes, and scope are all covered.
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?
One required parameter at 100% schema coverage, so the schema already documents it. The description adds an example address and clarifies that malformed input yields 400, which is modest value beyond the schema's '0x contract address'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — finds the implementation behind a proxy contract on Sei — and enumerates the exact slot/standard families it reads (EIP-1967, beacon, admin, EIP-1822/UUPS, legacy OZ, EIP-1167). Chain prefix in the name plus the standard list clearly distinguishes it from the dozens of per-chain *_proxy 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?
Gives an explicit when: 'Use before trusting or decoding a contract whose code can be swapped by its admin', and names the alternative for a different need: 'for a fuller risk verdict use contract_risk'. It also states error semantics (400 malformed, 404 no code) that tell the agent when the call will fail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sei_receiptSei transaction receiptARead-onlyInspect
Transaction receipt on Sei (eth_getTransactionReceipt): success or reverted, gas used, effective gas price, fee paid in SEI, number of event logs and any contract created. Use to confirm a payment or call went through; for sender, value and calldata use sei_tx. Input is a 0x-prefixed 64-hex hash; a pending or unknown hash returns 404, uncharged. Example: hash=0x51ee2bca2ed878b0f576071a0cd21c0f8f129d4de4a545c5a7b3511fa6d048bb. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/non-destructive/non-idempotent, but the description adds substantive behavior the annotations cannot convey: the x402 pricing model ($0.01/call, first 25 free, failed calls free), the 404-uncharged behavior for pending/unknown hashes, and the explicit warning that repeats are not free. This is exactly the extra context the dimension rewards.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return fields, then usage routing, then the input format and example, then pricing. Dense but nearly every clause carries information; the long literal example hash is the only slightly bulky element, though it usefully disambiguates format.
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?
No output schema exists, but the description enumerates the returned fields well enough that an agent knows what to expect. Combined with the cost and error (404 pending) semantics, an agent has everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is fully documented in-schema, so the baseline applies. The description still adds value by supplying a concrete example hash, which reduces format errors, though it does not add interpretation beyond the schema's format statement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific verb+resource ('transaction receipt') and enumerates the exact fields returned: status, gas used, effective gas price, fee in SEI, log count, contract created. It also explicitly distinguishes itself from sibling sei_tx by naming what sei_tx covers instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('confirm a payment or call went through') and names the alternative routing rule ('for sender, value and calldata use sei_tx'). An agent can choose between the two without opening either schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sei_storageStorage slot read, SeiARead-onlyInspect
Read one raw storage slot of a contract on Sei (eth_getStorageAt): the 32-byte word, as a number and, when it holds one, as an address. Slot is a decimal index or a 0x 32-byte key (mapping and proxy slots). Use to inspect contract state that has no getter, owners or implementation pointers; for proxies use sei_proxy. A malformed address or slot is rejected with 400, uncharged. Example: address=0xe15fC38F6D8c56aF07bbCBe3BAf5708A2Bf42392. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | Slot: a decimal index (0, 1, 2…) or a 0x 32-byte key | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds real value beyond them: pricing ($0.01/call, first 25 free, failed calls free), 400 rejection behavior for malformed input that is uncharged, and the fact that repeated calls are charged — which explains the idempotentHint=false annotation rather than contradicting it. Slightly short of 5 only because it does not touch on rate limits or response shape beyond the word/address note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core operation and return shape, then layers usage, error behavior, example, and pricing. Dense but every clause carries information; the pricing/payment detail is long but material for a paid x402 endpoint. Minor density cost keeps it from 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by stating what comes back (numeric word plus address when applicable). Combined with error behavior, pricing, and usage routing, an agent has everything needed to decide and invoke correctly for a 2-parameter read 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?
Schema coverage is 100%, so the baseline is 3, but the description earns more by clarifying the slot's two forms in context (decimal index or 0x 32-byte key, explicitly noting mapping and proxy slots) and giving a concrete address example. It adds semantic meaning the schema strings alone do not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read one raw storage slot of a contract on Sei'), names the RPC equivalent (eth_getStorageAt), and specifies what is returned (32-byte word as number and, when applicable, as address). This clearly separates it from sei_call and sei_proxy.
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 states when to use it ('inspect contract state that has no getter, owners or implementation pointers') and routes proxy cases to sei_proxy as the alternative. Both the use case and the sibling hand-off are stated rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sei_token_balanceSei ERC-20 balanceARead-onlyInspect
ERC-20 token balance of a wallet on Sei (USDC, USDT, WETH or any token, via balanceOf): raw amount, decimals, symbol and the human-readable amount, live from the token contract. Use to check stablecoin or token holdings before a transfer or trade; for the native coin use sei_balance. Both inputs are 0x addresses (40 hex characters); no contract returns 404 and a non-ERC-20 contract 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC, USDT, WETH or DAI, or the 0x ERC-20 contract address | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: pricing ($0.01/call via x402 or a card key, first 25 free, failed calls free), that failures are uncharged, and that reads change nothing. The 'each call is charged, so repeats are not free' line usefully explains why idempotentHint is false. Missing only whether the balances are read at latest block or a pinned block.
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?
One front-loaded paragraph that puts the purpose and return shape first, then the alternative, then error/pricing details. Dense and mostly waste-free, though the pricing/club-of-details at the end is packed tightly enough to be easier to skim if split.
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?
No output schema exists, and the description compensates by naming the returned fields (raw amount, decimals, symbol, human-readable amount) and describing error behavior and cost. The only real hole is the ambiguity about whether the token argument takes a ticker, which it elsewhere implies it does.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does add the 0x/40-hex format constraint, but 'Both inputs are 0x addresses' conflicts with the schema's allowance of a ticker ('USDC, USDT, WETH') for the token parameter, which leaves the accepted format ambiguous rather than clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('ERC-20 token balance of a wallet on Sei'), names the contract method (balanceOf), and enumerates the returned fields. It also explicitly separates itself from the native-coin sibling sei_balance, so an agent can route without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('check stablecoin or token holdings before a transfer or trade') and an explicit alternative ('for the native coin use sei_balance'). It also names the failure conditions (404 for no contract, 422 for a non-ERC-20 contract) so the agent knows when the call will not produce a value.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sei_token_infoSei token info, ERC-20ARead-onlyInspect
Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Sei, live from the contract. Use to identify an unknown token address or to format raw amounts; for a holder's balance use sei_token_balance. Input is a ticker (USDC, WETH…) or the token's 0x contract address; an address that is not an ERC-20 contract returns 422, uncharged. Example: token=0xe15fC38F6D8c56aF07bbCBe3BAf5708A2Bf42392. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing cost ($0.01/call via x402 or card key, first 25 free, failed calls free), that repeated calls are charged, and that a non-ERC-20 address returns 422 uncharged. The only redundancy is restating the read-only/non-destructive profile already in 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?
Front-loads what is returned and the sibling alternative before the pricing detail. The pricing/free-tier sentence is long and slightly overstuffed, but each clause carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned fields. It also covers error semantics, pricing and the fact that no state is mutated, which is everything an agent needs to call this single-parameter 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% and the description essentially restates the schema's token parameter (ticker or 0x address). It adds marginal value with a worked example address and the 422 behavior for non-contract input, 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?
Names a specific verb and resource ('look up the name, symbol, decimals and total supply of an ERC-20 token contract on Sei') and names the output fields, so the agent knows exactly what comes back. It also explicitly separates itself from the close sibling sei_token_balance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases ('identify an unknown token address', 'format raw amounts') and an explicit exclusion routing to sei_token_balance for holder balances. No inference is required to choose between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sei_token_transfersToken transfers, SeiARead-onlyInspect
List a wallet's recent transfers of one ERC-20 token (default USDC) on Sei, in and out, over the last N blocks (1-2,000, default 1,000): direction, counterparty, amount and transaction, newest first, up to 50. Use to confirm a payment arrived or see what was sent; for the current balance use sei_token_balance. Malformed addresses are rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Token: a ticker such as USDT or WETH, or the 0x ERC-20 contract (default: USDC on this network) | |
| blocks | No | How many recent blocks to scan (1-2000, default 1000; 2,000 blocks is about 15 minutes on Sei) | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/non-destructive, but the description adds non-obvious behavior: malformed addresses rejected with 400 and uncharged, $0.01/call via x402 or card key, first 25 free, failed calls free, and repeats not free because each call is charged — which explains the idempotentHint=false. That is substantial context beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then scoping, then the alternative, then pricing caveats — logical order with no filler. The pricing/free-tier clause is somewhat compressed and competes with the core usage signal, keeping it just under a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description enumerates the return shape (direction, counterparty, amount, transaction, newest first, max 50), so an agent knows what comes back. Cost, error behavior, and scope are all covered; nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning: token accepts a ticker or a 0x contract and defaults to USDC on Sei, blocks is 1-2,000 with default 1,000, plus a concrete address example. It does not add much on the block window's time semantics beyond the schema's note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb plus resource plus chain and scope: 'List a wallet's recent transfers of one ERC-20 token (default USDC) on Sei, in and out, over the last N blocks'. It also states the returned fields and cap (up to 50, newest first), which distinguishes it immediately from siblings like sei_token_balance or sei_logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit use cases ('confirm a payment arrived or see what was sent') and an explicit alternative ('for the current balance use sei_token_balance'). The when-not path is named rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sei_txSei transactionARead-onlyInspect
Look up a Sei transaction by hash: sender, recipient, value in SEI, nonce, gas limit, the 4-byte function selector and its block. Use to see what was sent or whether it exists; for success or failure and fees paid use sei_receipt, for emitted events sei_logs. Input is a 0x-prefixed 64-hex hash; an unknown hash returns 404, uncharged. Example: hash=0x51ee2bca2ed878b0f576071a0cd21c0f8f129d4de4a545c5a7b3511fa6d048bb. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, destructiveHint=false, openWorldHint), but the description adds substantive context beyond them: 404 returns are uncharged, pricing is $0.01/call via x402 USDC or a card key, the first 25 calls are free, failed calls are free, and repeats are not free. That last point meaningfully explains the idempotentHint=false annotation. It stops short of describing response shape details like pagination or formatting, but for a single-lookup tool that is a small gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then return fields, then sibling routing, then input format, then pricing — a sensible priority order with no filler. Slightly overpacked: the charging point is stated twice ('Price $0.01/call... failed calls free' and 'each call is charged, so repeats are not free'), which could be one clause.
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?
There is no output schema, so the description compensates by listing the returned fields, and it also covers input format, error semantics, and cost. For a one-parameter read lookup, an agent has everything needed to call it correctly and interpret the outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is fully documented in the schema, so the baseline would be 3. The description earns an extra point by adding a concrete worked example hash and pairing the format constraint with the 404-on-unknown-hash consequence, which tells the agent what a well-formed value looks like in practice.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Look up a Sei transaction by hash') and enumerates the exact fields returned (sender, recipient, value in SEI, nonce, gas limit, function selector, block). This makes it immediately distinguishable from sei_receipt and sei_logs, which are named as different scopes.
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 names both when to use it ('to see what was sent or whether it exists') and which siblings cover the excluded cases ('for success or failure and fees paid use sei_receipt, for emitted events sei_logs'). Also states the 404 path for unknown hashes, so the agent knows the failure mode is expected rather than an error to retry.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solana_balanceSolana balance: SOL balance of a walletARead-onlyInspect
SOL balance of a Solana wallet, read live from mainnet in lamports and SOL, plus its SPL token accounts (mint, symbol for well-known tokens, decimals, amount) when the public node serves them; otherwise tokens is null with a note. Use to check a Solana wallet before a payment. An address that is not 32-byte base58 is 400, uncharged. Example: address=vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Solana wallet address (base58) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: live mainnet read, partial-failure behavior (tokens is null with a note when the public node does not serve accounts), 400 uncharged for invalid addresses, and explicit pricing/free-tier and per-call charging semantics. The 'each call is charged, so repeats are not free' line even explains why idempotentHint is false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then error, example, pricing, and safety in descending order of importance. The pricing sentence is dense (x402, card key, free tier, failed calls) but every clause is decision-relevant; nothing is redundant 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 no output schema, the description carries the return-value burden and does so: lamports and SOL, per-token fields (mint, symbol, decimals, amount), and the null-with-note degradation case. Error behavior, cost, and side-effect profile are all covered for a one-parameter read 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?
Schema coverage is already 100% for a single parameter, yet the description still adds the 32-byte base58 validity rule and a concrete example address. That is genuine meaning beyond the schema's bare 'Solana wallet address (base58)'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('SOL balance of a Solana wallet, read live from mainnet') and enumerates what is returned (lamports, SOL, SPL token accounts). The 'Solana' qualifier plus the SPL token mention separates it cleanly from the many EVM *_balance 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?
'Use to check a Solana wallet before a payment' gives a concrete usage context. It stops short of exclusions or naming alternatives such as solana_token for a single-token lookup, so an agent still has to infer when to prefer a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solana_tokenSolana token info: supply, decimals, mint and freeze authorityARead-onlyInspect
Look up a Solana SPL token by its mint address, live from mainnet: decimals, total supply, whether a mint authority can still create more and whether a freeze authority can freeze holders (two common rug-pull risks), the token program, and, on request, the largest holder accounts with their share of supply. Use before buying or accepting an unknown Solana token. A mint that does not exist is 404, uncharged. Example: mint=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| mint | Yes | SPL token mint address (base58) | |
| holders | No | Largest holder accounts to list, 0-20 (default 0; best effort, the public node rate-limits this lookup) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses pricing ($0.01/call via x402 USDC or card key), first 25 free, failed calls free, 404 uncharged for a nonexistent mint, no caching (repeats are not free), and that the holder lookup is best-effort due to public node rate limits. Annotations already cover read-only/non-destructive, and the description adds substantive operational 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?
Front-loaded with the verb, resource and returned fields, and the safety/usage note follows immediately. The closing sentence ('each call is charged, so repeats are not free') partially restates the pricing already given, a minor 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?
With no output schema, the description carries the return-value burden and does so by enumerating every returned field plus the optional holders list. Error behavior (404 uncharged) and rate-limit caveat round out what an agent needs to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds value: a concrete example mint address and the framing of `holders` as 'largest holder accounts with their share of supply' on request, which clarifies the intent of the optional param beyond the schema's terse wording.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('look up a Solana SPL token by its mint address') and enumerates exactly what is returned: decimals, supply, mint/freeze authority, token program, optional top holders. This clearly separates it from siblings like solana_balance (native SOL balance) or the EVM *_token_info tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case: 'Use before buying or accepting an unknown Solana token.' It does not name a specific sibling alternative or a when-not-to-use condition, but the trigger context is unambiguous for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonic_allowanceToken allowance, Sonic ERC-20ARead-onlyInspect
ERC-20 token allowance on Sonic: how much a spender may move from an owner's wallet (allowance), raw and in token units, and whether the approval is unlimited. Use to check an approval before a swap or to audit risky open approvals; for the owner's balance use sonic_token_balance. Token is a ticker (USDC, USDT, WETH…) or a 0x contract; a missing contract is 404 and a non-ERC-20 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | 0x wallet that gave the approval | |
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address | |
| spender | Yes | 0x contract or wallet allowed to spend (the example is Uniswap Permit2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: declares error semantics (missing contract = 404, non-ERC-20 = 422, both uncharged), pricing model ($0.01/call via x402 USDC or card key, first 25 free, failed calls free), and the non-obvious warning that repeated calls are billed (consistent with idempotentHint=false). Read-only/no-side-effect claim matches readOnlyHint and destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core semantic, then usage, then errors, then billing — a sensible order with no filler. It is dense in one block and the pricing/credits detail is tangential to invocation, but it is actionable information rather than 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?
With no output schema, the description still names the return shape (raw and token-unit allowance plus unlimited flag), and against a 3-required-param, fully-documented schema it also covers failure modes, cost, and side-effect profile. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3 and the schema already defines all three params. The description reinforces the ticker-or-0x-contract duality for `token` and adds a value-dependent consequence (a ticker resolving to no contract returns 404), which is meaning the schema does not carry. It adds little for `owner`/`spender` beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: reads ERC-20 allowance (owner -> spender) on Sonic, and explicitly names what is returned (raw amount, token units, unlimited flag). It also names the adjacent sibling it is NOT (sonic_token_balance), so an agent can separate the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete triggering scenarios ('check an approval before a swap', 'audit risky open approvals') and a routing rule to sonic_token_balance for balance queries. The chain is unambiguous from the name/description, which is the necessary disambiguator given 15 near-identical *_allowance siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonic_balanceSonic balance, native coinARead-onlyInspect
Native S balance (eth_getBalance) of any 0x wallet address on Sonic at the latest block, in wei and in S. Use to check whether a wallet can pay gas or a transfer; for ERC-20 tokens use sonic_token_balance, for all holdings at once use wallet_portfolio. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet or contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/destructive annotations it discloses pricing ($0.01/call, first 25 free), that failed and malformed-address calls are free (400, uncharged), that repeats are billed, and that the read is at the latest block only. This adds materially to what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, units and block scope, then alternatives, then error/cost behavior. Dense but nearly every sentence carries information; the pricing/credits clause is long and slightly interrupts the usage flow but is not 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 no output schema, the description supplies the return shape (wei and S), the block semantics, error behavior, and cost model. There is no remaining gap an agent needs filled before calling 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?
Schema coverage is 100%, so the baseline is 3; the description still adds that any wallet or contract address is accepted, supplies an example format, and explains the 400 rejection for malformed input. Marginal extra value over the schema's own parameter description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Native S balance ... of any 0x wallet address on Sonic at the latest block'), includes the underlying RPC method and units, and explicitly distinguishes itself from sonic_token_balance (ERC-20) and wallet_portfolio (all holdings). An agent can pick it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case ('check whether a wallet can pay gas or a transfer') and names both alternatives plus the condition that selects each. This is explicit when-to-use and when-not-to-use routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonic_blockSonic block numberARead-onlyInspect
Latest block number and block details on Sonic, or any block by decimal number: hash, timestamp, transaction count, gas used and limit, base fee in gwei and producer. Use for timestamps and confirmation counts; for current fees use sonic_gas. A block that does not exist yet returns 404, uncharged. Example: number=latest. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| number | No | Block number, or 'latest' (default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds critical behavioral context not covered by annotations, including pricing ($0.01/call, credit usage, free initial calls), the fact that it is read-only/computational and non-mutating, and charging per call.
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 highly dense and efficient, packing operational constraints (pricing, free calls, charging per call) alongside technical function in a well-organized format.
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 complexity of a multi-feature block retrieval tool (including cost, error handling, and data types), the description is extremely comprehensive. It provides all necessary context for safe and correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While the schema covers the structure, the description adds crucial semantic meaning to the 'number' parameter by specifying that it accepts either a decimal block number or the string 'latest' for default behavior.
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 retrieves 'Latest block number and block details on Sonic' or details for 'any block by decimal number.' It effectively uses context and mentions siblings to differentiate its scope (Sonic chain).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit usage guidance by directing users to 'sonic_gas' for current fees, and informs the agent about the specific input formats (latest vs. decimal number). It also clearly defines the expected result for missing blocks (404).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonic_callEth call, Sonic contract callARead-onlyInspect
Read-only contract call on Sonic (eth_call): send ABI-encoded calldata to a contract at the latest block and get the raw return data, without a transaction or gas. Use to read any view function that has no dedicated tool (the example reads USDC totalSupply, selector 0x18160ddd); decode the result with the function's ABI. Calldata up to 8 KB; a call that reverts is 422 with the reason, uncharged. Example: to=0x29219dd400f2Bf60E5a23d13Be72B486D4038894, data=0x18160ddd. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x contract address to call | |
| data | Yes | 0x ABI-encoded calldata: 4-byte selector plus arguments | |
| from | No | Optional 0x sender address for calls that check msg.sender |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses a range of behaviors an agent needs: 8 KB calldata cap, a revert producing HTTP 422 with the reason and no charge, pricing via x402 USDC or card key, first 25 calls free, and that repeats are charged (consistent with idempotentHint=false). This is unusually rich context for a paid call 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?
Front-loaded with purpose, then usage, then mechanics, then pricing; every sentence carries information. Slight redundancy in restating that each call is charged after already quoting $0.01/call, and the pricing tail occupies more space than the core semantics.
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?
No output schema exists, and the description compensates by stating that the return is raw ABI-encoded data to be decoded with the function's ABI. With revert handling, size limits, cost model, and the optional sender parameter covered by the schema, an agent has what it needs to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains that 'data' is 4-byte selector plus ABI-encoded arguments, gives literal example values for 'to' and 'data', and notes the 8 KB limit. It does not cover the optional 'from' parameter, which the schema handles as msg.sender.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read-only contract call on Sonic (eth_call)') plus what it returns (raw return data at the latest block, no transaction or gas). It also distinguishes itself from the many sonic_* siblings by positioning itself as the fallback for view functions that have no dedicated tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it ('read any view function that has no dedicated tool') and implicitly excludes cases covered by sonic_token_balance, sonic_balance, sonic_storage, etc. It adds the follow-up step (decode with the function's ABI) and a concrete worked example with selector 0x18160ddd for USDC totalSupply.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonic_estimate_gasEstimate gas, SonicARead-onlyInspect
Estimate the gas a transaction would use on Sonic (eth_estimateGas) and what it would cost at the current gas price, in gas units, gwei and S. Give to, plus value in S and calldata for a contract call, and the sender when the call depends on it. Use before sending a transaction or to price a batch; for the gas price alone use sonic_gas. A transaction that would revert is 422 with the reason, uncharged. Example: to=0x000000000000000000000000000000000000dEaD. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x recipient or contract address | |
| data | No | Optional 0x calldata for a contract call | |
| from | No | 0x sender address (default: an empty address) | |
| value | No | Amount of S to send, in S (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Reads/computes only and changes nothing aligns with the annotations, and it discloses the revert behavior (422 with reason, uncharged) plus charging and free-call terms, which is useful. However, the statement that each call is charged and repeats are not free slightly conflicts with the idempotentHint=false annotation rather than clarifying it, creating some ambiguity for an agent deciding whether to retry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and scope, then usage, example, and pricing. Efficient, though the pricing and payment details (x402 USDC, card key, first 25 free) add length that is only tangentially about the tool's function.
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?
Although there is no output schema, the description states the return shape (gas units, gwei, S) and the error behavior (422 on revert), which is enough for an agent to call and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all four parameters. The description adds some meaning (value in S, calldata for a contract call, sender only when the call depends on it) but stays at a level the schema largely conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the specific verb and resource (estimate gas for a transaction on Sonic), gives the underlying RPC method, and states exactly what is returned (gas units, gwei, S). It is clearly distinguished from sonic_gas and sonic_call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it (before sending a transaction, to price a batch) and names the alternative for the adjacent need ('for the gas price alone use sonic_gas'). The revert case is also called out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonic_gasSonic gas priceARead-onlyInspect
Current gas price on Sonic (eth_gasPrice): gas price, base fee and suggested priority fee in gwei, plus what a plain S transfer (21,000 gas) costs right now. Takes no input. Use before sending a transaction or to decide whether to wait; for the fee a past transaction actually paid use sonic_receipt. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Optional: comma-separated top-level result keys to keep, for a smaller answer (for example only=price,symbol); unknown keys are ignored and an empty match returns the full result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only/non-destructive, and the description adds commercially critical behavior annotations cannot: $0.01/call via x402 USDC or card key, first 25 free, failed calls free, and that repeats are charged (which coherently explains the unusual idempotentHint=false for a read). It also makes clear the tool reads/computes only and changes nothing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns, then routing, then cost. Dense but every clause carries information; the pricing sentences are long but justified because cost-per-call changes agent behavior.
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 no output schema, the description compensates by enumerating the returned fields and the derived 21,000-gas cost figure. Combined with pricing and the sibling cross-reference, an agent has everything needed to call it correctly and interpret the result.
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 single optional `only` projection parameter is fully documented in the schema, so the baseline is 3. The description's "Takes no input" is a slight overstatement given the optional `only` filter exists, but as a statement about required arguments it is not materially misleading.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (current gas price on Sonic via eth_gasPrice) and enumerates exactly what is returned: gas price, base fee, suggested priority fee in gwei, and the cost of a 21,000-gas transfer. It explicitly names sonic_receipt as the tool for historical fees, separating it from the many sibling *_gas and *_gas_history 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?
"Use before sending a transaction or to decide whether to wait" gives the triggering condition, and "for the fee a past transaction actually paid use sonic_receipt" names the alternative and the condition that selects it. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonic_gas_historySonic gas history, gas priceARead-onlyInspect
Gas price history on Sonic (eth_feeHistory): base fee in gwei for each of the last N blocks (5-100, default 20), how full each block was, and the 10th, 50th and 90th percentile priority fees, with the low, average and high base fee over the window. Use to judge whether fees are rising, pick a priority fee or time a transaction; for the current price alone use sonic_gas. Example: blocks=20. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks, 5-100 (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses the per-call price ($0.01 via x402 USDC or card key), a first-25-free tier, and that failed calls are free, which meaningfully explains the idempotentHint=false (repeats cost money). 'Reads or computes only and changes nothing' largely restates readOnlyHint/destructiveHint but reinforces it. Minor gap: no mention of how the percentile/aggregate values are computed over the window when fewer blocks exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core capability and return shape, then usage, then commercial terms — a sensible order. The billing sentences are dense but each carries decision-relevant information; the block run-length and mixed topics keep it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still fully specifies the returned fields and aggregate summary, so an agent knows what it will get. Combined with pricing, failure semantics, and the sonic_gas alternative, nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'blocks' parameter is fully documented in the schema (5-100, default 20), which the description repeats rather than extends. The 'Example: blocks=20' adds only marginal value. Baseline 3 is appropriate when the schema already carries the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (gas price history on Sonic via eth_feeHistory) and enumerates exactly what is returned: base fee in gwei per block, block fullness, 10th/50th/90th percentile priority fees, and low/avg/high base fee over the window. It explicitly distinguishes itself from the sibling sonic_gas ('for the current price alone use sonic_gas'), so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use conditions (judge whether fees are rising, pick a priority fee, time a transaction) and names the alternative (sonic_gas) with the condition that selects it. Also notes cost behavior so an agent can decide whether to call repeatedly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonic_is_contractSonic is-contract checkARead-onlyInspect
Check whether a 0x address on Sonic is a smart contract or a plain wallet: bytecode size, and whether it is an EIP-1167 minimal proxy and which implementation it points to. Use before sending funds or approving a spender; for a fuller risk verdict use check_counterparty. A malformed address is rejected with 400, uncharged. Example: address=0x29219dd400f2Bf60E5a23d13Be72B486D4038894. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real context beyond the annotations: it explains the 400/uncharged path for malformed addresses, the per-call price and free tier, and notes that repeats are billed again (which explains the idempotentHint=false). Combined with readOnlyHint=true and destructiveHint=false, that gives a clear safety and cost picture. It stops short of describing the response payload shape, so a 3 rather than higher.
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?
Effectively three sentences that front-load the purpose, then usage, then billing. The pricing and free-tier detail is relevant for an x402 paid tool but is denser than strictly necessary; nothing is truly wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only tool with no output schema, the description covers what the call returns (bytecode size, proxy detection, implementation), failure behavior, cost, and the sibling alternative. An agent has everything needed to decide and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'address' parameter, so the baseline is 3. The description adds a concrete sample address and constrains the format to 0x-prefixed, but does not mention chain-specific or checksum requirements beyond what the schema implies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check whether a 0x address on Sonic is a smart contract or a plain wallet') and enumerates exactly what is returned: bytecode size, EIP-1167 minimal-proxy status, and implementation address. Naming check_counterparty as the fuller-verdict sibling makes it distinguishable without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use trigger ('before sending funds or approving a spender') and an explicit alternative for the adjacent need ('for a fuller risk verdict use check_counterparty'). Edge behavior for bad input is also covered (malformed address → 400, uncharged).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonic_logsSonic event logsARead-onlyInspect
Recent contract event logs on Sonic (eth_getLogs): the events a contract emitted over the last N blocks (1-1,000, default 50), optionally filtered by topic0 (the 0x 32-byte event signature hash). Returns up to 100 logs with block, transaction hash and topics. Use to watch transfers or contract events; for one transaction's outcome use sonic_receipt. Example: address=0x29219dd400f2Bf60E5a23d13Be72B486D4038894. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks to scan (1-1000, default 50) | |
| topic0 | No | Optional 0x event signature hash to filter by | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses the 1-1,000 block scan window, the default of 50 blocks, the 100-log return cap, and the payment/cost model including free failed calls. This is substantial behavioral context for a read-only but paid, non-idempotent call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose, limits, and alternative are front-loaded and easy to scan. The pricing and example details are useful but make the description longer than strictly necessary for tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter log query with no output schema, the description covers purpose, return format, scan limits, cost behavior, and the main alternative. An agent has enough information to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all three parameters. The description adds only a small amount beyond it, mainly that topic0 is a 32-byte event signature hash and an example address, while mostly repeating the block range and defaults.
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 operation: recent contract event logs on Sonic via eth_getLogs, and explains what is returned. It also distinguishes this from sonic_receipt for single-transaction outcomes, so an agent can tell the tools apart without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context ('watch transfers or contract events') and explicitly routes single-transaction outcome checks to sonic_receipt. It does not mention the more specific sonic_token_transfers sibling, so the alternative guidance is strong but not complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonic_nonceSonic nonce, account nonceARead-onlyInspect
Read the transaction count (nonce) of a 0x address on Sonic, both confirmed and including pending transactions. Use to build the next transaction or to tell whether an address has ever sent anything; for its balance use sonic_balance. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing error behavior (400 on malformed address), cost model ($0.01/call via x402 or card key, first 25 free, failed calls free), and the fact that repeated calls are charged, which explains the otherwise puzzling idempotentHint=false. The only gap is that it doesn't say what a successful payload looks like structurally, though the confirmed/pending split is mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core definition and the sibling routing before the operational detail, so an agent can stop reading early. It is on the long side and 'Reads or computes only and changes nothing' partially restates the readOnlyHint annotation, but no sentence is pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description covers purpose, sibling routing, error case, and billing, which is enough to call correctly. Return shape (field names for confirmed vs pending nonce) is left implicit, which is the only real shortfall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'address' parameter, so the baseline is 3. The description adds a valid example address and states the rejection behavior for malformed input, but adds no format constraints beyond what the schema already implies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the transaction count (nonce) of a 0x address on Sonic') plus the scope ('both confirmed and including pending transactions'). It also explicitly separates itself from the nearest sibling by pointing to sonic_balance, so an agent can distinguish it without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names two concrete use cases ('build the next transaction', 'tell whether an address has ever sent anything') and an explicit alternative for the adjacent need ('for its balance use sonic_balance'). The malformed-address condition is also called out, which tells the agent what input would fail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonic_proxyProxy implementation, SonicARead-onlyInspect
Find the implementation behind a proxy contract on Sonic: reads the EIP-1967 implementation, beacon and admin slots, EIP-1822 (UUPS), the older OpenZeppelin layout and EIP-1167 minimal-proxy bytecode, and names the kind found. Use before trusting or decoding a contract whose code can be swapped by its admin; for a fuller risk verdict use contract_risk. A malformed address is 400; an address without code is 404, both uncharged. Example: address=0x29219dd400f2Bf60E5a23d13Be72B486D4038894. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, but the description adds meaningful behavior beyond them: 400/404 error semantics, that failed calls are uncharged, pricing at $0.01/call, first 25 free, and that repeated calls are charged and therefore not free. It also clarifies that the tool only reads/computes and changes nothing, consistent with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and detection standards are front-loaded, followed by usage guidance, error behavior, and cost details. It is dense and slightly overpacked with billing/free-tier information, but each clause carries relevant operational context rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only tool with annotations and no output schema, the description covers what is detected, when to use it, the sibling alternative, error cases, and cost behavior. Nothing critical needed to invoke it correctly appears to be 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% and the single address parameter is documented as a '0x contract address.' The description adds an example address and states the malformed-address behavior (400), which gives useful format guidance beyond the schema without being essential.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Find the implementation behind a proxy contract on Sonic.' It goes further by listing the exact proxy standards detected (EIP-1967, EIP-1822/UUPS, older OpenZeppelin, EIP-1167) and noting that it names the kind found, which clearly differentiates it from generic call/storage 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?
Explicitly says when to use it ('before trusting or decoding a contract whose code can be swapped by its admin') and names the alternative for a broader assessment ('for a fuller risk verdict use contract_risk'). The routing condition is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonic_receiptSonic transaction receiptARead-onlyInspect
Transaction receipt on Sonic (eth_getTransactionReceipt): success or reverted, gas used, effective gas price, fee paid in S, number of event logs and any contract created. Use to confirm a payment or call went through; for sender, value and calldata use sonic_tx. Input is a 0x-prefixed 64-hex hash; a pending or unknown hash returns 404, uncharged. Example: hash=0xcc6a5594962b5211496391d0e1e9082f5060f218fad60f907a23e85a7b02bf85. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnly, non-destructive), but the description adds material context beyond them: cost of $0.01/call via x402 USDC or card key, first 25 free, failed calls free, 404 uncharged, and that repeats are charged so the call is effectively non-idempotent for billing. This billing/repeat-charge disclosure is exactly the kind of behavior an agent cannot infer from 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?
Dense but front-loaded: purpose and returned fields come first, then routing guidance, then input format, then pricing. Every clause is informative, though the pricing sentence is long and could be split for readability.
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 no output schema, the description carries the burden of describing return values and does so comprehensively (status, gas, price, fee, logs, created contract). Combined with input format, error behavior, and cost model, an agent has everything needed to invoke and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds a concrete constraint restatement (0x-prefixed 64-hex hash) plus a worked example hash, which helps an agent format input correctly. No further semantic detail is possible for a single opaque hash parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Transaction receipt on Sonic') and names the underlying call (eth_getTransactionReceipt), then enumerates exactly what is returned: status, gas used, effective gas price, fee in S, log count, contract created. It explicitly distinguishes itself from the sibling sonic_tx by use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear positive trigger ('use to confirm a payment or call went through') and a clear alternative with its condition ('for sender, value and calldata use sonic_tx'). It also documents the failure mode: pending or unknown hash returns 404 and is uncharged.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonic_storageStorage slot read, SonicARead-onlyInspect
Read one raw storage slot of a contract on Sonic (eth_getStorageAt): the 32-byte word, as a number and, when it holds one, as an address. Slot is a decimal index or a 0x 32-byte key (mapping and proxy slots). Use to inspect contract state that has no getter, owners or implementation pointers; for proxies use sonic_proxy. A malformed address or slot is rejected with 400, uncharged. Example: address=0x29219dd400f2Bf60E5a23d13Be72B486D4038894. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | Slot: a decimal index (0, 1, 2…) or a 0x 32-byte key | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint=false, and the description reinforces 'reads or computes only and changes nothing'. It adds useful cost/error context (400 uncharged on malformed input, $0.01/call, first 25 free, failed calls free), but this is largely pricing detail rather than deeper behavioral traits. Solid but not exceptional beyond 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?
Content is front-loaded with the core action, then usage, then error/cost details. It is somewhat dense with pricing and billing minutiae, but every sentence contributes relevant invocation context. Slightly verbose rather than wasteful.
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?
No output schema exists, yet the description explains exactly what is returned (number and conditional address), covers error behavior, and routes to alternatives. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage the baseline is 3, but the description adds real value: it clarifies that a slot can be a decimal index or a 0x 32-byte key, explicit mention of mapping and proxy slots, and a concrete example address. This meaningfully enriches parameter use beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read one raw storage slot of a contract on Sonic'), names the underlying call (eth_getStorageAt), and describes the return shape (32-byte word as number and, when applicable, address). It clearly distinguishes itself from the sibling sonic_proxy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use ('inspect contract state that has no getter, owners or implementation pointers') and redirects to the alternative ('for proxies use sonic_proxy'). The routing condition is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonic_token_balanceSonic ERC-20 balanceARead-onlyInspect
ERC-20 token balance of a wallet on Sonic (USDC, USDT, WETH or any token, via balanceOf): raw amount, decimals, symbol and the human-readable amount, live from the token contract. Use to check stablecoin or token holdings before a transfer or trade; for the native coin use sonic_balance. Both inputs are 0x addresses (40 hex characters); no contract returns 404 and a non-ERC-20 contract 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC, USDT, WETH or DAI, or the 0x ERC-20 contract address | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false); the description adds genuine value beyond that with pricing ($0.01/call via x402, first 25 free), the fact that failed calls are uncharged, and confirmation that nothing is mutated. It only stops short of explaining caching or why repeats are billed, which is a minor gap against otherwise strong disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause and each subsequent sentence adds real information (use case, error codes, pricing). However, the dense semicolon-chained packing and the incorrect 'both inputs are 0x addresses' claim mean not every sentence earns its place cleanly.
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 no output schema, the description steps in to name the returned fields, and it covers error paths, pricing, and mutation status—unusually complete for a balance read. The one shortfall is the inaccurate parameter-format statement, which undermines otherwise thorough coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description actively contradicts the schema: it states 'Both inputs are 0x addresses (40 hex characters)' while the input schema says the token parameter accepts a ticker such as USDC, USDT, WETH or DAI. This misinformation could steer the agent away from a valid call form, pulling the score below the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (ERC-20 token balance of a wallet on Sonic, via balanceOf) and explicitly distinguishes itself from the native-coin sibling sonic_balance. The return shape (raw amount, decimals, symbol, human-readable amount) is named up front.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('check stablecoin or token holdings before a transfer or trade') and routes the agent to the correct alternative for the native coin ('use sonic_balance'). Error behavior (404 for no contract, 422 for non-ERC-20) further guides correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonic_token_infoSonic token info, ERC-20ARead-onlyInspect
Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Sonic, live from the contract. Use to identify an unknown token address or to format raw amounts; for a holder's balance use sonic_token_balance. Input is a ticker (USDC, WETH…) or the token's 0x contract address; an address that is not an ERC-20 contract returns 422, uncharged. Example: token=0x29219dd400f2Bf60E5a23d13Be72B486D4038894. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint=false, but the description adds value beyond them: a non-ERC-20 address returns 422 uncharged, failed calls are free, and each successful call is billed ($0.01, x402 USDC or card key, first 25 free). That pricing and error behavior is unavailable in any structured field and directly affects invocation strategy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause and each subsequent sentence carries distinct information (use cases, alternative, input form, error behavior, pricing). The pricing sentence is dense and could be tightened, but nothing is redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description enumerates the exact returned fields (name, symbol, decimals, total supply) and covers cost, failure mode, and alternatives. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already documents the ticker-or-0x-address duality, so the description's restatement adds little on its own. It does add a worked example address and the failure semantics for a bad address, which go slightly beyond the schema, but ticker resolution behavior (e.g., ambiguity) is not elaborated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (look up name, symbol, decimals, total supply of an ERC-20 token contract on Sonic) and explicitly delineates the scope as 'live from the contract.' It also names the sibling it is not (sonic_token_balance), so an agent can discriminate without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases (identifying an unknown token address, formatting raw amounts) and an explicit exclusion routing holder balances to sonic_token_balance. The when/when-not pair is stated, not inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonic_token_transfersToken transfers, SonicARead-onlyInspect
List a wallet's recent transfers of one ERC-20 token (default USDC) on Sonic, in and out, over the last N blocks (1-2,000, default 1,000): direction, counterparty, amount and transaction, newest first, up to 50. Use to confirm a payment arrived or see what was sent; for the current balance use sonic_token_balance. Malformed addresses are rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Token: a ticker such as USDT or WETH, or the 0x ERC-20 contract (default: USDC on this network) | |
| blocks | No | How many recent blocks to scan (1-2000, default 1000; 2,000 blocks is about 64 minutes on Sonic) | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces 'reads or computes only and changes nothing'. It goes further with non-annotation behavior: malformed addresses return 400 and are uncharged, failed calls are free, but repeat calls are billed and idempotentHint=false is effectively explained. Pricing, error handling and billing model are all disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the operation and limits, then use-case routing, then error/billing details — a sensible priority order for a single dense paragraph. It is somewhat crammed with pricing and payment-mechanism detail that could be trimmed, but every sentence carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description names the returned fields (direction, counterparty, amount, transaction), the ordering (newest first) and the 50-result cap. Combined with the charge model and failure semantics, an agent has everything needed to call it correctly and interpret the result.
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 token ticker-or-contract, block range with default, and the address format. The description mostly restates those (1-2,000 blocks, default 1,000, default USDC) and adds only the example address and the 'in and out' framing, so it does not add much beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — list a wallet's recent ERC-20 transfers on Sonic — plus scope (in and out, sourcing both directions), default token, block window, ordering and result cap. An agent can distinguish it from sonic_token_balance without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit use cases ('confirm a payment arrived or see what was sent') and names the alternative plus the condition that selects it ('for the current balance use sonic_token_balance'). That is a complete routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonic_txSonic transactionARead-onlyInspect
Look up a Sonic transaction by hash: sender, recipient, value in S, nonce, gas limit, the 4-byte function selector and its block. Use to see what was sent or whether it exists; for success or failure and fees paid use sonic_receipt, for emitted events sonic_logs. Input is a 0x-prefixed 64-hex hash; an unknown hash returns 404, uncharged. Example: hash=0xcc6a5594962b5211496391d0e1e9082f5060f218fad60f907a23e85a7b02bf85. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/safe profile, but the description adds materially: unknown hash returns 404 and is uncharged, pricing is $0.01/call via x402 USDC or card key with first 25 free, failed calls are free, and repeats are not free (consistent with idempotentHint=false). That cost and error behavior cannot be derived from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then sibling routing, then input format/example, then pricing — a sensible order with no filler sentences. Minor redundancy in restating the hash format already given by the schema, and the pricing clause is dense, but each element carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by listing the returned fields; it also covers error behavior (404, uncharged) and the billing model. For a single-param lookup tool, an agent has everything needed to decide to call it and to interpret typical outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single hash param is documented there, so the baseline is 3; the description goes further with a concrete example value and the failure semantics of an unknown hash. The format restatement ('0x-prefixed 64-hex') duplicates the schema, so it earns a 4 rather than a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Look up a Sonic transaction by hash') and enumerates exactly which fields come back (sender, recipient, value in S, nonce, gas limit, selector, block). It also names the two nearest siblings, sonic_receipt and sonic_logs, with the conditions that select them, so an agent can distinguish it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('see what was sent or whether it exists') and explicit when-not-to-use with the correct alternatives: 'for success or failure and fees paid use sonic_receipt, for emitted events sonic_logs'. This is the routing information an agent needs and nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stablecoin_supplyStablecoin supply: USDC and USDT on 5 networksARead-onlyInspect
Live total supply of USDC and USDT on Ethereum, Base, Arbitrum, Optimism and Polygon, read from each token contract (totalSupply), per network and summed per token, plus the grand total. A network whose nodes do not answer is listed with an error instead of failing the call. Use to track stablecoin issuance, liquidity on a chain or mints and burns over time. Example: token=both. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | USDC, USDT or both (default both) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent=false, and the description goes well beyond them: it explains partial-failure semantics (a non-responding network is reported as an error entry rather than failing the whole call), states the billing model and free tier, and explains why repeats are not free — which directly accounts for idempotentHint=false. It also restates the no-side-effects guarantee in operational terms.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and network scope are front-loaded, and structure moves cleanly from what it returns to when to use it to cost. The only waste is mild redundancy between the cost sentence and the closing 'each call is charged, so repeats are not free', which partially restates the pricing clause.
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 no output schema, the description still tells the agent what comes back (per-network figures, per-token sums, a grand total), how failures surface, and what the call costs. For a one-parameter read-only aggregation tool this is everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'token' parameter already documents the USDC/USDT/both options and the 'both' default. The description's example (token=both) merely illustrates a value the schema already defines, adding no new semantics such as case sensitivity or invalid-value behavior.
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 first sentence names the exact resource (total supply of USDC and USDT), the exact scope (five named networks), the data source (each token contract's totalSupply) and the aggregation shape (per network, per token, grand total). This is clearly distinct from the per-chain siblings like polygon_token_info or eth_token_balance, which return token metadata or a single wallet's balance rather than an issuance aggregate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete use cases — tracking issuance, chain liquidity, mints and burns over time — plus a worked example (token=both), which is enough for an agent to know when this is the right tool. It does not, however, name an alternative or state when not to use it (e.g. for a single wallet's USDC balance use polygon_token_balance), so it stops short of explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unichain_allowanceToken allowance, Unichain ERC-20ARead-onlyInspect
ERC-20 token allowance on Unichain: how much a spender may move from an owner's wallet (allowance), raw and in token units, and whether the approval is unlimited. Use to check an approval before a swap or to audit risky open approvals; for the owner's balance use unichain_token_balance. Token is a ticker (USDC, USDT, WETH…) or a 0x contract; a missing contract is 404 and a non-ERC-20 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | 0x wallet that gave the approval | |
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address | |
| spender | Yes | 0x contract or wallet allowed to spend (the example is Uniswap Permit2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, openWorld, idempotent=false, destructive=false), it discloses error semantics (404 for missing contract, 422 for non-ERC-20, both uncharged), pricing ($0.01/call via x402 or card key, first 25 free, failed calls free), and explains why repeats are not free due to per-call charging. It also explicitly states it reads/computes only and changes nothing, consistent with readOnlyHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core definition, then usage, alternative, token resolution, errors, and pricing — a logical order. It is a single dense paragraph with minor redundancy (restating read-only behavior alongside cost-per-call), but every sentence carries operational information for a paid tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of describing the return (raw allowance, token-unit allowance, unlimited flag) and the failure modes, which is sufficient to call it correctly. It does not name return field names, leaving a small gap for downstream parsing.
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, and the description adds resolution semantics beyond the schema: token may be a ticker or a 0x contract, with a missing contract yielding 404 and a non-ERC-20 yielding 422. It does not add further detail on owner/spender beyond the schema descriptions, so it stops short of 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (ERC-20 token allowance on Unichain) and defines the returned concept precisely: how much a spender may move from an owner, raw and in token units, plus whether the approval is unlimited. It explicitly contrasts with unichain_token_balance, so an agent can distinguish it from the closest sibling without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use cases ('check an approval before a swap', 'audit risky open approvals') and names the correct alternative for the adjacent question ('for the owner's balance use unichain_token_balance'). Nothing about tool selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unichain_balanceUnichain balance, native coinARead-onlyInspect
Native ETH balance (eth_getBalance) of any 0x wallet address on Unichain at the latest block, in wei and in ETH. Use to check whether a wallet can pay gas or a transfer; for ERC-20 tokens use unichain_token_balance, for all holdings at once use wallet_portfolio. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet or contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive, open-world, and non-idempotent. The description goes beyond them by explaining error handling (malformed address → 400, uncharged), the billing model ($0.01/call, first 25 free, failed calls free), and why repeats cost money despite identical results — context that explains the idempotentHint=false flag. Return shape is stated in units rather than format, which is the only thing left thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, semantics, alternatives, error behavior, and pricing are front-loaded in three dense sentences with no filler. The pricing/payment clause is the longest single stretch and could be trimmed, but every element is operationally useful to a caller.
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 one parameter, full schema coverage, and no output schema, the description must supply the return semantics and call cost — it does both (wei and ETH, $0.01/call, first 25 free). Nothing an agent needs in order to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter at 100% schema coverage, so the schema already documents it as a '0x wallet or contract address'. The description adds an explicit accepted example and the failure mode for malformed input (400), which is real added value, but it also narrows the wording to 'wallet address' while the schema permits contracts — a small mismatch rather than added clarity.
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 names a specific verb+resource (native ETH balance via eth_getBalance), the exact chain (Unichain), the block scope (latest), the address format (0x), and the units returned (wei and ETH). It explicitly distinguishes itself from unichain_token_balance and wallet_portfolio, so an agent can separate it from the large sibling set without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the use case directly (check whether a wallet can pay gas or a transfer) and names the two alternatives with the conditions that select them: unichain_token_balance for ERC-20 tokens, wallet_portfolio for all holdings at once. Both when-to-use and when-to-use-something-else are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unichain_blockUnichain block numberARead-onlyInspect
Latest block number and block details on Unichain, or any block by decimal number: hash, timestamp, transaction count, gas used and limit, base fee in gwei and producer. Use for timestamps and confirmation counts; for current fees use unichain_gas. A block that does not exist yet returns 404, uncharged. Example: number=latest. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| number | No | Block number, or 'latest' (default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description still adds real value beyond them: the 404-for-nonexistent-block behavior, the fact that failed calls are free, and the charging model that explains why repeats are not free (consistent with idempotentHint=false). It does not contradict any annotation, but the pricing/monetization block is commercial rather than behavioral detail about the call itself.
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?
Information is front-loaded: purpose and returned fields come first, the sibling routing second, and pricing last. Most sentences earn their place for an agent that must reason about cost, though the x402 USDC / card key / first-25-free clause is dense and partially redundant with the later 'failed calls free' statement.
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?
There is no output schema, so the description carries the burden of describing the response, and it does so field by field (hash, timestamp, tx count, gas used and limit, base fee in gwei, producer). Combined with the 404 behavior, the example call, and the cost model, an agent has everything needed to invoke this correctly in one pass.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'number' parameter is already documented as 'Block number, or latest (default)'. The description adds a modest amount — it clarifies the number must be decimal and provides a concrete example — but does not specify any alternative formats or edge cases for the parameter beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource — latest block number and details on Unichain, or any block by decimal number — and then enumerates exactly what is returned (hash, timestamp, tx count, gas used/limit, base fee in gwei, producer). It also names the sibling it is not (unichain_gas) so the agent can distinguish it from unichain_block-adjacent tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('timestamps and confirmation counts') and when not to ('for current fees use unichain_gas'), naming the alternative directly. It also gives the canonical invocation example (number=latest) and the edge-case condition (block that does not exist yet returns 404, uncharged), leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unichain_callEth call, Unichain contract callARead-onlyInspect
Read-only contract call on Unichain (eth_call): send ABI-encoded calldata to a contract at the latest block and get the raw return data, without a transaction or gas. Use to read any view function that has no dedicated tool (the example reads USDC totalSupply, selector 0x18160ddd); decode the result with the function's ABI. Calldata up to 8 KB; a call that reverts is 422 with the reason, uncharged. Example: to=0x078D782b760474a361dDA0AF3839290b0EF57AD6, data=0x18160ddd. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x contract address to call | |
| data | Yes | 0x ABI-encoded calldata: 4-byte selector plus arguments | |
| from | No | Optional 0x sender address for calls that check msg.sender |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: the 8 KB calldata cap, revert behavior (422 with reason, uncharged), pricing ($0.01/call via x402 or card key, first 25 free), and that failed calls are free. Crucially it explains why a read-only tool is not idempotent — every call is charged, so repeats aren't free — reconciling idempotentHint=false with readOnlyHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the verb, resource and mechanism, then usage rule, then limits, errors, and pricing in a short paragraph with zero filler sentences. The pricing detail earns its place because it drives the non-idempotency reasoning.
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 no output schema, the description still tells the agent what comes back (raw return data, to be ABI-decoded) and what a failure looks like (422 plus revert reason). For a three-parameter read tool with full schema coverage, nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real value: a concrete worked example (to=0x078D7..., data=0x18160ddd), the requirement to decode raw return data with the function's ABI, and the 8 KB calldata limit. It does not explain the optional `from` parameter, leaving that entirely to 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?
States a specific verb and resource ("Read-only contract call on Unichain (eth_call)") plus scope (latest block, raw return data, no transaction/gas). It explicitly differentiates from siblings by saying to use it for view functions that have "no dedicated tool," which separates it from unichain_token_balance, unichain_storage, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear selection rule: use for any view function lacking a dedicated tool, and it points to the ABI for decoding. It does not name concrete alternatives (e.g. "use unichain_token_balance for ERC-20 balances"), so the agent must infer sibling boundaries from the catalog, but the routing condition itself is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unichain_estimate_gasEstimate gas, UnichainARead-onlyInspect
Estimate the gas a transaction would use on Unichain (eth_estimateGas) and what it would cost at the current gas price, in gas units, gwei and ETH. Give to, plus value in ETH and calldata for a contract call, and the sender when the call depends on it. Use before sending a transaction or to price a batch; for the gas price alone use unichain_gas. A transaction that would revert is 422 with the reason, uncharged. Example: to=0x000000000000000000000000000000000000dEaD. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x recipient or contract address | |
| data | No | Optional 0x calldata for a contract call | |
| from | No | 0x sender address (default: an empty address) | |
| value | No | Amount of ETH to send, in ETH (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered by structured fields; 'reads or computes only and changes nothing' largely restates them. The description does add genuinely new behavior: a 422 with the revert reason for failing transactions, failures uncharged, and per-call pricing that explains why idempotentHint=false ('repeats are not free'). That added cost and error semantics is worth real credit but is thinner than the runtime/auth detail a 4-5 would require.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and the sibling routing come first, then parameters, then error and pricing terms. It is information-dense and every sentence carries content, though it runs long for a four-parameter read tool and 'reads or computes only and changes nothing' is partly redundant with the readOnlyHint annotation.
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 no output schema, the description takes on the burden of describing return values and does so in concrete units. It also covers error behavior (422 plus reason), cost and payment prerequisites (x402 USDC, card key, free tier), which is everything an agent needs to decide whether and how 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?
Schema coverage is 100%, so the baseline is 3 and the schema already documents all four parameters. The description adds some meaning beyond it: value is denominated in ETH, calldata is for a contract call, and 'from' is only needed when the result depends on the sender — that last clause is a real semantic hint the schema does not give (the schema only says 'default: an empty address').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Estimate the gas a transaction would use on Unichain'), names the underlying RPC method (eth_estimateGas), and enumerates the return units (gas units, gwei, ETH). It is explicitly differentiated from the sibling unichain_gas, so an agent can pick correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use before sending a transaction or to price a batch; for the gas price alone use unichain_gas' gives both the triggering context and the alternative with the condition that selects it. It also explains when to supply optional inputs ('the sender when the call depends on it'), which is usage guidance, not just schema restatement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unichain_gasUnichain gas priceARead-onlyInspect
Current gas price on Unichain (eth_gasPrice): gas price, base fee and suggested priority fee in gwei, plus what a plain ETH transfer (21,000 gas) costs right now. Takes no input. Use before sending a transaction or to decide whether to wait; for the fee a past transaction actually paid use unichain_receipt. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Optional: comma-separated top-level result keys to keep, for a smaller answer (for example only=price,symbol); unknown keys are ignored and an empty match returns the full result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses pricing ($0.01/call via x402 USDC or card key), the 25-call free tier, that failed calls are free, and that repeated calls are not free — which concretely explains the idempotentHint=false flag. It also confirms the call reads or computes only and changes nothing, reinforcing readOnlyHint/destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads identity and return values, then usage, then billing — a sensible order. It is dense and semi-colon chained, and the pricing tail is verbose, but nearly every clause carries decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly enumerates the returned fields and units, so an agent knows what it gets. The only gap is the unreconciled "takes no input" claim against the optional `only` parameter, which slightly muddies an otherwise complete picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single optional "only" filter is fully documented in the schema, so the baseline is 3. The description adds nothing about that filter and, worse, says "Takes no input," which an agent could read as ruling out the projection parameter entirely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — current gas price on Unichain — and enumerates the exact outputs (gas price, base fee, suggested priority fee in gwei, cost of a 21,000-gas transfer). It also names the sibling it is not (unichain_receipt) so an agent can separate live-price reads from historical fee lookups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ("before sending a transaction or to decide whether to wait") and an explicit routing rule away from a sibling: for a past transaction's actual fee, use unichain_receipt. It also preempts the most likely misuse — repeatedly re-calling for freshness — by noting each call is charged.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unichain_gas_historyUnichain gas history, gas priceARead-onlyInspect
Gas price history on Unichain (eth_feeHistory): base fee in gwei for each of the last N blocks (5-100, default 20), how full each block was, and the 10th, 50th and 90th percentile priority fees, with the low, average and high base fee over the window. Use to judge whether fees are rising, pick a priority fee or time a transaction; for the current price alone use unichain_gas. Example: blocks=20. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks, 5-100 (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and non-destructive, but the description adds behavior the annotations cannot express: it is compute-only and changes nothing, every call is billed ($0.01 via x402 USDC or card key), the first 25 calls are free, failed calls are free, and repeats are not free — which explains the otherwise puzzling idempotentHint=false. This is substantive context beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the operation and return contents, then usage, example, and pricing — a sensible order. It is a dense run-on paragraph and the pricing sentence is long, but nearly every clause carries information an agent needs (cost, free tier, no-op behavior).
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?
There is no output schema, so the description must describe returns, and it does: per-block base fee in gwei, block fullness, three percentile priority fees, and low/avg/high over the window. Combined with the usage and billing context, an agent has everything needed to call it and interpret results.
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 states 'How many recent blocks, 5-100 (default 20)'; the description repeats the same range and default, and the example 'blocks=20' adds no new meaning. Baseline 3 applies since the schema carries the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource+chain: gas price history on Unichain via eth_feeHistory, and enumerates what the result contains (base fee per block in gwei, block fullness, 10/50/90th percentile priority fees, low/avg/high over the window). It also explicitly distinguishes itself from the sibling unichain_gas ('for the current price alone'), so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use cases ('judge whether fees are rising, pick a priority fee or time a transaction') and an explicit alternative for the other case ('for the current price alone use unichain_gas'). No inference is required to choose between the two.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unichain_is_contractUnichain is-contract checkARead-onlyInspect
Check whether a 0x address on Unichain is a smart contract or a plain wallet: bytecode size, and whether it is an EIP-1167 minimal proxy and which implementation it points to. Use before sending funds or approving a spender; for a fuller risk verdict use check_counterparty. A malformed address is rejected with 400, uncharged. Example: address=0x078D782b760474a361dDA0AF3839290b0EF57AD6. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces that with 'Reads or computes only and changes nothing.' The valuable additions are the error contract (malformed address rejected with 400, uncharged) and the pricing model ($0.01/call, first 25 free, failed calls free, repeats not free), which explains the otherwise puzzling idempotentHint=false. It does not describe response shape at field level, but for a single-value read the disclosed error and billing behavior is the meaningful extra 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?
Front-loaded with the capability, then usage, then error/billing notes — no sentence is filler, and the pricing clause justifies the non-idempotent hint. Slightly dense for one paragraph, but each clause carries information an agent would otherwise have to guess.
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?
No output schema exists, yet the description enumerates what is returned (bytecode size, proxy status, implementation address), plus error behavior, cost, and read-only semantics. For a single-address lookup tool, nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With one parameter and 100% schema coverage, the schema baseline is 3, but the description adds genuine meaning: the required 0x format is illustrated with a concrete example address and the consequence of a malformed value (HTTP 400, no charge). That goes beyond the terse schema description '0x address'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check whether a 0x address on Unichain is a smart contract or a plain wallet') and enumerates the exact outputs: bytecode size, EIP-1167 minimal-proxy status, and implementation target. This clearly separates it from the generic chain siblings and from unichain_proxy / check_counterparty.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('Use before sending funds or approving a spender') and routes to an alternative ('for a fuller risk verdict use check_counterparty'). The implicit boundary against the sibling unichain_proxy is not spelled out, but the when-to-use condition is concrete enough that an agent can act on it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unichain_logsUnichain event logsARead-onlyInspect
Recent contract event logs on Unichain (eth_getLogs): the events a contract emitted over the last N blocks (1-1,000, default 50), optionally filtered by topic0 (the 0x 32-byte event signature hash). Returns up to 100 logs with block, transaction hash and topics. Use to watch transfers or contract events; for one transaction's outcome use unichain_receipt. Example: address=0x078D782b760474a361dDA0AF3839290b0EF57AD6. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks to scan (1-1000, default 50) | |
| topic0 | No | Optional 0x event signature hash to filter by | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/destructive/openWorld/idempotent, and the description adds genuinely new behavioral facts: per-call cost ($0.01 via x402 USDC or card key), first 25 free, failed calls free, and that repeats are charged — which concretely explains the idempotentHint=false. It also discloses result caps (up to 100 logs) and the block-scan ceiling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then scope, then return shape, then routing, then pricing — a logical order in one dense paragraph with no filler sentences. It is on the long side and the pricing/credits clause competes with the core usage guidance, but each element carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly describes the return payload (up to 100 logs with block, transaction hash, topics) and covers cost, filters, and limits. It does not explain what happens when a block range would yield more than 100 logs (truncation vs. error vs. pagination), which is the one operational detail an agent might need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes slightly further by clarifying topic0 is a 32-byte event signature hash and by supplying a concrete address example. It largely restates the blocks range and default already in the schema, so it stops short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Recent contract event logs on Unichain"), anchors it to the underlying RPC method (eth_getLogs), and explicitly distinguishes itself from the sibling unichain_receipt. An agent can tell this apart from unichain_tx or unichain_receipt without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear when-to-use ("watch transfers or contract events") and an explicit when-not with the alternative named ("for one transaction's outcome use unichain_receipt"). The one gap is that recommending transfer-watching without mentioning the sibling unichain_token_transfers leaves a routing ambiguity for that specific use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unichain_nft_balanceNFT balance, UnichainARead-onlyInspect
How many NFTs of one ERC-721 collection a wallet holds on Unichain (balanceOf), with the collection's name and symbol. Use to check a holder before a token-gated action or to see whether a wallet still holds a collection; for who holds one token id use unichain_nft_owner. Both inputs are 0x addresses; a missing contract is 404, a contract that is not ERC-721 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet address | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations by disclosing error semantics (404 for missing contract, 422 for non-ERC-721, both uncharged), pricing ($0.01/call via x402 or card key, first 25 free, failed calls free), and that repeats are billable — which is the practical meaning of idempotentHint=false. It also states the tool changes nothing, consistent with readOnlyHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Core semantics come first, then the sibling routing, then error and billing details. The final two clauses about payment and idempotency are dense but each carries distinct operational information; slightly compressed phrasing keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly tells the agent what comes back (count plus collection name and symbol), supplies failure codes, and warns about per-call billing. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented as 0x addresses. The description's note that both inputs are 0x addresses duplicates the schema, and adds only the ordering-free clarification that contract is the collection and address the wallet — which the schema already states. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: how many NFTs of one ERC-721 collection a wallet holds on Unichain, implemented as balanceOf, plus the side output of collection name and symbol. It explicitly differentiates from the nearest sibling (unichain_nft_owner) and from unichain_token_balance by scoping to ERC-721.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names two concrete use cases (gate check before a token-gated action, verifying a wallet still holds a collection) and routes the agent to unichain_nft_owner for the one-token-id question. When-to-use and the alternative are both explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unichain_nft_metadataNFT metadata, UnichainARead-onlyInspect
NFT metadata on Unichain: the token URI of one ERC-721 token id (tokenURI) and the JSON it points to (name, description, image, attributes), read from data: URIs, https or ipfs:// (through ipfs.io). Strings over 1,000 characters, such as on-chain SVG images, are shortened. Use to show or check what an NFT is; for its owner use unichain_nft_owner. A token that does not exist is 422, uncharged; unreachable metadata is reported in metadataError. Example: contract=0x943e6e07a7E8E791dAFC44083e54041D743C46E9, tokenId=1. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | Token id, a whole number | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: describes the 422-uncharged path for nonexistent tokens, metadataError for unreachable metadata, truncation of strings over 1,000 characters (on-chain SVGs), the ipfs.io gateway, and per-call pricing with the first 25 free. It is consistent with readOnlyHint=true and idempotentHint=false ('each call is charged, so repeats are not free'). Minor gap: doesn't say whether a partially resolved JSON is returned alongside metadataError.
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?
Dense but front-loaded: purpose and return shape first, routing and error semantics next, pricing last. The pricing/free-tier sentence is somewhat boilerplate for a per-call tool but is operationally relevant; no sentence is pure 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 no output schema, the description still tells the agent exactly what comes back (tokenURI plus name/description/image/attributes) and how failures surface (422 uncharged, metadataError). Nothing needed to call or interpret the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description adds a concrete worked example (contract=0x943e..., tokenId=1) that shows the expected address casing and a numeric id, which is more than the schema alone conveys. It doesn't document the odd accepted types for tokenId, but the schema covers that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource: reads the tokenURI of one ERC-721 token id on Unichain plus the JSON it resolves to (name, description, image, attributes). It explicitly distinguishes itself from the sibling unichain_nft_owner, so an agent can choose correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the use case directly ('Use to show or check what an NFT is') and names the alternative for the adjacent task ('for its owner use unichain_nft_owner'). It also sets cost/charge expectations that affect whether an agent should call it repeatedly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unichain_nft_ownerUnichain NFT ownerARead-onlyInspect
Owner of an NFT on Unichain: the wallet that holds one ERC-721 token id right now (ownerOf), plus the collection's name and symbol. Use to verify who holds an NFT before a trade, a mint gate or an airdrop; for how many a wallet holds use unichain_nft_balance, for the token's metadata unichain_nft_metadata. A missing contract is 404, a token that does not exist 422, both uncharged. Example: contract=0x943e6e07a7E8E791dAFC44083e54041D743C46E9, tokenId=1. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | Token id, a whole number | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and non-destructive, but the description goes further: 404 for a missing contract, 422 for a nonexistent token id, and both uncharged, plus pricing ($0.01/call via x402 USDC or card key, first 25 free, failed calls free) and the non-idempotent billing implication ('each call is charged, so repeats are not free'). That is strong behavior beyond the annotations, though it stops short of describing response shape or latency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the definition, then scenario, then alternatives, then errors, then pricing. Dense but nearly every clause carries information; the pricing/charging sentence is slightly repetitive ('each call is charged, so repeats are not free' after already listing price).
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 two-param read tool with no output schema, the description covers what is returned (owner address, collection name and symbol), failure modes with status codes, and billing. An agent has everything needed to call it correctly and interpret failures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds a worked example with a real 0x contract address and tokenId=1 that clarifies the expected formats and pairing. It does not explain edge cases like non-numeric tokenIds tolerated by the schema's union type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'the wallet that holds one ERC-721 token id right now (ownerOf), plus the collection's name and symbol.' It also names the two adjacent siblings (unichain_nft_balance, unichain_nft_metadata) so the agent can discriminate without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use scenarios ('verify who holds an NFT before a trade, a mint gate or an airdrop') and explicit routing for the two nearest alternative tools by name. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unichain_nonceUnichain nonce, account nonceARead-onlyInspect
Read the transaction count (nonce) of a 0x address on Unichain, both confirmed and including pending transactions. Use to build the next transaction or to tell whether an address has ever sent anything; for its balance use unichain_balance. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, yet the description still adds real information: side-effect-free behavior ('changes nothing'), malformed-address handling ('rejected with 400, uncharged'), and billing semantics (first 25 free, failed calls free, repeats are not free — which explains why idempotentHint is false). The only gap is the return shape: 'confirmed and including pending' leaves slightly open whether one number or two are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, use cases, error behavior, pricing and the sibling pointer are all front-loaded in a short block with no filler sentences. Slight redundancy: charging is stated twice ('Price $0.01/call … first 25 free; failed calls free' and 'each call is charged, so repeats are not free'), which costs a few 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?
For a single-parameter read tool with no output schema, the definition supplies everything an agent needs: what it returns, how it validates input, what a failure costs, and which sibling to use instead. Nothing material is left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With one parameter at 100% schema coverage the baseline is 3, and the description earns above that by adding validation semantics ('malformed address is rejected with 400, uncharged') and a concrete well-formed example address. It still doesn't say whether checksummed vs lowercase input matters, but the added meaning is genuine.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — read the transaction count (nonce) of a 0x address on Unichain — and pins down the scope as 'both confirmed and including pending transactions', which is exactly the ambiguity an agent would otherwise have. It also differentiates itself from the sibling unichain_balance by name, so the tool is separable from the ~200-strong chain-prefixed family without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases ('build the next transaction', 'tell whether an address has ever sent anything') and an explicit redirect to a named alternative ('for its balance use unichain_balance'). The when-not condition is stated, not merely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unichain_proxyProxy implementation, UnichainARead-onlyInspect
Find the implementation behind a proxy contract on Unichain: reads the EIP-1967 implementation, beacon and admin slots, EIP-1822 (UUPS), the older OpenZeppelin layout and EIP-1167 minimal-proxy bytecode, and names the kind found. Use before trusting or decoding a contract whose code can be swapped by its admin; for a fuller risk verdict use contract_risk. A malformed address is 400; an address without code is 404, both uncharged. Example: address=0x078D782b760474a361dDA0AF3839290b0EF57AD6. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: 400 on malformed address, 404 on address without code, both uncharged, plus pricing ($0.01/call, first 25 free, failed calls free) and the explicit statement that repeats are charged because idempotentHint=false. This is exactly the kind of cost and failure-mode disclosure annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and the standards read, then attaches usage, error codes, example, and pricing in a tight sequence with every sentence carrying information. It is dense and the pricing clause is somewhat bolted on, but nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description covers what an agent needs: the input format by example, success semantics ('names the kind found'), and failure codes. It stops short of describing the exact response fields (e.g., whether the implementation address is returned per slot), which would fully close the loop.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'address' parameter, so the baseline is 3; the concrete example address adds a small amount of format confirmation. It does not add new constraints (e.g., checksum vs lowercase handling) 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?
States a specific verb and resource ('Find the implementation behind a proxy contract on Unichain') and even enumerates the resolution paths it reads (EIP-1967, beacon, admin, UUPS, OZ layout, EIP-1167). The chain prefix plus 'proxy' cleanly separates it from the many sibling *_proxy tools and from unichain_is_contract/unichain_storage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use condition ('before trusting or decoding a contract whose code can be swapped by its admin') and routes to an alternative for a fuller verdict ('contract_risk'). The only weak point is that contract_risk is not among the listed siblings, so the agent cannot verify that pointer from the toolset alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unichain_receiptUnichain transaction receiptARead-onlyInspect
Transaction receipt on Unichain (eth_getTransactionReceipt): success or reverted, gas used, effective gas price, fee paid in ETH, number of event logs and any contract created. Use to confirm a payment or call went through; for sender, value and calldata use unichain_tx. Input is a 0x-prefixed 64-hex hash; a pending or unknown hash returns 404, uncharged. Example: hash=0xefe004f02c8907dc61735fe378eb5d2f3730d66cd8d4f385ef13076ad1eacdce. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only flag readOnly/openWorld and idempotentHint=false; the description explains WHY repeats are not free (per-call charge, so repeats are not free) and confirms read-only semantics ('changes nothing'). It adds pricing, free-tier, and 404-on-pending behavior — context no annotation carries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and return fields are front-loaded in the first sentence, alternatives follow, then input format, then billing. The billing/pricing tail is dense and slightly run-on, but each clause (404 uncharged, failed calls free, repeats not free) carries decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by enumerating the return fields an agent would need (status, gas used, gas price, fee, log count, created contract). Combined with input format, error behavior and cost model, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already documents the single hash parameter, so the baseline is 3. The description goes slightly beyond by repeating the 0x/64-hex format and supplying a concrete valid example hash, but adds no new semantic constraint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Transaction receipt on Unichain') and enumerates the returned fields (status, gas used, effective gas price, fee in ETH, log count, contract created). It explicitly differentiates itself from the nearest sibling by pointing to unichain_tx for sender, value and calldata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete when-to-use ('confirm a payment or call went through') and names the alternative plus the condition that selects it ('for sender, value and calldata use unichain_tx'). It also states the failure case (pending/unknown hash returns 404, uncharged), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unichain_storageStorage slot read, UnichainARead-onlyInspect
Read one raw storage slot of a contract on Unichain (eth_getStorageAt): the 32-byte word, as a number and, when it holds one, as an address. Slot is a decimal index or a 0x 32-byte key (mapping and proxy slots). Use to inspect contract state that has no getter, owners or implementation pointers; for proxies use unichain_proxy. A malformed address or slot is rejected with 400, uncharged. Example: address=0x078D782b760474a361dDA0AF3839290b0EF57AD6. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | Slot: a decimal index (0, 1, 2…) or a 0x 32-byte key | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the read-only/non-destructive profile, and the description adds meaningful context beyond them: malformed address or slot is rejected with 400 and uncharged, failed calls are free, and each successful call is charged so repeats are not free — which directly explains the idempotentHint=false annotation. Pricing and auth (x402 USDC, card key /credits, 25 free) are also disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, slot semantics, and routing before the pricing tail, and every element is useful. Minor redundancy in stating the billing model twice ('Price $0.01/call…' and 'each call is charged, so repeats are not free') keeps it just short of ideal.
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 no output schema, the description compensates by describing the returned value, and it covers error behavior, billing, and the proxy alternative. An agent has everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description goes further by explaining what a slot means (decimal index or 0x 32-byte key, used for mapping and proxy slots) and gives a concrete example address, which adds semantic value beyond the schema's type declarations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read one raw storage slot of a contract on Unichain') and even names the underlying RPC method (eth_getStorageAt). It also describes the return shape (32-byte word as number, address when applicable), letting an agent distinguish it from unichain_call and unichain_proxy without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('inspect contract state that has no getter, owners or implementation pointers') and an explicit alternative and exclusion ('for proxies use unichain_proxy'). Nothing about routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unichain_token_balanceUnichain ERC-20 balanceARead-onlyInspect
ERC-20 token balance of a wallet on Unichain (USDC, USDT, WETH or any token, via balanceOf): raw amount, decimals, symbol and the human-readable amount, live from the token contract. Use to check stablecoin or token holdings before a transfer or trade; for the native coin use unichain_balance. Both inputs are 0x addresses (40 hex characters); no contract returns 404 and a non-ERC-20 contract 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC, USDT, WETH or DAI, or the 0x ERC-20 contract address | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond annotations: 404 for missing contract, 422 for non-ERC-20, both uncharged, $0.01/call with first 25 free, and failed calls free -- which also explains the idempotentHint=false billing behavior. Runs long on pricing, but the error/billing disclosure is substantive for an openWorld read 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?
Front-loads what the tool returns and its sibling distinction, with pricing/error details trailing. Dense but efficient; the pricing sentence is slightly over-weighted for a two-parameter read.
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?
No output schema exists, and the description enumerates return fields (raw amount, decimals, symbol, human-readable amount, live from contract). Error codes, billing, and safety are all covered, leaving nothing an agent needs to call 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%, so the baseline is 3. The description adds the 40-hex-character address format, but its claim that 'both inputs are 0x addresses' conflicts with the schema, which allows a ticker like USDC for the token parameter -- a minor inaccuracy rather than added clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('ERC-20 token balance of a wallet on Unichain ... via balanceOf') and names the exact return fields. It explicitly distinguishes itself from the sibling 'unichain_balance' (native coin), so an agent can route without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete usage context ('check stablecoin or token holdings before a transfer or trade') and names the alternative for the native-coin case ('for the native coin use unichain_balance'). The when-to-use and when-not-to-use are both explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unichain_token_infoUnichain token info, ERC-20ARead-onlyInspect
Look up the name, symbol, decimals and total supply of an ERC-20 token contract on Unichain, live from the contract. Use to identify an unknown token address or to format raw amounts; for a holder's balance use unichain_token_balance. Input is a ticker (USDC, WETH…) or the token's 0x contract address; an address that is not an ERC-20 contract returns 422, uncharged. Example: token=0x078D782b760474a361dDA0AF3839290b0EF57AD6. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover read-only/safety; the description adds the failure mode (non-ERC-20 address returns 422, uncharged), the pricing model ($0.01/call, first 25 free, failed calls free) and the reason repeats are not free, which explains the idempotentHint=false annotation rather than 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?
Purpose and the sibling hand-off are front-loaded in the first two sentences. The tail is a dense run-on packing error code, example, pricing and a read-only reassurance; every element is useful but could be split for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only lookup with no output schema, the description effectively enumerates the returned fields, covers the input format ambiguity, the error case, and cost. An agent has everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema's own description already says the parameter accepts a ticker or a 0x ERC-20 address. The description's example address adds a small amount of concreteness but no new syntax or formatting rules, 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?
States a specific verb and resource: look up name, symbol, decimals and total supply of an ERC-20 contract on Unichain, read live from the contract. It explicitly separates itself from unichain_token_balance by naming that sibling and its different output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases (identifying an unknown token address, formatting raw amounts) and an explicit alternative with the condition that selects it: 'for a holder's balance use unichain_token_balance'. Nothing is left to inference about when to pick this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unichain_token_transfersToken transfers, UnichainARead-onlyInspect
List a wallet's recent transfers of one ERC-20 token (default USDC) on Unichain, in and out, over the last N blocks (1-2,000, default 1,000): direction, counterparty, amount and transaction, newest first, up to 50. Use to confirm a payment arrived or see what was sent; for the current balance use unichain_token_balance. Malformed addresses are rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Token: a ticker such as USDT or WETH, or the 0x ERC-20 contract (default: USDC on this network) | |
| blocks | No | How many recent blocks to scan (1-2000, default 1000; 2,000 blocks is about 33 minutes on Unichain) | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses malformed addresses return 400 uncharged, exact pricing ($0.01/call via x402 or card key, first 25 free, failed calls free), and that repeats are billed — consistent with idempotentHint=false. It also confirms the call is side-effect free, matching readOnlyHint/destructiveHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, scope, and alternative before cost details, so the essential routing information comes first. Slightly redundant on billing ('each call is charged, so repeats are not free' after the price sentence), which costs a bit of tightness in an otherwise dense paragraph.
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 no output schema, the description still enumerates returned fields (direction, counterparty, amount, transaction), ordering, and the 50-row cap. Combined with error behavior and pricing, an agent has everything needed to decide, call, and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, and the description reinforces the meaningful defaults (USDC default token, 1–2,000 blocks with default 1,000) and supplies a concrete address example. It also adds the result cap ('up to 50') and ordering ('newest first'), which the schema does not express.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List), resource (a wallet's recent ERC-20 transfers), chain (Unichain), scope (in and out, last N blocks), and default token (USDC). It also explicitly separates itself from unichain_token_balance, so an agent can distinguish this from the most confusable sibling without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use cases ('confirm a payment arrived or see what was sent') and names the alternative for the adjacent need ('for the current balance use unichain_token_balance'). The boundary between this tool and the balance tool is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unichain_txUnichain transactionARead-onlyInspect
Look up an Unichain transaction by hash: sender, recipient, value in ETH, nonce, gas limit, the 4-byte function selector and its block. Use to see what was sent or whether it exists; for success or failure and fees paid use unichain_receipt, for emitted events unichain_logs. Input is a 0x-prefixed 64-hex hash; an unknown hash returns 404, uncharged. Example: hash=0xefe004f02c8907dc61735fe378eb5d2f3730d66cd8d4f385ef13076ad1eacdce. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, and the description goes well beyond them: the 404-on-unknown-hash behavior, the billing model ($0.01 per call via x402 USDC or card key, first 25 free, failed calls free), and the explicit warning that calls are not idempotent in practice because each repeat is charged. That last point directly reinforces idempotentHint=false with actionable 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?
Front-loaded with purpose, then alternatives, then input contract, then pricing — a sensible order with no filler sentences. It loses a point for mild redundancy: the 0x-prefixed 64-hex format restates the schema, and 'reads or computes only and changes nothing' restates readOnlyHint.
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 no output schema, the description carries return-value disclosure and does it by listing the fields returned (including the 4-byte selector and block). Cost, error behavior, and sibling routing are all covered, leaving nothing an agent needs to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds the 404 consequence for an unrecognized hash and supplies a concrete example value, which is real value beyond the schema. It does duplicate the format string already in the schema, keeping it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Look up an Unichain transaction by hash') and enumerates the returned fields (sender, recipient, value, nonce, gas limit, selector, block). It explicitly names the siblings it is not — unichain_receipt for status/fees and unichain_logs for events — so an agent can route correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('see what was sent or whether it exists') and when-to-use-something-else, naming both alternatives and the exact conditions that select them (success/failure and fees -> unichain_receipt; emitted events -> unichain_logs). It also covers the negative case: an unknown hash returns 404, uncharged.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uniswap_poolUniswap pool, V3 pool: state and priceARead-onlyInspect
Uniswap v3 pools for a token pair on Ethereum, Base, Arbitrum, Optimism or Polygon, read live from the factory and each pool: pool address per fee tier (0.01%, 0.05%, 0.3%, 1%), price of each token in the other, current tick, in-range liquidity and both token balances held, deepest pool first. Tokens by 0x address or ticker. Use to find the right pool, check depth before a swap or read a spot price. Example: tokenA=WETH, tokenB=USDC. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | ethereum (default), base, arbitrum, optimism or polygon | |
| tokenA | Yes | First token: 0x address or ticker | |
| tokenB | Yes | Second token: 0x address or ticker |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/no-destruct, but the description adds genuinely new context: pricing ($0.01/call via x402 USDC or card key), first 25 free, failed calls free, and the non-obvious billing consequence that repeats are not free. It does not spell out behavior when no pool exists at a fee tier, which keeps it off a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and what is returned, then usage, then pricing. Dense but nearly every clause carries information; the billing sentence spills into the same paragraph as the read-only claim, slightly blurring the two ideas.
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 no output schema, the description does the heavy lifting by enumerating returned fields and ordering (deepest pool first), which is exactly what an agent needs to interpret results. It omits edge-case behavior (pair not listed, no pools at a fee tier), so not fully 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?
Schema coverage is 100%, so chain/tokenA/tokenB are already documented, and the description largely restates them (0x address or ticker, chain list, worked example). It adds no format constraints or validation rules beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (Uniswap v3 pools for a token pair) with concrete verb-like semantics (read live from the factory and each pool) and enumerates exactly what is returned: pool address per fee tier, prices, tick, in-range liquidity, balances, sorted deepest first. No sibling in the list covers Uniswap pool state, so differentiation 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?
Gives explicit use cases: 'find the right pool, check depth before a swap or read a spot price,' plus a concrete example (tokenA=WETH, tokenB=USDC). It stops short of naming when-not-to-use or an alternative tool, but there is no sibling that competes for this job.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
walletBase wallet balances and account nonce snapshot: see a Base wallet's ETH and token balances and its transaction countARead-onlyInspect
Base only (all 5 chains: wallet_balances; USD values: wallet_portfolio). An address on Base: ETH and major token balances (USDC, WETH, cbBTC, DAI, USDbC, cbETH, AERO, EURC) plus up to 20 token addresses you pass, the account nonce, and whether it is an EOA, a contract or an EIP-7702 account. The nonce counts outgoing transactions only; not transfer or trading history. Use to check a counterparty's holdings. Example: address=0x4200000000000000000000000000000000000006. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| tokens | No | Optional comma-separated extra ERC-20 addresses to check (max 20) | |
| address | Yes | Wallet or contract address on Base (0x...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint, destructiveHint=false, and openWorldHint, the description discloses pricing ($0.01/call via x402 USDC or card key, first 25 free, failed calls free) and repeats are not refunded; that is critical context given idempotentHint=false. It also states the limits and meaning of the nonce (outgoing transactions only, not transfer or trading history) and that the call changes nothing.
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 text is front-loaded with the scope and the alternative tools, then the returned data, then the pricing. It is dense but nearly every clause carries distinct information; the parenthetical chain of alternatives and the long token list make it slightly heavy, but nothing is truly wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining the return values, and it does list them: balances, nonce, and account classification. It omits details such as units, decimals, or the response shape for the extra tokens, but for a read-only snapshot tool it is close to 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?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: the tokens parameter accepts up to 20 extra ERC-20 addresses in addition to the built-in majors, it enumerates those majors, and it gives a format example for the address. It stops short of describing how the two parameters interact when a token address duplicates a built-in one.
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 gives a specific verb and resource: ETH and major token balances for an address on Base, plus the account nonce and whether it is an EOA, a contract, or an EIP-7702 account. It names the exact token set and explicitly separates itself from wallet_balances (all 5 chains) and wallet_portfolio (USD values), so an agent can tell them apart without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It opens with the scope constraint 'Base only' and names the two alternatives together with the condition that selects each of them (all chains, USD values). It also gives a concrete scenario, 'check a counterparty's holdings', and an example address, so the agent knows when to use this tool and when not to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wallet_balanceWallet balance lookup, EVM: native coin and USDC balance on 5 networks in one callARead-onlyInspect
Wallet balance lookup for any EVM address: the native coin (ETH, POL) and USDC balances on Base, Ethereum, Arbitrum, Optimism and Polygon in one call, read live from each network, with the USDC total. Use to check what a wallet holds before a payment, bridge or airdrop, or to confirm that funds arrived. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/destructive/openWorld, so credit goes for what they can't express: the $0.002 per-call price, the 25 free calls, that failed calls are free, and that repeats are charged — which makes idempotentHint=false financially concrete. It also states balances are read live from each network. Missing only latency or partial-failure behavior when one of the five chains errors.
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 capability and network scope are front-loaded and the pricing detail is grouped at the end. The closing pricing sentence is slightly redundant — 'first 25 free' plus 'failed calls free' plus 'each call is charged, so repeats are not free' restates the same commercial fact three ways.
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 no output schema, the description does the right work by naming the returned fields implicitly (native coin balance, USDC per chain, USDC total). One parameter keeps the surface small. The remaining gap is what the response envelope looks like and how a failed chain is reported.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter at 100% schema coverage, so the schema already documents `address`. The description adds only that it accepts 'any EVM address' and supplies a worked example; it doesn't mention input validation, checksum vs lowercase handling (the sibling `evm_checksum` exists for that), or ENS support.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource plus the exact scope: native coin and USDC across Base, Ethereum, Arbitrum, Optimism and Polygon, with a USDC total, all in one call. That clearly separates it from the many per-chain `<chain>_balance` siblings. It never names `wallet_balances` or `wallet_balance_history` (or `eth_balance`), so the boundary with the closest-looking siblings is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete triggering situations: before a payment, bridge or airdrop, or to confirm funds arrived. It does not say when not to use it — e.g. that for a chain outside the five, or for arbitrary ERC-20s, the per-chain `<chain>_balance` / `<chain>_token_balance` tools are the right call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wallet_balance_historyHistorical balances, wallet historyARead-onlyInspect
Historical balances of any 0x address on Base: ETH and the main tokens (USDC, WETH, cbBTC, DAI, USDbC, cbETH, AERO, EURC, plus up to 5 more) read at one block per day for up to 30 days, with ETH priced from the on-chain Uniswap pool at each date and the USD value change. Use to see how a wallet's holdings moved, check a balance on a past date, or chart a treasury. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How many days back, one point per day (1-30, default 7) | |
| tokens | No | Optional extra token addresses on Base, comma-separated (up to 5) | |
| address | Yes | 0x wallet or contract address on Base |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses the price source (on-chain Uniswap pool at each date), the return contents (per-token balances plus USD value change), the pricing model ($0.01/call via x402 or card key, first 25 free, failed calls free), and that repeat calls are billed — which explains the idempotentHint=false in practical terms. This is unusually rich behavioral context for a read-only 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 capability and its constraints are front-loaded in the first sentence, with use cases and cost follow. It is one dense paragraph rather than a structured list, and the full example address is somewhat expendable, but virtually every clause carries information an agent needs before paying for a call.
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 no output schema, the description carries the return-value burden and does so reasonably by naming tokens, daily granularity, ETH pricing source, and USD change. It does not specify field names or the exact response shape, so an agent knows what data comes back but not how it is keyed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes beyond it by naming the default token set (USDC, WETH, cbBTC, DAI, USDbC, cbETH, AERO, EURC, plus up to 5 more) and clarifying that the tokens parameter adds extras rather than replacing defaults. That default/extend relationship is not in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: daily historical balances of a 0x address on Base, one block per day for up to 30 days, including named tokens and USD valuation. That scope statement ('read at one block per day for up to 30 days') cleanly separates it from the many current-state balance siblings such as base_balance or wallet_balances.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives three concrete use cases (tracking how holdings moved, checking a past-date balance, charting a treasury) and a worked example address. It stops short of explicitly naming the alternative for a current snapshot, so the agent must infer that base_balance covers 'now' rather than being told so.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wallet_balancesWallet balance, USDC balance: native and USDC balances on 5 networksARead-onlyInspect
Read a wallet's native coin and USDC balances on Base, Ethereum, Arbitrum, Optimism and Polygon in one call, live from each network, plus the USDC total. Use to find where a wallet's funds are before a payment or bridge; for one token on one network use _token_balance, for all tokens on Base use wallet_portfolio. A network whose nodes do not answer is listed with an error instead of failing the call. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.002/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: a non-answering network is reported as an error rather than failing the whole call, the call is charged ($0.002, first 25 free, failed calls free) and repeats are not free — which is the key non-idempotence implication. It also restates the no-side-effects guarantee, consistent with readOnlyHint/destructiveHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and network scope, then routing guidance, then failure behavior, then cost. Dense but every clause carries information; the pricing/credits tail is slightly long but is genuinely decision-relevant for a paid tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still explains what comes back (per-network native and USDC balances, USDC total, per-network error entries) and what it costs. For a single-parameter read tool with annotations already covering safety, nothing an agent needs before calling is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one parameter, so the schema already carries the load; the description adds a concrete example address that clarifies the expected 0x format. It doesn't add more than that, which is appropriate at this coverage level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read a wallet's native coin and USDC balances') plus the exact scope (five named networks, one call, plus USDC total). It explicitly distinguishes itself from <chain>_token_balance and wallet_portfolio, so an agent can pick it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a positive trigger ('Use to find where a wallet's funds are before a payment or bridge') and two explicit alternatives with the conditions that select them: single token/single network → <chain>_token_balance, all tokens on Base → wallet_portfolio. When-not guidance is concrete rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wallet_transactionsWallet transactions, historyARead-onlyInspect
Recent token transactions of any 0x address across every ERC-20 it holds: the newest 50 transfers in or out over recent blocks, each with token symbol, amount, counterparty, direction, block and transaction hash. Live Transfer logs on Base (default), Ethereum, Arbitrum, Optimism or Polygon; native-coin transfers are not included. Use to see what a wallet did lately, confirm a payment in any token, or audit activity before a deal. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Network: base (default), eth, arb, op or polygon | |
| blocks | No | How many recent blocks to scan (100-10000, default 2000; Base and Optimism make a block every 2 s, so 2,000 is about 67 minutes; Ethereum every 12 s) | |
| address | Yes | 0x wallet or contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/destructive annotations, it discloses pricing ($0.01/call, first 25 free, failed calls free), that repeats are billed (explaining idempotentHint=false), the 50-result cap, and the fact that native-coin transfers are excluded. For a paid, open-world read tool, these are exactly the operational facts an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns, then chains, exclusions, use cases, cost, and safety in a logical order with no filler. It is dense but slightly overpacked into a single block, with the pricing clause repeated in spirit ('each call is charged, so repeats are not free').
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?
There is no output schema, and the description compensates by enumerating returned fields (symbol, amount, counterparty, direction, block, tx hash) and the result cap. It also covers chains, defaults, costs, and read-only behavior, leaving nothing essential for correct invocation unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds value by restating that Base is the default chain and by supplying a worked example address. It does not add format nuance beyond the schema for 'blocks' or 'chain', so it stays below a full 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('recent token transactions of any 0x address across every ERC-20 it holds') with scope qualifiers: newest 50 transfers, five supported chains, and an explicit exclusion of native-coin transfers. This distinguishes it from the per-chain *_token_transfers siblings without needing to open either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names three concrete use cases (see recent activity, confirm a payment in any token, audit activity before a deal), which gives clear selection context. It does not explicitly name an alternative sibling or state when NOT to use it (e.g., use *_token_transfers for deeper per-chain history), so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whale_transfersWhale alert, large transfers: big USDC and USDT moves on 5 networksARead-onlyInspect
Large stablecoin transfers in the last minutes, read live from the network: every USDC and USDT transfer of at least min USD (default 100,000) on Ethereum, Base, Arbitrum, Optimism or Polygon, largest first, with sender, receiver, transaction and block, mints and burns marked. Covers up to 15 minutes on Ethereum and 3 on Base (busiest). Addresses are not labelled. Use to watch whale flows, treasury moves or stablecoin mints. Example: chain=ethereum. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| min | No | Smallest transfer in USD, 10000 or more (default 100000) | |
| chain | No | ethereum (default), base, arbitrum, optimism or polygon | |
| token | No | USDC, USDT or stablecoins (both, default) | |
| minutes | No | How far back, 1 to 15 minutes (default 5; Base covers at most 3) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses data windows (15 min Ethereum vs 3 min Base), that addresses are unlabelled, output fields (sender, receiver, tx, block, mints/burns), and a detailed pricing model ($0.01/call, first 25 free, failed calls free, repeats not free). These are operational traits an agent cannot get from readOnlyHint/openWorldHint 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?
Purpose and scope are front-loaded, then filters, then usage and pricing. Information density is high, but the closing pricing/reads-only sentences are somewhat verbose and partly restate the annotations' safety profile.
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 4-param, no-output-schema tool, the description supplies ordering, defaults, coverage windows, labelling caveat, and pricing, which is enough to call it correctly. Return structure is only partially described, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all four parameters with defaults and ranges. The description adds only the default min (100,000), the five chain names, and the 'largest first' ordering, which is marginal beyond the schema. 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?
States a specific verb (read large stablecoin transfers), the exact resources (USDC/USDT on Ethereum, Base, Arbitrum, Optimism, Polygon), and the filter (>= min USD, largest first). It distinguishes itself from the per-chain *_token_transfers siblings by being a cross-chain whale thresholded feed, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use to watch whale flows, treasury moves or stablecoin mints" plus a concrete example (chain=ethereum) gives clear usage context. It does not, however, state when NOT to use it or point to the per-chain token_transfers alternatives for lower-threshold/general queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zksync_allowanceToken allowance, zkSync ERC-20ARead-onlyInspect
ERC-20 token allowance on zkSync Era: how much a spender may move from an owner's wallet (allowance), raw and in token units, and whether the approval is unlimited. Use to check an approval before a swap or to audit risky open approvals; for the owner's balance use zksync_token_balance. Token is a ticker (USDC, USDT, WETH…) or a 0x contract; a missing contract is 404 and a non-ERC-20 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | 0x wallet that gave the approval | |
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address | |
| spender | Yes | 0x contract or wallet allowed to spend (the example is Uniswap Permit2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/destructive, but the description adds error semantics (404 for missing contract, 422 for non-ERC-20), billing behavior ($0.01/call, first 25 free, failed calls free), and explains why repeats aren't free — which aligns with idempotentHint=false. Only gap is no detail on response shape/pagination, but with an output-less simple read that's minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage, then semantics, then billing — all information earns its place. It is dense and long for a single description, but nothing is redundant; the pricing sentence is the only slightly tacked-on element.
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 3-param read with no output schema, the description covers purpose, alternatives, accepted token formats, error codes, and cost behavior. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds value by clarifying that 'token' accepts a ticker or a 0x contract and what happens on an invalid one, and by naming Permit2 as the typical spender. It doesn't add much for 'owner', but overall it goes slightly 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?
States a specific verb and resource ('ERC-20 token allowance on zkSync Era') and enumerates the returned values (raw and token-unit allowance, unlimited flag). It explicitly separates itself from the sibling zksync_token_balance, so an agent can choose without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases ('check an approval before a swap', 'audit risky open approvals') and names the alternative for the adjacent need ('for the owner's balance use zksync_token_balance'). The when/when-not split is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zksync_balancezkSync balance, native coinARead-onlyInspect
Native ETH balance (eth_getBalance) of any 0x wallet address on zkSync Era at the latest block, in wei and in ETH. Use to check whether a wallet can pay gas or a transfer; for ERC-20 tokens use zksync_token_balance, for all holdings at once use wallet_portfolio. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet or contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: latest-block semantics, dual-unit return, a 400 with no charge on malformed input, $0.01/call pricing with the first 25 free, and that failed calls are free while repeats are billed. The annotations only say read-only/non-destructive, so this cost and validation detail is real added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb, resource, unit and block, then routing, then example, then pricing. Mostly every sentence earns its place, though 'Reads or computes only and changes nothing' restates readOnlyHint/destructiveHint and the pricing sentence is dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read with no output schema, it covers scope, return units, failure behavior, cost, and alternatives. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with '0x wallet or contract address' already documented, so the baseline is 3; the description adds a concrete example address and states the validation behavior (malformed address rejected with 400). It doesn't add anything beyond that, so it lands just above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the exact resource and method (native ETH balance via eth_getBalance on zkSync Era, latest block, returned in wei and ETH), and explicitly separates itself from zksync_token_balance and wallet_portfolio. An agent can pick this over its many siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case (checking whether a wallet can pay gas or send a transfer) and names both alternatives with the condition that selects each: ERC-20 tokens go to zksync_token_balance, all holdings at once to wallet_portfolio.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zksync_blockzkSync block numberARead-onlyInspect
Latest block number and block details on zkSync Era, or any block by decimal number: hash, timestamp, transaction count, gas used and limit, base fee in gwei and producer. Use for timestamps and confirmation counts; for current fees use zksync_gas. A block that does not exist yet returns 404, uncharged. Example: number=latest. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| number | No | Block number, or 'latest' (default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is highly transparent, disclosing costs ($0.01/call), usage constraints (first 25 free), failure modes (returns 404 for non-existent blocks), and operational status (reads or computes only and changes nothing). This adds significant value beyond the provided annotations and hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is comprehensive yet efficient; every phrase delivers critical information, whether it's detailing return data, usage scenarios, cost structure, or safety guarantees. It is densely packed with high-value information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description successfully acts as a comprehensive documentation, detailing the expected data returned (hash, timestamp, gas used, etc.), the handling of edge cases (404), and operational costs. No major piece of information required for a successful invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While schema coverage is 100%, the description adds vital semantic context by explaining that the input 'number' can be a decimal block number or the string 'latest,' and provides a concrete usage example (number=latest). This is helpful despite the schema being complete.
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 function: retrieving 'Latest block number and block details on zkSync Era, or any block by decimal number.' It is highly specific and distinguishes itself from sibling tools by focusing on block-specific data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance on usage: 'Use for timestamps and confirmation counts; for current fees use zksync_gas.' This tells the agent exactly when to prefer this tool over `zksync_gas` or other related functions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zksync_callEth call, zkSync contract callARead-onlyInspect
Read-only contract call on zkSync Era (eth_call): send ABI-encoded calldata to a contract at the latest block and get the raw return data, without a transaction or gas. Use to read any view function that has no dedicated tool (the example reads USDC totalSupply, selector 0x18160ddd); decode the result with the function's ABI. Calldata up to 8 KB; a call that reverts is 422 with the reason, uncharged. Example: to=0x1d17CBcF0D6D143135aE902365D2E5e2A16538D4, data=0x18160ddd. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 0x contract address to call | |
| data | Yes | 0x ABI-encoded calldata: 4-byte selector plus arguments | |
| from | No | Optional 0x sender address for calls that check msg.sender |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnly/openWorld/non-idempotent/non-destructive): latest-block evaluation, no tx or gas, 8 KB calldata ceiling, revert yields 422 with the reason and is uncharged, $0.01/call with 25 free, and the explicit warning that repeats are charged because nothing is cached. That is exactly the operating context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the operation and its constraints; every sentence carries information (semantics, limits, error behavior, pricing). It is a dense single block rather than segmented, and the pricing sentence is somewhat long, but nothing is truly wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still covers the return value (raw return data, decode via ABI) and the failure mode (422 with revert reason). Given a simple 3-parameter tool, an agent has everything needed to call it and interpret the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description adds a concrete worked example (to=0x1d17...38D4, data=0x18160ddd for USDC totalSupply) and the 8 KB limit on calldata, plus the reminder that the returned bytes need ABI decoding. The optional `from` parameter for msg.sender checks is not addressed, keeping it short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: read-only eth_call on zkSync Era that sends ABI-encoded calldata to a contract and returns raw return data, with no transaction or gas. It also routes away from siblings by scoping itself to view functions that have no dedicated tool (e.g. zksync_token_balance, zksync_balance), so an agent can tell it apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use it for any view function lacking a dedicated tool, and instructs decoding the result with the function's ABI. The 'when not' case (prefer the dedicated tool when one exists) is implied rather than named, and no specific sibling is called out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zksync_gaszkSync Era gas priceARead-onlyInspect
Current gas price on zkSync Era (eth_gasPrice): gas price, base fee and suggested priority fee in gwei, plus what a plain ETH transfer (21,000 gas) costs right now. Takes no input. Use before sending a transaction or to decide whether to wait; for the fee a past transaction actually paid use zksync_receipt. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Optional: comma-separated top-level result keys to keep, for a smaller answer (for example only=price,symbol); unknown keys are ignored and an empty match returns the full result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, destructiveHint false), and the description still adds genuinely new context: per-call pricing ($0.01 via x402 USDC or card key), 25 free calls, failed calls free, and that repeats are charged. That last point explains the idempotentHint=false annotation in practical terms, which the annotation alone does not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and the returned values, with routing and pricing trailing behind. It is dense but nearly every sentence carries information; the billing sentence is slightly packed with three distinct facts that could be split, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain return values, and it does so concretely (three gwei-denominated figures plus a transfer cost). An agent has everything needed to call it and interpret the answer; only the optional `only` parameter goes unmentioned, a minor gap for a zero-required-param read 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?
Schema coverage is 100% and the single parameter `only` is fully documented in the schema, so baseline is 3. The description actively says 'Takes no input', which glosses over the optional output-trimming parameter and could cause an agent to miss a useful optimization; it contributes nothing positive about the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (current gas price on zkSync Era), names the underlying call (eth_gasPrice), and enumerates exactly what comes back: gas price, base fee, suggested priority fee in gwei, and the 21,000-gas ETH transfer cost. That is far more specific than the title and lets an agent distinguish it from zksync_gas_history and zksync_receipt without reading the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit timing guidance ('use before sending a transaction or to decide whether to wait') and names the alternative for the opposite case ('for the fee a past transaction actually paid use zksync_receipt'). The when-to-use and when-not-to-use routing is stated outright rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zksync_gas_historyzkSync gas history, gas priceARead-onlyInspect
Gas price history on zkSync Era (eth_feeHistory): base fee in gwei for each of the last N blocks (5-100, default 20), how full each block was, and the 10th, 50th and 90th percentile priority fees, with the low, average and high base fee over the window. Use to judge whether fees are rising, pick a priority fee or time a transaction; for the current price alone use zksync_gas. Example: blocks=20. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks, 5-100 (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint=true and destructiveHint=false, and the description reinforces this with 'reads or computes only and changes nothing.' It adds non-obvious commercial context (per-call charge, 25 free calls, failed calls free, repeats billed again), which is genuinely useful and not contradicted by idempotentHint=false. However it does not describe return shape, error behavior, or pagination, so it is solid but not rich beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and return contents, then alternatives, then example and pricing. It is a single dense paragraph that mixes tool semantics with payment marketing, but every sentence carries information an agent could act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with full annotation coverage, the description explains what the call returns in enough detail that no output schema is needed. Range, default, example, cost model, and the sibling alternative are all present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description's 'last N blocks (5-100, default 20)' plus 'blocks=20' merely restate what the schema already documents. Baseline 3 applies since the schema carries parameter meaning and the description adds no format or edge-case detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (gas price history on zkSync Era via eth_feeHistory) and enumerates the exact returned quantities: base fee in gwei, block fullness, 10th/50th/90th percentile priority fees, and low/average/high base fee. It explicitly distinguishes itself from the sibling zksync_gas (current price only), so the agent can route without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete decision contexts (judge whether fees are rising, pick a priority fee, time a transaction) and names the alternative tool plus the condition that selects it: for the current price alone use zksync_gas. This is explicit when-to-use and when-to-use-something-else guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zksync_is_contractzkSync is-contract checkARead-onlyInspect
Check whether a 0x address on zkSync Era is a smart contract or a plain wallet: bytecode size, and whether it is an EIP-1167 minimal proxy and which implementation it points to. Use before sending funds or approving a spender; for a fuller risk verdict use check_counterparty. A malformed address is rejected with 400, uncharged. Example: address=0x1d17CBcF0D6D143135aE902365D2E5e2A16538D4. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, openWorld, non-idempotent, non-destructive), the description discloses error handling ('malformed address is rejected with 400, uncharged'), pricing ($0.01/call via x402 USDC or a card key, first 25 free, failed calls free), and the billing consequence of non-idempotency ('each call is charged, so repeats are not free'). That is exactly the extra context annotations cannot carry, and it is consistent with them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and return content are front-loaded, and the pricing/error sentences carry real decision value. The closing clause 'Reads or computes only and changes nothing' partly restates readOnlyHint=true and could be trimmed, keeping it just short of full marks.
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 no output schema, the description still describes what the call returns (contract-vs-wallet determination, bytecode size, minimal-proxy detection and implementation). Combined with cost, error behavior, and the alternative for deeper risk analysis, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage, so the schema already documents 'address'. The description only adds a concrete example value, which is mildly useful for format confirmation but adds no new semantics such as checksum requirements or accepted address forms.
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 names a specific verb (check), the resource (a 0x address on zkSync Era), and the outcome domain (contract vs. plain wallet), then enumerates what is returned: bytecode size and EIP-1167 minimal-proxy status plus implementation. An agent can distinguish this from other chain-prefixed siblings and from generic proxy tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete when-to-use ('before sending funds or approving a spender') and routes to a named alternative ('for a fuller risk verdict use check_counterparty'). It does not clarify its boundary against the sibling zksync_proxy, which also surfaces proxy information, so the routing is strong but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zksync_logszkSync event logsARead-onlyInspect
Recent contract event logs on zkSync Era (eth_getLogs): the events a contract emitted over the last N blocks (1-1,000, default 50), optionally filtered by topic0 (the 0x 32-byte event signature hash). Returns up to 100 logs with block, transaction hash and topics. Use to watch transfers or contract events; for one transaction's outcome use zksync_receipt. Example: address=0x1d17CBcF0D6D143135aE902365D2E5e2A16538D4. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | No | How many recent blocks to scan (1-1000, default 50) | |
| topic0 | No | Optional 0x event signature hash to filter by | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld/non-destructive, and the description adds genuinely new context: pricing ($0.01/call, first 25 free, failed calls free) and the fact that repeats are charged, which is consistent with idempotentHint=false. It omits caveats like pagination beyond the 100-log cap or rate limits, but the added billing and result-cap behavior is substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core behavior, limits, and alternative tool are front-loaded in the first two sentences; the example and pricing follow. It is slightly dense with billing detail, but every sentence carries useful information and nothing is buried.
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 no output schema, the description correctly states the return shape (up to 100 logs with block, transaction hash, and topics) and the scan limits. Combined with annotations and full schema coverage, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description clarifies that topic0 is a 0x 32-byte event signature hash and repeats the 1-1000/default-50 block range plus an address example, but these largely restate schema fields rather than adding new 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?
Names a specific resource and scope: recent contract event logs on zkSync Era via eth_getLogs, with block range, topic0 filtering, and return contents. It explicitly separates itself from zksync_receipt ('for one transaction's outcome use zksync_receipt'), so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an affirmative use case ('watch transfers or contract events') and a named alternative with the condition that selects it (zksync_receipt for one transaction's outcome). Nothing material is left to inference for the main disambiguation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zksync_nft_balanceNFT balance, zkSyncARead-onlyInspect
How many NFTs of one ERC-721 collection a wallet holds on zkSync Era (balanceOf), with the collection's name and symbol. Use to check a holder before a token-gated action or to see whether a wallet still holds a collection; for who holds one token id use zksync_nft_owner. Both inputs are 0x addresses; a missing contract is 404, a contract that is not ERC-721 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet address | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/destructive annotations: it discloses error semantics (404 for a missing contract, 422 for a non-ERC-721 contract), that failed calls are uncharged, the pricing model ($0.01/call via x402 USDC or card key, first 25 free), and that repeats are not free — which explains the otherwise puzzling idempotentHint=false for a read. Read-only nature is restated ('reads or computes only and changes nothing').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then the sibling routing, then parameter/error constraints, then pricing — a sensible order. It is dense and the pricing/refund clause is long, but each clause carries information an agent needs (error codes, cost, non-free repeats).
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 2-param read tool with no output schema, the description still says what comes back (count plus collection name and symbol), how failures surface, and what it costs. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description adds meaning by stating both inputs are 0x addresses and by constraining the contract to an ERC-721 collection (non-ERC-721 yields 422). It does not add format examples or checksum guidance, so it stops short of the top mark.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: count of NFTs held in one ERC-721 collection on zkSync Era, naming the underlying call (balanceOf) and the returned metadata (name, symbol). It also explicitly distinguishes itself from the sibling zksync_nft_owner ('for who holds one token id use ...'), so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases (checking a holder before a token-gated action, verifying a wallet still holds a collection) and names the exact alternative plus the condition that selects it (per-token-id ownership). The when-not case is implicit in that routing sentence but is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zksync_nft_metadataNFT metadata, zkSyncARead-onlyInspect
NFT metadata on zkSync Era: the token URI of one ERC-721 token id (tokenURI) and the JSON it points to (name, description, image, attributes), read from data: URIs, https or ipfs:// (through ipfs.io). Strings over 1,000 characters, such as on-chain SVG images, are shortened. Use to show or check what an NFT is; for its owner use zksync_nft_owner. A token that does not exist is 422, uncharged; unreachable metadata is reported in metadataError. Example: contract=0x0616e5762c1E7Dc3723c50663dF10a162D690a86, tokenId=1. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | Token id, a whole number | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: describes truncation of strings over 1,000 characters, a 422 uncharged response for nonexistent tokens, a metadataError for unreachable sources, and that each call is charged so repeats are not free (which explains idempotentHint=false). No contradiction with readOnlyHint or destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the network, resource and resolution sources, then states usage, error behavior, an example, and pricing. Dense but well ordered; the pricing/payment sentence is long and slightly overpacked, keeping it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still explains the return shape (tokenURI plus name, description, image, attributes), the supported URI schemes including ipfs via ipfs.io, truncation behavior, and both failure modes. An agent has everything needed to call it and interpret the result.
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 both parameters are already documented, and the description only restates contract as an ERC-721 collection address. The worked example (contract=0x0616..., tokenId=1) adds a little concreteness but no new semantics beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reads the tokenURI of one ERC-721 token id plus the JSON it resolves to on zkSync Era. It also explicitly contrasts with the sibling zksync_nft_owner, so an agent can pick between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use to show or check what an NFT is; for its owner use zksync_nft_owner" gives a clear when-to-use plus a named alternative. It does not mention other adjacent siblings like zksync_nft_balance, but the primary routing decision is covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zksync_nft_ownerzkSync NFT ownerARead-onlyInspect
Owner of an NFT on zkSync Era: the wallet that holds one ERC-721 token id right now (ownerOf), plus the collection's name and symbol. Use to verify who holds an NFT before a trade, a mint gate or an airdrop; for how many a wallet holds use zksync_nft_balance, for the token's metadata zksync_nft_metadata. A missing contract is 404, a token that does not exist 422, both uncharged. Example: contract=0x0616e5762c1E7Dc3723c50663dF10a162D690a86, tokenId=1. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | Token id, a whole number | |
| contract | Yes | 0x ERC-721 collection contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, destructiveHint=false, idempotentHint=false, openWorldHint), but the description adds real operational context beyond them: error semantics (404 for a missing contract, 422 for a nonexistent token, both uncharged), result contents, and per-call pricing with the first 25 free. 'Each call is charged, so repeats are not free' reinforces and explains the idempotentHint=false annotation rather than 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?
Front-loads the definition before use cases, alternatives, errors, and pricing, so the most important sentence comes first. The single dense paragraph mixes pricing and error codes into the semantic description, which slightly hurts scannability, but no sentence is wasted 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?
No output schema exists, yet the description states what is returned (owner, name, symbol), what failure looks like (404/422), and the cost model — everything an agent needs to decide on and interpret a call. Nothing material is missing for a two-parameter read 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?
Schema coverage is 100%, so the baseline is 3; the description earns a bump by constraining contract to an ERC-721 collection and supplying a concrete address/tokenId example that disambiguates the tokenId union type (string | number | boolean) in practice. It does not, however, state whether tokenId must be decimal vs hex, which is the one gap the schema leaves.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource — 'ownerOf' for one ERC-721 token id on zkSync Era — and states the returned fields (owner address, collection name, symbol). It also explicitly separates itself from zksync_nft_balance and zksync_nft_metadata, so an agent can pick it out of the large sibling namespace without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use cases (pre-trade verification, mint gate, airdrop) and names both alternatives with the condition that selects them: balance for counts, metadata for token metadata. Remaining ambiguity is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zksync_noncezkSync nonce, account nonceARead-onlyInspect
Read the transaction count (nonce) of a 0x address on zkSync Era, both confirmed and including pending transactions. Use to build the next transaction or to tell whether an address has ever sent anything; for its balance use zksync_balance. A malformed address is rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive, open-world and non-idempotent behavior, and the description reinforces them with real detail: pending vs confirmed scope, a 400 rejection for malformed addresses that is explicitly uncharged, and per-call pricing including free failures, which explains why idempotentHint=false matters. It stops short of saying how confirmed and pending counts are returned (one value or two), leaving a small behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and use cases, then validation, example, and pricing. The pricing message is stated twice ("first 25 free; failed calls free" and "each call is charged, so repeats are not free"), which is mild redundancy but each sentence still carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description covers purpose, alternatives, error handling, and cost. The main missing piece is the return shape for the confirmed versus pending counts, which an agent would need to interpret the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 100% schema coverage, the baseline is 3; the description adds a concrete valid address example and the validation behavior for malformed input, which is meaning the schema does not carry. It does not add further format constraints (e.g. checksum requirements), so it is not a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Read the transaction count (nonce)") scoped to a named chain (zkSync Era) and a specific input shape (0x address). It also distinguishes itself from the sibling zksync_balance, so an agent can separate the two without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases ("build the next transaction" and "tell whether an address has ever sent anything") and explicitly redirects balance lookups to zksync_balance. The when-to-use and the alternative are both stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zksync_proxyProxy implementation, zkSyncARead-onlyInspect
Find the implementation behind a proxy contract on zkSync Era: reads the EIP-1967 implementation, beacon and admin slots, EIP-1822 (UUPS), the older OpenZeppelin layout and EIP-1167 minimal-proxy bytecode, and names the kind found. Use before trusting or decoding a contract whose code can be swapped by its admin; for a fuller risk verdict use contract_risk. A malformed address is 400; an address without code is 404, both uncharged. Example: address=0x1d17CBcF0D6D143135aE902365D2E5e2A16538D4. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive/non-idempotent, so the safety profile is covered. The description usefully adds error semantics (400 malformed, 404 no code, both uncharged) and the billing model (per-call charge, 25 free calls, failed calls free), which meaningfully explains the non-idempotent hint. It does not describe the shape of the returned result (detected kind, addresses) beyond mentioning it 'names the kind found'.
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?
Detection scope is front-loaded, then usage, then error/pricing behavior. Dense and mostly earned, though the pricing/credits sentence is long and could be trimmed without losing the decision-relevant point that repeats cost money.
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?
No output schema exists, but the description covers what is inspected, what is returned at a high level ('names the kind found'), failure modes with status codes, and cost. A brief note on what a non-proxy address returns would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 100% schema coverage, so the schema already carries the burden and the baseline is 3. The description adds a concrete example address, which pins down the expected 0x-prefixed format beyond the schema's terse '0x contract address'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Find the implementation behind a proxy contract on zkSync Era') and enumerates exactly which storage slots/standards it detects (EIP-1967 impl/beacon/admin, EIP-1822 UUPS, legacy OZ layout, EIP-1167 bytecode). This clearly distinguishes it from sibling proxy tools for other chains and from generic read tools like zksync_storage or zksync_call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use before trusting or decoding a contract whose code can be swapped by its admin') and names the alternative for a different need ('for a fuller risk verdict use contract_risk'). The agent knows both when to pick this tool and when to route elsewhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zksync_receiptzkSync Era transaction receiptARead-onlyInspect
Transaction receipt on zkSync Era (eth_getTransactionReceipt): success or reverted, gas used, effective gas price, fee paid in ETH, number of event logs and any contract created. Use to confirm a payment or call went through; for sender, value and calldata use zksync_tx. Input is a 0x-prefixed 64-hex hash; a pending or unknown hash returns 404, uncharged. Example: hash=0xc0003ffe194dfc1be40e1b1e6dfdf7609f89cc1393ff774dcd657f226558c5b3. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, and the description adds genuinely useful non-schema facts: a pending or unknown hash returns 404 uncharged, pricing at $0.01/call with first 25 free, failed calls free, and that repeats are charged (which motivates idempotentHint=false). That is real added context, but the price/auth material is commercial boilerplate rather than tool behavior; a 3 reflects solid but partly promotional disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and return fields are correctly front-loaded, but the tail of the description dilutes into pricing, payment rails, and free-tier policy. That information is useful once but crowds out nothing structurally and is longer than needed for a single-parameter read tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one required parameter and no output schema, the description compensates by listing exactly which receipt fields are returned, plus the failure mode (404, uncharged) and the sibling to use for other fields. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents the hash format, so the baseline is 3. The description adds a concrete worked example hash ('0xc0003ffe...'), which makes the expected 0x-prefixed 64-hex shape unambiguous and is worth a point above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Transaction receipt on zkSync Era (eth_getTransactionReceipt)') and enumerates what it returns: status, gas used, effective gas price, fee in ETH, log count, contract created. It explicitly contrasts itself with the sibling zksync_tx, so an agent can route between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case ('confirm a payment or call went through') and names the alternative with its selection condition ('for sender, value and calldata use zksync_tx'). The pending/unknown hash behavior is also stated, so failure conditions are predictable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zksync_storageStorage slot read, zkSyncARead-onlyInspect
Read one raw storage slot of a contract on zkSync Era (eth_getStorageAt): the 32-byte word, as a number and, when it holds one, as an address. Slot is a decimal index or a 0x 32-byte key (mapping and proxy slots). Use to inspect contract state that has no getter, owners or implementation pointers; for proxies use zksync_proxy. A malformed address or slot is rejected with 400, uncharged. Example: address=0x1d17CBcF0D6D143135aE902365D2E5e2A16538D4. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | Slot: a decimal index (0, 1, 2…) or a 0x 32-byte key | |
| address | Yes | 0x contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses the return shape (32-byte word as a number and conditionally as an address), malformed-input behavior (400, uncharged), failure charging, and pricing. These details materially help an agent understand cost and error semantics for this read-only call.
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 and slot semantics before moving to usage, error behavior, and pricing. It is dense but mostly earns its space; the pricing sentence is relevant but makes the description longer than strictly necessary.
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 two-parameter read-only tool with no output schema, the description covers purpose, slot format, return shape, alternative tooling, error behavior, and charging. An agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already defines both parameters. The description adds useful context by explaining that slot values may be mapping or proxy slots and by giving an example address format, going slightly beyond the schema text.
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 names a specific verb and resource — reading one raw storage slot of a contract on zkSync Era — and explicitly maps it to eth_getStorageAt. It also distinguishes the tool from zksync_proxy, so an agent can choose correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit usage condition: inspect contract state that has no getter, owners, or implementation pointers. It also names the alternative zksync_proxy for proxy-related work, which is exactly the sibling-routing guidance needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zksync_token_balancezkSync Era ERC-20 balanceARead-onlyInspect
ERC-20 token balance of a wallet on zkSync Era (USDC, USDT, WETH or any token, via balanceOf): raw amount, decimals, symbol and the human-readable amount, live from the token contract. Use to check stablecoin or token holdings before a transfer or trade; for the native coin use zksync_balance. Both inputs are 0x addresses (40 hex characters); no contract returns 404 and a non-ERC-20 contract 422, both uncharged. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC, USDT, WETH or DAI, or the 0x ERC-20 contract address | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/destructive/openWorld, and the description adds real context on top: returned fields (raw amount, decimals, symbol, human-readable amount), error codes for missing or non-ERC-20 contracts, that failures are uncharged, pricing via x402 or credits, and that repeats are charged (consistent with idempotentHint=false). It stops short of describing pagination/edge cases like unverified tokens, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A dense but well-ordered paragraph: what it returns, when to use it, the sibling alternative, input/error semantics, then cost. Nearly every sentence carries a fact an agent needs, though the pricing and repeat-charging sentences could be trimmed without losing selection-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with no output schema, the description supplies everything needed: output shape, alternative tool, address format, error behavior with charges, and cost model. The only gap is the ticker-vs-address tension, which is minor against the overall coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds the 40-hex-character format constraint, which is useful, but its claim that 'both inputs are 0x addresses' conflicts with the schema, which allows the token parameter to be a ticker such as USDC or WETH — an agent could wrongly assume a ticker is rejected.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (ERC-20 token balance of a wallet on zkSync Era) and immediately bounds scope: token holdings, not the native coin. It names the sibling zksync_balance as the tool for the native coin, so an agent can pick correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case (check holdings before a transfer or trade) and an explicit routing rule: 'for the native coin use zksync_balance.' It also states acceptance criteria for inputs and the failure semantics (404/422, uncharged), which is well beyond implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zksync_token_infozkSync token info, ERC-20ARead-onlyInspect
Look up the name, symbol, decimals and total supply of an ERC-20 token contract on zkSync Era, live from the contract. Use to identify an unknown token address or to format raw amounts; for a holder's balance use zksync_token_balance. Input is a ticker (USDC, WETH…) or the token's 0x contract address; an address that is not an ERC-20 contract returns 422, uncharged. Example: token=0x1d17CBcF0D6D143135aE902365D2E5e2A16538D4. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token: a ticker such as USDC or WETH, or the 0x ERC-20 contract address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful non-annotation context: pricing ($0.01/call, first 25 free, failed calls free) and an explicit failure code for non-ERC-20 input. However it does not explain the unusual idempotentHint=false — it says repeats are charged, which is a billing fact rather than whether repeated identical calls return the same 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?
Well front-loaded: purpose first, then use cases, then input format, then pricing. Slightly over-packed — the cost story is stated three times in different forms ("$0.01/call", "each call is charged, so repeats are not free", "failed calls free"), which is mild redundancy in an otherwise dense, waste-free paragraph.
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?
There is no output schema, and the description compensates by enumerating the returned fields (name, symbol, decimals, total supply). For a one-parameter read tool that is essentially complete; the only remaining gap is whether the response is wrapped in a result/metadata envelope or how ticks are resolved when a ticker is ambiguous across chains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single `token` parameter already documents the ticker-or-0x-address union, so the schema carries the load; the baseline of 3 applies. The description adds a concrete example address and the error semantics for an address that is not an ERC-20 contract, which is marginal extra value rather than new parameter syntax.
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 names a specific verb ("look up") and a specific resource set (name, symbol, decimals, total supply) on a specific chain (zkSync Era ERC-20 contracts), and explicitly separates itself from zksync_token_balance. An agent can distinguish this from the dozens of sibling *_token_info tools purely by the chain prefix plus this sentence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives two positive use cases (identifying an unknown token address, formatting raw amounts) and one explicit exclusion with the named alternative ("for a holder's balance use zksync_token_balance"). Failure routing is also specified: a non-ERC-20 address returns 422 and is uncharged, so the agent knows the error is expected rather than fatal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zksync_token_transfersToken transfers, zkSync EraARead-onlyInspect
List a wallet's recent transfers of one ERC-20 token (default USDC) on zkSync Era, in and out, over the last N blocks (1-2,000, default 1,000): direction, counterparty, amount and transaction, newest first, up to 50. Use to confirm a payment arrived or see what was sent; for the current balance use zksync_token_balance. Malformed addresses are rejected with 400, uncharged. Example: address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Token: a ticker such as USDT or WETH, or the 0x ERC-20 contract (default: USDC on this network) | |
| blocks | No | How many recent blocks to scan (1-2000, default 1000; 2,000 blocks is about 33 minutes on zkSync Era) | |
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Consistent with readOnlyHint=true/destructiveHint=false and reinforces it ('Reads or computes only and changes nothing'). Goes well beyond annotations: newest-first ordering, 50-result cap, 400 + uncharged on malformed addresses, failed calls free, and $0.01/call pricing with 25 free calls that makes repeat calls non-free.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns and its scope, then usage routing, then error/pricing behavior. Dense but every sentence carries operational information (defaults, caps, error handling, cost) with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, yet the description fully characterizes the return shape (direction, counterparty, amount, transaction, newest first, up to 50) and the failure mode. An agent has everything needed to call it correctly and to anticipate cost.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still reinforces the token default (USDC on this network), the 1-2,000 block range with default 1,000, and supplies a concrete example address. It does not add much on 'blocks' semantics beyond the schema, so it sits just above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (list a wallet's recent ERC-20 transfers), the network (zkSync Era), direction (in and out), default token (USDC), window (last N blocks), and returned fields. An agent can distinguish it from zksync_token_balance or zksync_logs without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives the use cases ('confirm a payment arrived or see what was sent') and names the alternative for the adjacent question ('for the current balance use zksync_token_balance'). Also states the block-window default and the ~33-minute equivalency for the max, so the agent knows how to size the query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zksync_txzkSync transactionARead-onlyInspect
Look up a zkSync Era transaction by hash: sender, recipient, value in ETH, nonce, gas limit, the 4-byte function selector and its block. Use to see what was sent or whether it exists; for success or failure and fees paid use zksync_receipt, for emitted events zksync_logs. Input is a 0x-prefixed 64-hex hash; an unknown hash returns 404, uncharged. Example: hash=0xc0003ffe194dfc1be40e1b1e6dfdf7609f89cc1393ff774dcd657f226558c5b3. Price $0.01/call via x402 USDC or a card key (/credits), first 25 free; failed calls free. Reads or computes only and changes nothing; each call is charged, so repeats are not free.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | 0x-prefixed transaction hash (64 hex characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/destructive/idempotent annotations, the description adds concrete behavioral facts: an unknown hash returns 404 and is not charged, failed calls are free, the first 25 calls are free, and pricing is $0.01/call via x402 USDC or a card key. The note that each call is charged, so repeats are not free, corroborates idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with purpose and the sibling routing, and the example hash is useful. Some sentences restate annotations ('reads or computes only and changes nothing') and the pricing paragraph is dense, but the information is not 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 single-parameter lookup with no output schema, the description covers return fields, error behavior, cost, and alternatives. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the hash format is already documented; the description reinforces it and adds a real example hash plus the 404 semantics for an unknown hash, which is meaningful beyond the schema. It stops short of describing any normalization of case or malformed-hash behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Look up a zkSync Era transaction by hash') and enumerates the returned fields: sender, recipient, value, nonce, gas limit, function selector and block. It also explicitly distinguishes itself from sibling tools zksync_receipt (status and fees) and zksync_logs (events).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance ('see what was sent or whether it exists') and names the alternatives for adjacent tasks: zksync_receipt for success/failure and fees, zksync_logs for emitted events. There are no significant gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Added
wallet_balance
2 tool updates
- Added
merkle_tree - Added
merkle_verify
1 tool update
- Added
wallet_balance_history
2 tool updates
- Added
wallet_related - Added
wallet_transactions
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityCmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs112 npm29 PyPIMIT
- AlicenseAqualityDmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1623 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.