Skip to main content
Glama

Ekubo Protocol

Server Details

Token and pool data, swap quotes, and unsigned transaction plans for Ekubo and other DeFi protocols.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
EkuboProtocol/ekubo-mcp-server
GitHub Stars
1
Server Listing
Ekubo MCP server
ChatGPT
–
Claude
–

TDQS

B3.4/5.0

Scored across 99 tools

Disambiguation3/5

Most tools are separable by protocol/action prefixes, and descriptions often cross-reference near neighbors such as the different reward-claim tools. However, with 99 tools there is meaningful overlap among protocol-specific liquidity, reward-claim, position-read, and prepare/read-bundle tools, so misselection remains plausible without careful reading.

Naming Consistency5/5

Nearly all tools use snake_case verb_noun naming with protocol qualifiers: get_, list_, prepare_, decode_, derive_, quote_, export_, discover_. Variants like prepare_ve33_claim_fees versus prepare_ve33_claim_all_fees are still predictable and not stylistic clashes.

Tool Count1/5

A 99-tool surface is far beyond the well-scoped 3-15 range and even beyond a heavy 25+ range. Even for a multi-protocol DeFi suite, this is an extreme surface that burdens selection, documentation, and maintenance.

Completeness4/5

The surface covers Ekubo core pools, positions, liquidity, TWAMM, auctions, ve33, rewards, and many third-party protocol actions with few obvious lifecycle holes. Some live data for Aave, Morpho, Merkl, and transaction submission/simulation are intentionally external, leaving minor gaps.

Available Tools

99 tools
decode_pool_configDecode an Ekubo pool configA
Read-only
Inspect

Decode the packed bytes32 extension, exact uint64 Q64 fee, concentrated/stableswap discriminator, and tick spacing or stableswap parameters. The fee is never returned as a JSON number.

NameRequiredDescriptionDefault
configYesbytes32 hex

Output Schema

NameRequiredDescription
feeNo
configNo
fee_hexNo
extensionNo
pool_typeNo
type_configNo
tick_spacingNo
stableswap_paramsNo
discriminator_bit_setNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true and openWorldHint=false. The description adds useful output-behavior context beyond the annotations, notably that the fee is never returned as a JSON number, which prevents an agent from expecting numeric JSON for that field. It still does not describe invalid-config handling or chain-specific behavior, but the added transparency is meaningful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences with no filler. The decoded fields are front-loaded, and the output caveat about the fee follows immediately as relevant supporting context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool takes one required input param, has an output schema, and carries read-only annotations, so the description does not need to explain return shape in full. It is complete enough for an agent to call it correctly, with the fee caveat adding important completeness; only edge-case error behavior is left unmentioned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 'bytes32 hex'. The description adds context about what the packed bytes32 represents internally, but does not add syntax, validation, or formatting details beyond the schema's own description, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: decode a pool config, and enumerates the exact packed fields returned (bytes32 extension, Q64 fee, discriminator, tick spacing/stableswap parameters). That is clearly distinct from sibling tools like get_pool or decode_uniswap_v4_position_info, though it does not explicitly name or contrast an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says what the tool decodes but gives no explicit when-to-use context, prerequisites, or alternatives such as get_pool or derive_pool_id. The agent must infer that this is for raw bytes32 configs rather than general pool lookups.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

decode_uniswap_v4_position_infoDecode Uniswap V4 position infoA
Read-only
Inspect

Decode the packed PositionInfo returned by wallet reads into signed tick bounds, subscriber flag and the truncated pool-ID prefix. This is local integer decoding, not a state query.

NameRequiredDescriptionDefault
infoYesdecimal integer

Output Schema

NameRequiredDescription
tick_lowerNo
tick_upperNo
instructionNo
has_subscriberNo
pool_id_prefixNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true and openWorldHint=false already signal a safe, non-networked operation; the description reinforces this by characterizing the work as local integer decoding rather than a state query. Beyond that reinforcement it adds little about failure modes, e.g. what happens with a malformed or out-of-range integer, and the returned fields are already carried by the 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero filler; the decoded outputs come first and the disambiguating 'not a state query' note closes. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter pure decode function with an output schema and clear read-only annotations, the description is essentially sufficient. A minor gap remains around input expectations (e.g. accepted magnitude, whether the value must come from a specific wallet-read surface), but 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with a single required param ('info', decimal integer), so the baseline is 3. The description does add the provenance of that value — it is the packed PositionInfo returned by wallet reads — which helps an agent source it correctly, but adds no formatting or range guidance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Decode the packed PositionInfo') and immediately enumerates the decoded outputs (signed tick bounds, subscriber flag, truncated pool-ID prefix), so an agent knows exactly what it gets back. The closing clause distinguishes it from the many state-query siblings like get_position and get_positions_by_owner.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The line 'This is local integer decoding, not a state query' implicitly tells the agent to reach for this after a wallet read rather than instead of one, and rules out on-chain lookup. However, it never names the adjacent decoding sibling (decode_pool_config) or states explicitly 'use this when you already have the raw positionInfo value'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

derive_pool_idDerive an Ekubo pool IDA
Read-only
Inspect

Pack or accept an exact PoolKey config and derive pool_id = keccak256(abi.encode(PoolKey)). The uint64 Q64 fee is string-only so JavaScript cannot silently round it.

NameRequiredDescriptionDefault
pool_keyYes

Output Schema

NameRequiredDescription
pool_idNo
pool_keyNo
decoded_configNo
pool_id_decimalNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is largely covered; the description adds that the result is a deterministic keccak256 hash of the encoded key. It does not say what happens with malformed hex, mismatched token ordering, or whether the output is checksummed, so it goes only modestly beyond 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences with the derivation formula front-loaded and no filler. The second sentence on fee string encoding is useful but reads as a schema note rather than tool-level guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one required nested parameter and an output schema that covers the return value, the description supplies the essential computation and the encoding constraint. It could still note the ordering requirement for token0/token1 or the relationship to decode_pool_config, but nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The nested schema already documents token0, token1, fee, config, extension, tick_spacing, and stableswap_params individually, so the schema does most of the work. The description only reinforces that pool_key must be an exact, complete configuration and repeats the fee-as-string rationale already present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and result: derive pool_id = keccak256(abi.encode(PoolKey)) from an exact PoolKey config. That clearly distinguishes it from decode_pool_config and list_pool_keys, though the opening phrase 'Pack or accept' is slightly ambiguous about whether it encodes a supplied key or accepts a pre-packed one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: you need a pool_id and have the PoolKey fields. There is no explicit statement of when to prefer this over decode_pool_config (the inverse) or list_pool_keys, and no prerequisites or failure conditions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discover_uniswap_poolsDiscover Uniswap poolsA
Read-only
Inspect

Fetch indexed V2, V3 or V4 pools ranked by TVL from Uniswap's interface API. Filter by chain and token; paginate using the last pool's TVL as tvl_cursor. Returns token symbols and decimals, liquidity and daily volume.

NameRequiredDescriptionDefault
firstNo
versionYes
chain_idYes
tvl_cursorNo
token_addressNoaddress

Output Schema

NameRequiredDescription
dataNo
errorsNo
sourceNo
partialNo
fetched_atNo
indexed_dataNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, so the description carries most of the burden. It adds the data source (Uniswap interface API), the ordering (ranked by TVL), and the pagination model, which are real behavioral facts an agent needs. It omits caveats such as index freshness 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the core action, then filtering/pagination, then return shape. No filler or redundant restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need little explanation, though it still summarizes them. For a filtered, paginated list tool this covers what an agent needs to call it correctly; the main gap is that it does not state whether pool addresses/IDs are returned, which matters for chaining into get_uniswap_pool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 20% (token_address has a bare 'address' label), so the description must compensate. It does explain the non-obvious tvl_cursor semantics and mentions chain/token filtering, but says nothing about 'first' page-size behavior beyond the schema or the meaning of the chain_id/version enums, leaving half the parameters undocumented in either place.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: fetch indexed V2/V3/V4 pools ranked by TVL from Uniswap's interface API. This is clearly a discovery/list operation, implicitly distinct from single-pool siblings like get_uniswap_pool. However, it never names a sibling tool or explicit boundary, so differentiation is inferred 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete mechanics: filter by chain and token, paginate using the last pool's TVL as tvl_cursor. That is useful operational guidance but there is no when-to-use/when-not guidance, no mention of when to prefer get_uniswap_pool or get_liquidity_opportunities, and no prerequisites stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_tokensExport Ekubo tokens for a walletA
Read-only
Inspect

Return a token_list_reference envelope (chain ID, address, symbol, name, decimals) and its count, with no entries, so a wallet can import token names; pass it unchanged as the wallet tool's reference argument. complete=false means the export is a prefix of the chain's list. Use list_tokens to read entries yourself.

NameRequiredDescriptionDefault
chain_idNoExport only this chain; almost always pass it, since a wallet holds names for the chain it is on. Ethereum alone has about 5,600 tokens
max_tokensNoDefaults to 1,000, what a wallet accepts in one import; a larger export is refused whole, not truncated

Output Schema

NameRequiredDescription
countNo
completeNo
token_list_referenceNoartifact_reference; pass unchanged

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already covers the safety profile, so the description's added value is real: it discloses that the envelope carries 'no entries' (a non-obvious trait) and explains that 'complete=false means the export is a prefix of the chain's list,' which no annotation conveys. It stops short of noting anything about ordering or how the wallet tool consumes the reference beyond 'unchanged,' 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly packed sentences, front-loaded with the return artifact and then the wallet handoff. The phrase 'and its count, with no entries' is momentarily confusing on first read — the count-with-no-entries juxtaposition could be stated more cleanly — but there is no fillers or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and readOnlyHint supplied, the description only needs to cover the handoff and the completeness flag, both of which it does. The reference to 'the wallet tool's reference argument' points at a tool not among the listed siblings, a minor dangling reference the agent must resolve elsewhere.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both chain_id and max_tokens already carry their own guidance (including the ~5,600 Ethereum token note and the whole-refusal behavior). The description adds no syntax or format detail beyond what the schema provides, so the baseline 3 holds.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the exact artifact produced — a 'token_list_reference envelope (chain ID, address, symbol, name, decimals) and its count, with no entries' — rather than a generic 'export'. It also draws a sharp line against the nearest sibling with 'Use list_tokens to read entries yourself,' 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the intended consumer and handoff explicitly: return the envelope 'so a wallet can import token names' and 'pass it unchanged as the wallet tool's reference argument.' It names the alternative (list_tokens) and 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.

get_aave_v3_marketsList fixed Aave V3 marketsA
Read-only
Inspect

Locally return six major Aave V3 core deployments and a bounded set of popular reserve, aToken, and variable-debt-token addresses from a pinned official Aave address-book snapshot. This tool makes no RPC, indexer, API, or other network request. For live rates, caps, pause state, liquidity, collateral settings, eMode categories, and account data, an agent may call Aave's public GraphQL API at https://api.v3.aave.com/graphql directly; this server is not in that data path. Intersect the API result with this fixed list before calling a preparation tool.

NameRequiredDescriptionDefault
chain_idNoOptional exact chain filter. Omit to return every fixed Aave V3 core market supported by the preparation tools.

Output Schema

NameRequiredDescription
sourceNo
marketsNo
protocolNo
limitationsNo
network_accessNo
agent_market_data_discoveryNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=false, and the description reinforces this with an explicit 'no RPC, indexer, API, or other network request' guarantee, plus a pinned-snapshot disclosure that signals possible staleness. That is real added context beyond the annotations. The only shortfall is that it never says how current the snapshot is or how an agent should detect an out-of-date list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core behavior, then the negative guarantee, then the alternative data source and sequencing advice. No filler; every sentence carries decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-shape explanation is unnecessary, and the remaining ambiguity for a zero-required-parameter read tool — is it live data, is it network-bound, what do I do with the result — is fully resolved in the text.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single chain_id parameter is fully documented in the schema, so the schema already carries the semantics. The description adds only the framing that the listed markets are 'supported by the preparation tools', which is a marginal addition over the parameter's own text. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource — locally returns six major Aave V3 core deployments plus a bounded set of reserve/aToken/variable-debt-token addresses from a pinned address-book snapshot. It immediately distinguishes itself from discovery siblings (get_aerodrome_deployment, get_lido_deployment) by framing what is and is not covered, so an agent knows exactly what it gets 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent when NOT to use this tool: live rates, caps, pause state, liquidity, collateral settings, eMode and account data must come from Aave's public GraphQL endpoint, which is named with a URL. It also gives a concrete sequencing instruction — intersect the API result with this fixed list before calling a preparation tool — routing the agent to the prepare_aave_v3_* siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_aerodrome_deploymentGet the verified Aerodrome Base deploymentA
Read-only
Inspect

Locally return Aerodrome's Base contracts (AERO, veAERO, Voter, Router, v2 factory, RewardsDistributor, Slipstream, Sugar lenses), derived on chain from the Voter, plus the protocol behaviour an agent must respect. No API or RPC request. Aerodrome is Base-only; Velodrome is not prepared here.

NameRequiredDescriptionDefault
chain_idNoOptional chain to check against Aerodrome's Base-only deployment

Output Schema

NameRequiredDescription
sourceNo
protocolNo
deploymentNo
limitationsNo
network_accessNo
agent_market_data_discoveryNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true; the description adds genuinely new behavior: the data is resolved locally with no API or RPC round-trip, and it carries protocol behavior rules the agent must respect. It does not say what happens when chain_id points at a non-Base chain, but that is a minor gap against an otherwise informative disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and the returned contract list, then the two caveats in short sentences. The phrase 'plus the protocol behaviour an agent must respect' is slightly vague and could be sharper, but there is no filler overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-optional-param read tool with an output schema, the definition covers contents, locality, and scope limits. The only unaddressed case is the outcome of a mismatched chain_id, which the agent would have to discover at call time.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single optional chain_id, so the baseline is 3. The description reinforces the Base-only constraint ('Aerodrome is Base-only'), which hints at why chain_id exists, but adds no format or validation detail beyond the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Locally return Aerodrome's Base contracts') and then enumerates the exact contents (AERO, veAERO, Voter, Router, v2 factory, RewardsDistributor, Slipstream, Sugar lenses). The explicit 'Aerodrome is Base-only; Velodrome is not prepared here' line separates it from deployment lookups for other protocols.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operating context ('No API or RPC request', data derived on chain from the Voter) and an explicit exclusion (Velodrome is not covered), which tells an agent when this tool does not apply. It stops short of naming the sibling it complements — e.g., that it should precede prepare_aerodrome_* calls — so the routing to alternatives is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_lido_deploymentGet the fixed Lido mainnet deploymentA
Read-only
Inspect

Locally return canonical Ethereum stETH, wstETH, and WithdrawalQueueERC721 addresses plus direct wallet-read guidance. This server makes no Lido API, RPC, or indexer request.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
sourceNo
protocolNo
deploymentNo
limitationsNo
network_accessNo
agent_market_data_discoveryNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, yet the description adds genuinely new behavioral context: the data is served locally and no Lido API, RPC, or indexer request is made, which tells the agent the addresses are static/fixed rather than live-queried. It could go one step further by saying the values are mainnet-only and immutable, but the key behavioral trait is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler: the first front-loads what is returned, the second immediately qualifies the network behavior. Nothing is repeated from the title or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 need not enumerate return values, and with zero parameters there is no input surface to explain. The remaining gap is minor: it never states the deployment is fixed to Ethereum mainnet (only the title does) or that the addresses are stable over time.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. No misleading parameter hints are present.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ("Locally return") and an exact resource set (canonical Ethereum stETH, wstETH, and WithdrawalQueueERC721 addresses), which separates it from the prepare_lido_* siblings that build transactions. It stops short of explicitly contrasting itself with the other deployment tools (get_aerodrome_deployment, get_sky_savings_deployment, get_uniswap_deployments), relying on the token names to do that work.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: "plus direct wallet-read guidance" hints the tool is for resolving addresses before a manual wallet interaction, but there is no explicit statement of when to call this instead of prepare_lido_stake/wrap/withdrawal_request. No exclusions or prerequisites are given, so the agent must infer the call context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_liquidity_opportunitiesFind Ekubo liquidity opportunitiesA
Read-only
Inspect

Return the interface's boosted-fee, incentive and projected ve(3,3)-emission opportunities ranked by APR, with actionable pools or pool-discovery handoffs, freshness and risk context. Call this before asking the user to choose a pair. APR is an annualized snapshot, not guaranteed yield: show its components, denominator, freshness, and range and impermanent-loss risk. If ranking_complete=false, run local_read_requirement through the wallet, decode it locally, and call again with ve33_emission_state.

NameRequiredDescriptionDefault
limitNo
tokenNoToken in the pair (EVM or Starknet) (hex)
typesNoDefaults to all
min_aprNoAPR ratio floor; 1.0 = 100%
chain_idNoOmit for every chain
ve33_emission_stateNo{current_timestamp, current_emission_rate, total_remaining_emissions}: decimal strings decoded locally from getEmissionState (rate is Q32) via local_read_requirement; omit on the first call

Output Schema

NameRequiredDescription
local_read_requirementNo

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only supply readOnlyHint=true; the description adds substantial context beyond that: APR is an annualized snapshot rather than guaranteed yield, its components/denominator/freshness/range must be surfaced, impermanent-loss risk matters, and a partial ranking is signalled by ranking_complete=false requiring a follow-up call. The two-pass protocol with local decoding is behavior an agent could not infer from the schema or annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the return contract before the cautionary yield guidance and the retry protocol. Dense jargon ('boosted-fee', 've(3,3)') is unavoidable domain vocabulary, and every sentence carries a distinct instruction; slight compression could still improve it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, annotations covering safety, and 83% schema coverage, the description fills the remaining gaps: precedence in the conversation flow, yield-caveat handling, and the partially-ranked retry path. What it leaves implicit is how chain/token/type filters interact with ranking or what a 'pool-discovery handoff' looks like, but that is modest given an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 83% and the ve33_emission_state parameter is already fully documented in the schema, so the description adds little parameter-level meaning. It never explains how token, chain_id, types, min_apr or limit shape the ranking beyond the obvious. Baseline 3 is appropriate when the schema carries the semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ('Return ... boosted-fee, incentive and projected ve(3,3)-emission opportunities ranked by APR') and enumerates the payload (actionable pools or pool-discovery handoffs, freshness, risk context). That is specific enough to separate it from lookup siblings like get_pool_liquidity or get_ve33_allocations, which return single-pool or allocation data rather than a ranked opportunity list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit sequencing rule ('Call this before asking the user to choose a pair') and a concrete conditional loop: if ranking_complete=false, run local_read_requirement through the wallet, decode locally, and re-call with ve33_emission_state. It does not name competing siblings it should be preferred over, 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.

get_merkl_deploymentGet the verified Merkl Distributor deploymentA
Read-only
Inspect

Locally return the Merkl Distributor address, the chains it is verified on, and how Merkl's reward fields behave; preparation is limited to those chains. No Merkl API, RPC, or indexer request.

NameRequiredDescriptionDefault
chain_idNoOptional chain to check against the verified Merkl Distributor catalog

Output Schema

NameRequiredDescription
sourceNo
protocolNo
deploymentNo
limitationsNo
network_accessNo
agent_market_data_discoveryNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, so the description adds real value by specifying that everything is resolved locally and that 'No Merkl API, RPC, or indexer request' is made, plus that preparation scope is bounded by the verified chains. It does not discuss caching, staleness of the local catalog, or what happens for an unverified chain_id, which keeps it 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence returns the resource first and the constraints afterward, with no filler. The phrase 'how Merkl's reward fields behave' is slightly abstract but is the only soft spot in an otherwise tight definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Return values need no explanation since an output schema exists, and the readOnly annotation covers safety, so the description's remaining burden is scope and locality, both of which it addresses. Only the missing pointer to the reward-preparation tools it feeds leaves a small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single optional parameter and the schema already documents it at 100% coverage ('Optional chain to check against the verified Merkl Distributor catalog'). The description's mention of verified chains echoes rather than extends that, so no meaning is added beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Locally return') and names exactly what comes back: the Merkl Distributor address, the chains it is verified on, and how Merkl's reward fields behave. That is enough to tell it apart from sibling deployment tools such as get_aerodrome_deployment and get_lido_deployment, though it never explicitly contrasts itself with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'preparation is limited to those chains' implies this is a setup/verification step preceding Merkl reward preparation, but the description never names prepare_merkl_claim or any alternative, and never states when not to call it. The usage context is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_morpho_vaultsList fixed Morpho Vault V2 deploymentsA
Read-only
Inspect

Locally return a bounded, pinned catalog of listed Morpho Vault V2 deployments plus official direct-discovery guidance. This tool makes no API, RPC, indexer, or other network request. The agent must query Morpho's public GraphQL API and current onchain state directly, then intersect the result with the fixed chain, vault, and asset addresses before preparation.

NameRequiredDescriptionDefault
chain_idNoOptional exact chain filter for the fixed Morpho Vault V2 catalog

Output Schema

NameRequiredDescription
sourceNo
vaultsNo
protocolNo
limitationsNo
network_accessNo
agent_market_data_discoveryNo

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=false, and the description reinforces this with an unambiguous statement that no API, RPC, indexer, or network request occurs. It goes further by telling the agent it must supply its own discovery from external sources, which is exactly the behavioral surprise an agent needs flagged.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core fact (local, bounded, pinned catalog) followed by the no-network constraint and the agent's required follow-up work. Nothing is redundant, though 'official direct-discovery guidance' is somewhat vague phrasing that could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single optional filter and an output schema that already describes return values, the description covers the essential behavior: locality, no network access, and the required intersection step. It could say more about how extensive the fixed catalog is or what happens when a requested chain is absent, but the gaps are minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single chain_id parameter is fully documented there as an exact filter on the fixed catalog. The description mentions intersecting with 'fixed chain, vault, and asset addresses' but adds no syntax or format detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb-plus-resource: it returns a local, bounded, pinned catalog of listed Morpho Vault V2 deployments. The scope qualifiers ('bounded', 'pinned', 'listed', 'V2') separate it cleanly from sibling tools like prepare_morpho_vault_deposit and from a live-chain query tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear usage context: use this for the static catalog, then query Morpho's GraphQL API and onchain state yourself and intersect against the fixed addresses before preparation. It implies the pre-step role before the prepare_morpho_vault_* siblings without naming them explicitly, so the routing signal is strong but not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_poolGet an Ekubo poolA
Read-only
Inspect

Resolve a chain/core/pool ID to its verified PoolKey, decoded config and indexed pool state. For fresh sqrtRatio, tick and liquidity, pass current_state_query.read_calls_reference unchanged to wallet_batch_eth_call.

NameRequiredDescriptionDefault
pool_idYesPool ID (decimal or 0x-hex integer)
chain_idYesEVM chain ID
core_addressYesaddress

Output Schema

NameRequiredDescription
current_state_queryNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so safety is covered; the description adds the important behavioral caveat that returned state is indexed (i.e., potentially stale) and prescribes a concrete follow-up path for fresh values. No auth, rate-limit, or failure-mode context is given, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both earning their place: the first states inputs and outputs, the second delivers the actionable caveat. The follow-up call guidance is front-loaded enough to be read before invoking.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the description covers the one thing the schema cannot: that the state is indexed and how to refresh it. What remains missing is how this differs from adjacent pool tools (list_pool_keys, get_pool_liquidity).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with pool_id, chain_id and core_address all documented in the schema itself. The description only echoes the field names in prose and adds no format or constraint detail, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses a specific verb ("Resolve") on a specific resource (chain/core/pool ID) and names the concrete outputs: verified PoolKey, decoded config, indexed pool state. This implicitly separates it from list_pool_keys and derive_pool_id, but no sibling is named explicitly, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear conditional: use this for indexed state, and route to wallet_batch_eth_call with current_state_query.read_calls_reference when fresh sqrtRatio/tick/liquidity are required. It does not address alternatives like get_pool_liquidity or list_pool_keys, so the when-not guidance is partial rather than exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pool_liquidityGet Ekubo pool liquidity depthA
Read-only
Inspect

Return tick-level net liquidity deltas for one exact chain/core/pool ID. Accumulate the deltas in ascending tick order to reconstruct active liquidity depth.

NameRequiredDescriptionDefault
pool_idYesPool ID (decimal or 0x-hex integer)
chain_idYesEVM chain ID
core_addressYesaddress

Output Schema

NameRequiredDescription
pool_idNo
chain_idNo
core_addressNo
pool_id_decimalNo
liquidity_deltasNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint already covers the safety profile, and the description adds genuinely non-obvious behavior: the response is per-tick net deltas, not cumulative liquidity, and must be accumulated in ascending tick order to reconstruct depth. That prevents a serious misinterpretation. It omits response size/pagination concerns, which matter for tick-level data on a large pool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, with the resource and scope front-loaded and the interpretation rule immediately after. Nothing is redundant with the structured fields in a wasteful way.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value documentation is not required, and the description still supplies the one interpretive fact an agent needs (deltas must be accumulated). Only response-volume/pagination guidance is missing, which is minor for a read-only tool whose schema is fully documented.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 that the three identifiers must designate exactly one pool and must be mutually consistent (chain/core/pool), which is a small addition over the per-field schema text, but it adds no format or validation detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb and resource: 'Return tick-level net liquidity deltas' scoped to 'one exact chain/core/pool ID.' It is clear this returns raw deltas rather than a computed depth figure. It does not name a sibling (e.g., get_uniswap_pool_ticks or get_pool) to disambiguate, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage via the exact-match scoping ('one exact chain/core/pool ID') and via the instruction to accumulate deltas, which tells the agent what the output is good for. However, it never states when to prefer this over sibling readers like get_pool or get_uniswap_pool_ticks, and no exclusions or prerequisites are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_positionGet complete Ekubo position detailsA
Read-only
Inspect

Hydrate one owner position: pool key, bounds, liquidity, pool state, NFT metadata, history, rewards, token prices, and a pending read of current principal, fees or Ve33 rewards and owner. Pass current_state_query.read_calls_reference as a value to wallet_batch_eth_call in the same code block; current_state_query.state_call_id joins results[].id.

NameRequiredDescriptionDefault
ownerYesCurrent owner (address)
chain_idYesEVM chain ID
token_idYesPosition NFT ID (decimal or 0x-hex integer)
positions_addressYesEkubo Positions or Ve33Positions manager (address)

Output Schema

NameRequiredDescription
current_state_queryNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses that the tool includes a pending current-state read and explains how to resolve it with wallet_batch_eth_call and state_call_id joining. It does not cover error behavior, prerequisites, or limits, but the operational follow-up detail is substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the core action, with a necessary second sentence explaining the current_state_query handoff. The first sentence is dense with returned fields, which slightly reduces readability, but there is little unnecessary wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only position-detail tool with an output schema and 100% input schema coverage, the description covers the key behavior and the non-obvious wallet_batch_eth_call follow-up. It is nearly complete, though it lacks explicit sibling routing and does not clarify whether current_state_query is always present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four required inputs are already documented in the schema. The description does not add syntax, constraints, or selection meaning for owner, chain_id, positions_address, or token_id beyond what the schema provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: hydrate one owner position, and enumerates the included data such as pool key, bounds, liquidity, metadata, history, rewards, and prices. It implicitly distinguishes single-position hydration from bulk lookup via 'one owner position', but it does not explicitly name distinguishing siblings like get_positions_by_owner.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives procedural guidance for resolving current_state_query via wallet_batch_eth_call in the same code block, which is useful. However, it does not state when to choose this tool over get_positions_by_owner or get_position_pool_candidates, so alternatives remain implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_position_pool_candidatesFind pools for an LP positionB
Read-only
Inspect

List indexed pools for a token pair with verified PoolKeys and pool IDs, Core generation, pool type, extension, 24-hour TVL/volume/fee stats and the right Positions or Ve33Positions manager.

NameRequiredDescriptionDefault
token_aYesEither order (address)
token_bYesaddress
chain_idYesEVM chain ID
extensionNoaddress
pool_typeNo
min_tvl_usdNoTVL floor; default 0 keeps tiny pools visible
core_addressNoaddress

Output Schema

NameRequiredDescription
pairNo
tokensNo
chain_idNo
candidatesNo
candidate_countNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already covers the safety profile, so the description only needs to add context beyond that. It implies a filtering behavior by emphasizing 'verified PoolKeys' and 'indexed' pools, which usefully suggests unverified pools are excluded, but it says nothing about result ordering, limits, empty-result behavior, or whether the token order actually matters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single front-loaded sentence with no filler, but the long comma chain of return fields reads as a run-on inventory and could be tightened. The most decision-relevant information (token pair + indexed pools) does come first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter discovery tool with an output schema, the definition is serviceable but spends most of its words describing return contents that the output schema already defines, while omitting the usage guidance and filter behavior an agent actually needs. It is adequate, not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 86% schema description coverage, the schema already explains most parameters, and min_tvl_usd even documents its default. The description's mentions of 'pool type', 'extension', and 'Core generation' loosely map to pool_type, extension, and core_address but add no semantics, and it never addresses the token_a/token_b order tolerance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 ('List indexed pools for a token pair') and enumerates distinguishing content such as verified PoolKeys, Core generation, and the Positions/Ve33Positions manager. That is enough for an agent to tell it apart from a plain pool lookup, though it never names the siblings it replaces or complements (e.g., get_pool, list_pool_keys, discover_uniswap_pools).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance and no named alternative. The only routing signal is the title's 'for an LP position', which implies this is a discovery step before prepare_lp_position_deposit, but the description itself never says so or states prerequisites such as whether a position must already exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_positions_by_ownerGet Ekubo positions by ownerB
Read-only
Inspect

Enumerate an owner's indexed Ekubo position NFTs with pool keys, bounds, liquidity, indexed pool state and rewards. For fresh onchain state, pass each current_state_reads[].read_calls_reference to wallet_batch_eth_call as a value in the same code block; each position's current_state.state_call_id joins results[].id.

NameRequiredDescriptionDefault
pageNo
ownerYesaddress
stateNo
chain_idNoEVM chain ID
page_sizeNo

Output Schema

NameRequiredDescription
current_state_readsNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already tells the agent this is a safe read, so the lower bar applies. The description adds genuinely useful behavior beyond that: results are indexed (potentially stale) and a companion fresh-read path exists via state_call_id / results[].id joining. It stops short of saying how fresh the index is or what an empty result means, so it lands at 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the what-and-what-returns comes first, the fresh-state escape hatch second. Dense identifier notation but nothing is filler; the only cost is that the second sentence requires decoding for an agent unfamiliar with the join keys.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be spelled out, and safety is covered by annotations. However, for a tool with five parameters including state and chain filters, the description omits any guidance on filtering, pagination, or cross-chain behavior, which leaves a meaningful gap for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 40% (owner is just "address", page/page_size/state/chain_id carry no descriptions), so the description needed to compensate and does not — no parameter is explained. The only identifiers discussed (read_calls_reference, state_call_id) belong to the response shape, not the input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Enumerate") and resource ("an owner's indexed Ekubo position NFTs") plus the payload contents (pool keys, bounds, liquidity, pool state, rewards), which clearly separates this list-by-owner tool from the single-position sibling get_position. It does not explicitly name a sibling to contrast against, keeping it just below a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit conditional workflow: when fresh onchain state is needed, pass each current_state_reads[].read_calls_reference into wallet_batch_eth_call. That is real when-to-use guidance with a named alternative. It does not cover the state (opened/closed) filter or pagination choices, so exclusions are incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_quotes_with_plansGet swap or bridge quotes with execution plansA
Read-only
Inspect

A quote, execution plan, simulation or wallet approval is not permission to trade. Robinhood Stock Tokens are tokenised debt securities subject to issuer restrictions and applicable law. Before requesting signatures or submitting approvals or trades, establish the user's relevant jurisdiction and eligibility, including location, residence or entity incorporation, US-person status under Regulation S, any person for whose account or benefit the transaction is made, and issuer Prohibited Investor restrictions. Never infer these facts from an agent or server IP. If required facts or asset-policy coverage are unknown, do not proceed. Only the user or an authorized representative of the actual investor may provide an explicit factual attestation; an agent must not attest on their behalf. A known prohibited fact cannot be overridden by attestation. An attestation is not a license, legal exemption or substitute for required screening. Keep the attestation client-side; do not send it to the quote API or MCP server. No blanket disposal exemption applies. Quote EVM swaps: Ekubo/0x same-chain; Across/LayerZero/LI.FI cross-chain. For plans, supply sender and exactly one protection: whole slippage_bps or exact-input max_output_loss in output base units. Omit all three for indicative quotes. Pass the chosen execution.execution_plan_reference unchanged to wallet simulation; show that result and send the same simulation for owner authorization. Re-quote only after revert, expiry or changed request; never retry reverted bytes or widen protection. For all/max swaps use the wallet's exact balance. Compare amount_out and native_fee (LayerZero charges it separately). Track LayerZero/LI.FI delivery with get_value_transfer_status. unavailable_sources reports provider failures; execution_unavailable reports plan failures.

NameRequiredDescriptionDefault
amountYesBase units (positive decimal integer)
senderNoTransaction sender; pass with exactly one of slippage_bps or max_output_loss for plans (address)
chain_idYesEVM chain ID
token_inYesRaw EVM address or CAIP-10 eip155:<chain_id>:<address>; all-zeroes denotes the native token
recipientNoDefaults to sender (address)
token_outYesRaw EVM address or CAIP-10 eip155:<chain_id>:<address>; all-zeroes denotes the native token
quote_typeYes
slippage_bpsNoWhole-bps calldata bound: 0.1% = 10. With sender supply this OR max_output_loss. Honor user preference; size near gas value / notional * 10,000. For positive sub-bps budgets use max_output_loss, not 0 or 1 bps. No generic 50 bps default. After slippage failure re-quote, never widen or retry reverted bytes.
max_output_lossNoExact-input loss budget from quoted output, output-token base units as a decimal integer string; requires sender, omit slippage_bps. Ekubo: exact subtraction. 0x: two quotes, floor budget to whole ppm, verify final minBuyAmount; positive budgets below 1 ppm fail, never become zero. Others unsupported. Convert gas value to output base units rounding down; never widen to 1 bps.
include_raw_quotesNoEcho raw provider responses; only to diagnose a provider
destination_chain_idNoDestination chain; defaults to chain_id for a same-chain swap
swap_deadline_minutesNoEkubo router route deadline; default 30

Output Schema

NameRequiredDescription
quotesNo
jurisdictionNojurisdiction metadata (ekubo-token-jurisdictions-v2): coverage, execution_hold, restricted_jurisdictions, per-asset classification

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, and the description adds substantial behavior beyond that: the safe workflow (quote → unchanged execution_plan_reference → wallet simulation → owner authorization), the retry prohibition ('never retry reverted bytes or widen protection'), and the distinction between unavailable_sources (provider failures) and execution_unavailable (plan failures). The attestation must stay client-side and not be sent to the API, which is a valuable non-obvious constraint. The remainder is policy prose rather than tool behavior, 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A dense single block of roughly 250 words that front-loads legal disclaimers ('A quote, execution plan, simulation or wallet approval is not permission to trade') ahead of any operational content. The middle section on jurisdiction, Regulation S and attestation is long and could be compressed, and the actually usable quoting instructions are stranded near the end with no structure or separation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter tool with an output schema, the definition covers the essential workflow, retry discipline, failure-field meanings, and cross-parameter constraints, so an agent can invoke it correctly. Gaps remain: it never defines the exact_input vs exact_output enum choice, and recipient/destination_chain_id behavior is left entirely to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 92% schema coverage the baseline is 3, but the description genuinely adds cross-parameter semantics the schema cannot express: that slippage_bps and max_output_loss are mutually exclusive and both require sender, that they must all be omitted for indicative quotes, that max_output_loss is denominated in output-token base units, and that all/max swaps must use the wallet's exact balance. It also explains that execution.execution_plan_reference must be passed unchanged downstream.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The tool's function is inferable from buried fragments ('Quote EVM swaps: Ekubo/0x same-chain; Across/LayerZero/LI.FI cross-chain', 'Omit all three for indicative quotes'), but the description opens with a compliance disclaimer rather than a statement of what the tool returns. It never says plainly 'returns a quote plus an optional execution plan,' and it does not distinguish itself from siblings such as quote_uniswap_liquidity or the prepare_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit decision rules are supplied: omit sender/slippage_bps/max_output_loss for indicative quotes, supply sender plus exactly one protection for plans, and re-quote only after revert, expiry or a changed request. It also names the follow-on sibling ('Track LayerZero/LI.FI delivery with get_value_transfer_status') and states a hard when-not: 'If required facts or asset-policy coverage are unknown, do not proceed.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_rewards_claims_by_ownerGet incentive rewards claims by ownerA
Read-only
Inspect

Fetch canonical reward-claim records and supply the exact per-chain isClaimed/isAvailable eth_call list used by the interface before preparing claim transactions.

NameRequiredDescriptionDefault
ownerYesaddress

Output Schema

NameRequiredDescription
onchain_validationNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already tells the agent this is a safe read, and the description is consistent with that ('Fetch'). It adds that the result includes per-chain isClaimed/isAvailable call data, but gives no detail on chain coverage, freshness/caching, or whether missing chains are omitted — modest value beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with the verb first and no filler or repetition. It loses a point only because the trailing 'eth_call list used by the interface' clause is more cryptic than the rest and could be expressed more plainly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be explained, and readOnlyHint covers the safety profile; for a one-parameter read this is close to sufficient. The remaining gap is that 'used by the interface' leaves mild ambiguity about whether the tool returns booleans or call payloads, though the output schema resolves it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% but the schema description for 'owner' is only the bare word 'address', so the description could have clarified whether this is the wallet whose claims are queried versus a contract owner. With a single fully-covered parameter the baseline of 3 applies, and the description neither harms nor meaningfully enriches it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb 'Fetch' and resource 'canonical reward-claim records' identify the operation, and the closing clause 'before preparing claim transactions' implies the boundary against the sibling prepare_rewards_claim. The second half ('supply the exact per-chain isClaimed/isAvailable eth_call list used by the interface') is jargon-dense and makes the precise output nature harder to grasp, so it stops short of a clean 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'before preparing claim transactions' hints at sequencing and identifies the downstream step, which is useful implied guidance. However, it never explicitly names prepare_rewards_claim or prepare_merkl_claim as the alternative, nor states when this read should be skipped, leaving the agent to infer the routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sky_savings_deploymentGet the fixed Sky savings deploymentA
Read-only
Inspect

Locally return the canonical Ethereum USDS and sUSDS addresses and direct wallet-read guidance. This server does not proxy Sky, an RPC, an indexer, or any third-party API.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
sourceNo
protocolNo
deploymentNo
limitationsNo
network_accessNo
agent_market_data_discoveryNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only and closed-world annotations, it explains that the result is produced locally from fixed canonical deployment information. The explicit statement that no Sky service, RPC, indexer, or third-party API is proxied makes the lack of live retrieval or external dependency unusually clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences front-load the returned resource and then disclose the local, non-proxy behavior. Every phrase contributes scope or operational context, with no filler or repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-argument local read with an output schema, the description supplies the essential chain, assets, result type, and fixed-data behavior. Although explicit sibling alternatives could improve discovery, nothing important is missing for selecting and invoking this simple tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the empty schema already makes invocation straightforward and establishes the baseline score. The description usefully clarifies that callers cannot select another chain or asset set through this tool: its scope is fixed to Ethereum USDS and sUSDS.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and scope: locally returning canonical Ethereum USDS and sUSDS addresses plus wallet-read guidance. The fixed, local deployment-metadata focus distinguishes it from the sibling Sky deposit, redeem, and withdraw preparation tools and from live data lookups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context for choosing the tool when fixed deployment addresses or direct wallet-read guidance are needed, and explicitly rules out using the server as a Sky, RPC, indexer, or third-party API proxy. It does not name an alternative for live protocol state or transaction preparation, so the routing guidance is not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stonx_allocation_recommendationGet suggested STONX allocationsA
Read-only
Inspect

Return a provider-neutral STONX allocation recommendation with an emissions_efficiency KPI per pool and an executable target list (exactly 10,000 bps, at most 25 Ve33 pools). The snapshot refreshes daily; read snapshot_age_seconds. voter with ve33_emission_state makes targets voter-optimal and keeps the neutral plan as provider_targets; without the emission state, execution_ready is false and local_read_requirement says what to read. The tool constructs no transaction. To apply it, require execution_ready=true, then pass its targets, the state_id from get_ve33_allocations for the connected wallet, and strategy=compact_max_lock to prepare_ve33_reallocation.

NameRequiredDescriptionDefault
voterNoWith ve33_emission_state, makes targets voter-optimal
ve33_emission_stateNo{current_timestamp, current_emission_rate, total_remaining_emissions}: decimal strings decoded locally from getEmissionState (rate is Q32) via local_read_requirement; omit on the first call
prune_low_efficiencyNoWithhold prune candidates and redistribute their weight
max_emission_share_per_fee_shareNoPrune above this emission share / retained fee share; default 3

Output Schema

NameRequiredDescription
targetsNo
chain_idNo
snapshot_atNo
schema_versionNo
execution_readyNo
recommendationsNo
recommendation_idNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, but the description goes substantially beyond that: it discloses that no transaction is constructed, that the snapshot refreshes daily and snapshot_age_seconds should be read, that voter input changes target optimality, and that missing emission state flips execution_ready to false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is dense but front-loaded: recommendation shape and constraints come first, then the invocation workflow and next step. Every sentence carries operational information, though the jargon-heavy phrasing (provider-neutral, bps, Ve33) makes it slightly harder to scan than ideal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists, the description needn't explain return fields, yet it still covers the key decision points an agent needs: snapshot freshness, execution_ready gating, what to read when emission state is missing, and the exact follow-up invocation. Nothing material for correct invocation is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 cross-parameter meaning the schema cannot: combining voter with ve33_emission_state produces voter-optimal targets while preserving a neutral plan in provider_targets, and omitting the emission state changes execution readiness and local read requirements.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: returns a provider-neutral STONX allocation recommendation with an emissions_efficiency KPI per pool and an executable target list constrained to 10,000 bps and at most 25 Ve33 pools. That level of specificity clearly separates it from siblings like get_ve33_allocations and prepare_ve33_reallocation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly explains the two calling modes (with or without voter/ve33_emission_state) and the resulting output differences, including that execution_ready is false without the emission state. It also names the exact follow-up path: require execution_ready=true, then pass targets plus state_id from get_ve33_allocations and strategy=compact_max_lock to prepare_ve33_reallocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tokenGet an Ekubo tokenA
Read-only
Inspect

Fetch canonical token metadata for an exact chain and address.

NameRequiredDescriptionDefault
addressYesEVM or Starknet token address (hex)
chain_idYesEVM chain ID

Output Schema

NameRequiredDescription
tokenNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already declares the safety profile, so the description only needs to add context beyond that. 'Canonical' is a genuinely useful disclosure that results are normalized/authoritative rather than raw, but nothing is said about behavior for unknown addresses or non-canonical tokens. An output schema exists, so return-shape detail is rightly omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler, and the scope qualifier arrives before any implied detail. It is arguably too terse to route the agent against the many token-related siblings, but nothing in it is wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-required-parameter read tool with full schema coverage, annotations, and an output schema, the definition covers what is needed to call it correctly. The only shortfall is the missing disambiguation from get_tokens and list_tokens in a crowded sibling set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both chain_id and address are already documented, making 3 the baseline. The word 'exact' hints that matching is strict with no fuzzy/symbol resolution, but the description adds no format or type guidance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Fetch') and resource ('canonical token metadata') scoped to an exact chain and address, which implicitly separates it from the plural siblings get_tokens/list_tokens/export_tokens. It stops short of naming an alternative, so an agent must infer the singular-vs-list split.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for an exact chain and address' implies this is the single-token lookup path, giving implied usage context. There is no explicit when-to-use/when-not or named alternative such as get_tokens for batch or list_tokens for discovery.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tokensGet multiple Ekubo tokensA
Read-only
Inspect

Fetch canonical metadata for up to 1,000 token identifiers in one batch request, preserving input order; identifiers absent from the canonical list are omitted.

NameRequiredDescriptionDefault
tokensYesEntries may span chains

Output Schema

NameRequiredDescription
tokensNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint already declares this a safe read, so the description's job is to add context — and it does: it discloses the 1,000-identifier ceiling, guarantees output order matches input order, and states that unknown identifiers are silently omitted rather than causing an error. That omission behavior is exactly the kind of surprise an agent needs warned about; it only stops short of describing failure modes for malformed or cross-chain input.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the batch cap and ordering guarantee stated before the edge-case omission rule. No preamble, no restatement of the tool name, nothing that could be cut without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 values, and annotations cover the safety profile; the remaining essentials — batch cap, ordering, omission semantics — are all covered. The one gap is sibling disambiguation against get_token and list_tokens, which an agent must resolve from tool names alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single 'tokens' parameter, so the baseline is 3, but the description earns extra credit by supplying a constraint absent from the schema — the 1,000-entry maximum (the schema sets only minItems: 1, no maxItems). It also reinforces cross-chain acceptance, consistent with the array-of-{chain_id, address} shape.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Fetch canonical metadata for ... token identifiers') and qualifies it as a batch operation with a hard cap of 1,000. The word 'batch' implicitly separates it from the single-token sibling get_token, but no sibling is named explicitly, so differentiation requires inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the 1,000-item batch framing suggests this is for resolving many tokens at once, while get_token and list_tokens would be alternatives. There is no explicit 'use this instead of X when Y' routing, and no note on what to do when some identifiers resolve and others do not.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_uniswap_chartsGet Uniswap pool chartsB
Read-only
Inspect

Fetch timestamped token0/token1 prices and USD volume history over the requested duration from the same GraphQL fields as the open source Uniswap interface. Empty series means no indexed data, never zero volume.

NameRequiredDescriptionDefault
poolYes
versionYes
chain_idYes
durationNoWEEK

Output Schema

NameRequiredDescription
dataNo
errorsNo
sourceNo
partialNo
fetched_atNo
indexed_dataNo

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint already establishes that this is a safe read, but the description adds two pieces of genuinely behavioral context: the data mirrors the open source Uniswap interface's GraphQL fields, and an empty series signals missing indexed data rather than zero volume. It does not disclose timestamp bucketing granularity or rate limits, but it exceeds what the annotations alone convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler: the first front-loads what is returned and over what window, the second delivers the one caveat an agent needs. Nothing is repeated from the title or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value shape need not be explained, and the empty-series caveat covers the main interpretation pitfall. However, for a tool with three required identifier parameters at 0% schema description coverage, omitting any explanation of chain/version/pool or of the duration enum's meaning leaves meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description needs to carry parameter meaning and it does not. Only 'duration' is referenced, and even there it does not clarify whether the enum selects a lookback window or a bucket size; chain_id, version, and pool semantics (especially the 40- vs 64-hex pattern) are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Fetch timestamped token0/token1 prices and USD volume history over the requested duration.' This is clearly distinct from sibling pool-metadata reads such as get_uniswap_pool or get_uniswap_pool_ticks, although no sibling 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when an agent should choose this tool over alternatives (e.g., get_pool vs get_uniswap_pool_ticks vs quote_uniswap_liquidity), and no prerequisites or exclusions. The only guidance present concerns interpreting an empty result, not selecting the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_uniswap_deploymentsGet Uniswap deploymentsB
Read-only
Inspect

Canonical V2/V3/V4 contracts on Ethereum, Optimism, Base, Arbitrum, Unichain and Robinhood, including Permit2 and wrapped native addresses.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
sourceNo
protocolNo
deploymentsNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds that these are 'canonical' addresses with named chain coverage, which is genuinely useful behavioral context, but it says nothing about whether results are static/cached or how missing chains are represented.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence-fragment that front-loads the resource and then enumerates chains, with no filler. It could be tightened into a full clause stating it returns addresses, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only lookup with an output schema already describing the return shape, the description covers what an agent needs: what contracts, which chains, which extras. A brief note on how to use the returned addresses (e.g. as the target for prepare_uniswap_* calls) is the only real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the baseline there is no parameter semantics for the description to carry and the schema has nothing to document. Nothing in the description misleads about inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the exact resource: canonical V2/V3/V4 contract addresses, plus Permit2 and wrapped native tokens, and enumerates the supported chains. It is a noun phrase with no verb, so the retrieval action comes from the tool name rather than the description, but the scope is specific enough to distinguish it from address-returning siblings like get_aerodrome_deployment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance, no mention of prerequisites, and no routing hint toward the sibling deployment tools (get_aerodrome_deployment, get_lido_deployment, get_morpho_vaults) for other protocols. The agent must infer that this is the address-book lookup to consult before preparing Uniswap transactions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_uniswap_poolGet a Uniswap poolA
Read-only
Inspect

Fetch indexed pool details, currencies, fee, TVL, volume and supplies. V4 takes a bytes32 pool ID; V2/V3 take an address. Use prepare_uniswap_reads for current chain state.

NameRequiredDescriptionDefault
poolYes
versionYes
chain_idYes

Output Schema

NameRequiredDescription
dataNo
errorsNo
sourceNo
partialNo
fetched_atNo
indexed_dataNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only readOnlyHint=true supplied, the description still contributes the important behavioral fact that the data is indexed rather than live, which determines staleness and trust expectations. It also disambiguates the pool identifier format by version. It does not cover what happens when a pool is unknown or absent from the index, so it is 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, the payload description first and the identifier rule and alternative second, with no filler. Every clause carries information an agent needs before calling.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be spelled out, and readOnlyHint covers the safety profile; the description fills the remaining gap on identifier format and data source. Only chain_id semantics and unknown-pool behavior are left unaddressed, which are minor for a three-required-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description has to carry the parameter semantics. It does the most valuable part by explaining that V4 requires a bytes32 pool ID while V2/V3 take an address, which disambiguates the regex. chain_id and version are only enum-constrained with no explanation of chain selection or what a version mismatch would mean.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Fetch indexed pool details') plus the concrete payload fields (currencies, fee, TVL, volume, supplies). It implicitly separates itself from live-state siblings via the word 'indexed', though it never names get_pool or get_uniswap_pool_ticks, which occupy adjacent territory.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear when-to-use/alternative split: use this for indexed pool details, and use prepare_uniswap_reads when current chain state is required. That is a real routing rule, not just implied context. It stops short of stating exclusions such as discovery or tick-level data, which the sibling list shows exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_uniswap_pool_ticksGet Uniswap liquidity depth dataA
Read-only
Inspect

Fetch paginated initialized ticks and exact liquidityNet/liquidityGross strings for V3/V4 liquidity depth charts. first/skip bound each request; combine with current pool liquidity and tick from prepare_uniswap_reads. Indexer data can lag.

NameRequiredDescriptionDefault
poolYes
skipNo
firstNo
versionYes
chain_idYes

Output Schema

NameRequiredDescription
dataNo
errorsNo
sourceNo
partialNo
fetched_atNo
indexed_dataNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, but the description adds real behavior: results are paginated via first/skip, values are returned as exact strings (relevant for precision-sensitive math), and 'Indexer data can lag' warns that results may be stale relative to on-chain state. No auth or rate-limit details, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with the core capability first, then pagination mechanics, then the staleness caveat. Every clause carries information an agent needs; nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-shape explanation is correctly omitted, and the read-only safety profile is covered by annotations. For a paginated 5-parameter indexer read the description is nearly sufficient, missing only guidance on which pool identifier form applies to V4 and how pagination termination is detected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning; it explains only that first/skip bound each request (pagination) and that version selects V3 vs V4. The three required parameters — pool, chain_id, version — get no semantic detail (e.g., that a V4 pool is a 32-byte pool id while V3 is a 20-byte address, or what the six chain_id values mean), leaving a real gap against 0% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Fetch paginated initialized ticks and exact liquidityNet/liquidityGross strings for V3/V4'. Naming the per-tick liquidity fields distinguishes it from indexer-level siblings such as get_pool_liquidity and get_uniswap_charts without the agent needing to open a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete composition rule — 'combine with current pool liquidity and tick from prepare_uniswap_reads' — which tells the agent this tool is a building block for a depth chart rather than a standalone read. It stops short of naming alternatives (e.g., get_pool_liquidity) or saying when this tool is unnecessary, so no explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_value_transfer_statusTrack a LayerZero or LI.FI cross-chain transferA
Read-only
Inspect

Report whether an executed LayerZero or LI.FI transfer has been delivered; its origin receipt alone does not mean the user has the funds. Poll every 15 to 30 seconds while settled is false (it draws on the quote budget). UNKNOWN or NOT_FOUND right after submission usually means not yet indexed. For LI.FI, read substatus: REFUNDED and PARTIAL report as status DONE. Across transfers are not tracked here.

NameRequiredDescriptionDefault
sourceNoThe executed quote's source; defaults to layerzero
quote_idNoThe executed option's provider_quote_id; required for layerzero
origin_chain_idNoOrigin chain; lifi only, narrows the lookup
transaction_hashNoOrigin transaction hash; required for lifi, and pass it for layerzero once known (some routes need it) (bytes32 hex)
destination_chain_idNoDestination chain; lifi only

Output Schema

NameRequiredDescription
sourceNo
statusNo
pollingNo
settledNo
quote_idNo
substatusNo
source_urlNo
explorer_urlNo
execution_historyNo
substatus_messageNo
origin_transaction_hashNo

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations supply only readOnlyHint=true, and the description is consistent with a read. Beyond that it discloses real behavioral traits: polling cadence, that each poll draws on the quote budget, that early UNKNOWN/NOT_FOUND is expected latency, and that LI.FI REFUNDED/PARTIAL surface as status DONE.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core question ('has it been delivered'), then the polling protocol, then the edge-case interpretation, then scope exclusion. Every sentence carries operational information; nothing restates the name or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value documentation is not required, so the description's job is timing and interpretation, which it covers well for both protocols. A minor gap is that 'settled' is referenced without explaining how to obtain it, though the output schema presumably carries that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so per-parameter meaning is already documented (quote_id required for layerzero, transaction_hash required for lifi, origin/destination chain for lifi only). The description mentions protocol-specific interpretation but adds no syntax or format 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Report whether an executed LayerZero or LI.FI transfer has been delivered.' It distinguishes the tool from execution/quote siblings by noting the origin receipt is not proof of delivery, and explicitly excludes out-of-scope work with 'Across transfers are not tracked here.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear context: call it after a transfer is executed, poll every 15-30 seconds while 'settled' is false, and interpret UNKNOWN/NOT_FOUND as not-yet-indexed rather than failure. It does not explicitly name the sibling tool that prepares or executes transfers, so the routing signal is contextual rather than nominal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ve33_allocationsShow Ekubo STONX / ve(3,3) allocationsA
Read-only
Inspect

Use for requests such as 'show all my Ekubo STONX allocations'. The production Ekubo ve(3,3) deployment is the STONX voting system, so pass only owner to select its production chain and canonical VeToken automatically. Returns every pool, selected swap fee, NFT, applied vote weight, totals, state_id, and an onchain_validation request explicitly marked not_executed until the client runs its eth_call. Pass chain_id and ve_token together only for another deployment.

NameRequiredDescriptionDefault
ownerYesConnected EVM wallet whose complete Ekubo STONX/VeToken allocation should be shown; the server cannot infer 'my', so ask the user when no wallet address is available
chain_idNoOptional with ve_token; omit both for the production Ekubo STONX deployment
ve_tokenNoOptional with chain_id; omit both for the canonical STONX VeToken 0x9d7008E169D040B6c0140eb92E7cA82B12643497 (address)

Output Schema

NameRequiredDescription
onchain_validationNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond readOnlyHint=true, it discloses the non-obvious behavior that the returned onchain_validation is marked not_executed until the client performs its eth_call, and that deployment resolution is automatic from owner. That is genuinely useful context an agent could not infer from the annotation. It does not discuss pagination or size limits for large allocation sets.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded with the trigger phrase, then defaults, then return shape, then the alternate-deployment caveat. Nothing is redundant, though the long middle enumeration of return fields is denser than needed given an output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 correctly avoids over-explaining return structure while still flagging the not_executed validation caveat. Annotations cover safety and the schema covers params, so the remaining gaps (pagination, behavior for empty allocations) are minor for a read-only lookup tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so 3 is the baseline, but the description adds deployment-resolution meaning: omitting chain_id/ve_token selects the production STONX chain and canonical VeToken, and the two must be supplied as a pair for other deployments. The canonical token identity is also spelled out. The addition is largely reinforcement of the schema text rather than new syntax detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a concrete verb and resource ('show all my Ekubo STONX allocations') and enumerates what comes back (pools, swap fee, NFT, vote weight, totals, state_id). It also pins the deployment identity (production Ekubo ve(3,3) = STONX voting system). It does not explicitly contrast with the closest siblings such as get_stonx_allocation_recommendation or get_positions_by_owner, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It front-loads a usage pattern ('Use for requests such as ...') and gives a clear conditional rule: pass only owner for production, pass chain_id and ve_token together only for another deployment. The schema adds the 'ask the user when no wallet address is available' fallback. Missing is any explicit statement of when to prefer a sibling read tool instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_pool_keysList Ekubo pool keysA
Read-only
Inspect

Discover initialized pools for one chain and Core deployment, ordered by pool_id with keyset pagination, optionally filtered by token, pair or extension. Each pool_id is re-derived from its PoolKey and each row carries the indexed state (null until indexed).

NameRequiredDescriptionDefault
token_aNoPools containing this token (address)
token_bNoWith token_a, the exact pair (address)
chain_idYesEVM chain ID
extensionNoZero address = extensionless
page_sizeNoPools per page
core_addressYesCore deployment (address)
after_pool_idNoPrevious page's next_after_pool_id (decimal or 0x-hex integer)

Output Schema

NameRequiredDescription
pageNo
poolsNo
chain_idNo
core_addressNo
core_generationNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true; the description adds real behavioral context beyond that: results are ordered by pool_id, pagination is keyset-based, and each row's indexed state is null until indexed. It does not discuss rate limits or error behavior, but for a read-only list tool 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences with the resource and scope front-loaded, then pagination and row semantics. Nothing is wasted, though 're-derived from its PoolKey' is jargon that adds length without much clarity for an unfamiliar agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value detail is unnecessary, and the description covers the two things the schema cannot: ordering/pagination strategy and the null-until-indexed state. For a 7-parameter read-only listing tool, this is close to complete, with only sibling routing left unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all seven parameters are already documented, setting the baseline at 3. The description reinforces the filter modes (token, pair, extension) and the keyset cursor concept but adds little syntax or constraint detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Discover initialized pools') scoped to one chain and Core deployment, which separates it from the single-pool sibling get_pool. It does not explicitly name any sibling (e.g. discover_uniswap_pools) as an alternative, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case is enumeration with optional narrowing by token, pair or extension, and explains keyset pagination via the previous page's cursor. It gives no explicit when-to-use/when-not guidance or routing against siblings such as get_pool or discover_uniswap_pools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tokensList Ekubo tokensA
Read-only
Inspect

First step for symbol-based swaps, including tokenized stocks and stablecoins: list canonical Ekubo tokens by descending visibility_priority, so the preferred token wins an ambiguous symbol. Use search for a symbol prefix or suffix and min_visibility_priority to reach tokens the interface hides.

NameRequiredDescriptionDefault
searchNoCase-insensitive token symbol prefix or suffix match; omit to list the whole canonical set. Symbols only, not names or addresses
chain_idNoRestrict the list to one EVM chain; omit to list tokens across every indexed chain
page_sizeNoMaximum tokens to return; defaults to 20
after_tokenNoKeep only tokens whose (chain_id, address) pair sorts after this <chain_id>:<address> identifier. Results are ordered by visibility_priority rather than by that pair, so this filters the candidate set instead of continuing a page boundary
min_visibility_priorityNoLowest visibility_priority to include; defaults to 0, the interface threshold. Pass a negative value to reach tokens the interface hides

Output Schema

NameRequiredDescription
tokensNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond readOnlyHint=true, the description discloses the result ordering (visibility_priority), the default interface threshold of 0, and that negative min_visibility_priority reaches tokens the UI hides. That is meaningful behavioral context an agent cannot get from the annotations or schema alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the primary use case and followed by the refinement path. It is dense but every clause carries information; no filler or restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and 100% parameter coverage, the description only needs to supply purpose, ordering semantics, and hidden-token access, all of which it does. Only the absence of explicit sibling routing (get_token vs list_tokens) keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter is already documented, including the subtle after_token caveat. The description adds rationale (ambiguity resolution driving ordering) but no syntax or format detail beyond the schema, which is the baseline-3 situation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('list canonical Ekubo tokens'), the ordering ('descending visibility_priority'), and the reason for that ordering ('so the preferred token wins an ambiguous symbol'). An agent can distinguish this from generic siblings like get_tokens or get_token purely from the text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames the tool as the 'first step for symbol-based swaps' and tells the agent how to widen the search (symbol prefix/suffix via search, hidden tokens via min_visibility_priority). It does not state when to prefer a sibling such as get_token for an exact known address, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_aave_v3_borrowPrepare an Aave V3 variable borrowA
Read-only
Inspect

Prepare a direct Aave V3 variable-rate borrow from a supported fixed reserve, including optional on-behalf-of credit delegation. This server does not query collateral, delegation, health factor, caps, or available liquidity.

NameRequiredDescriptionDefault
assetYesExact underlying ERC-20 address from the selected market's fixed major-reserve list
amountYesPositive borrow amount in base units (positive decimal integer)
senderYesWallet that will execute the Aave action (address)
chain_idYesChain of a fixed Aave V3 core market returned by get_aave_v3_markets
on_behalf_ofNoDebt owner; defaults to sender. A different owner must already have delegated variable debt to sender. (address)

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already declares the safety profile, and the description is consistent with it by framing the tool as preparation rather than execution. It adds genuinely useful context beyond the annotations: that no preflight validation of collateral, delegation, health factor, caps, or liquidity occurs, putting that burden on the caller. It does not say what the prepared output looks like or whether approvals must exist first.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the capability stated first and the limitation second. Every 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and all five parameters are documented. The remaining gap is that the description does not state prerequisites such as token approval or where the market/asset list comes from, but the core call semantics are complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 the 'supported fixed reserve' constraint on asset and mentions on-behalf-of credit delegation, but adds no syntax or format detail beyond what each parameter's schema description already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (prepare), a specific protocol action (Aave V3 variable-rate borrow), and the reserve constraint (supported fixed reserve). The optional on-behalf-of credit delegation is called out, which distinguishes it from the sibling prepare_aave_v3_supply/repay/withdraw tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence gives a clear negative scope: the tool does not check collateral, delegation, health factor, caps, or liquidity, which tells the agent this is a blind transaction builder rather than a validated one. It does not name a sibling or prerequisite tool (e.g. get_aave_v3_markets) to satisfy those checks, 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.

prepare_aave_v3_collateralPrepare an Aave V3 collateral toggleA
Read-only
Inspect

Prepare setUserUseReserveAsCollateral for a supported fixed reserve. Disabling collateral can reduce health factor or revert when open debt needs it, so exact wallet simulation is mandatory.

NameRequiredDescriptionDefault
assetYesExact underlying ERC-20 address from the selected market's fixed major-reserve list
senderYesWallet that will execute the Aave action (address)
chain_idYesChain of a fixed Aave V3 core market returned by get_aave_v3_markets
use_as_collateralYesTrue enables this supplied reserve as collateral; false disables it

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description's job is to add risk context, and it does: disabling collateral can lower health factor or revert when open debt depends on it, and simulation is required. It doesn't say what the preparation produces (a plan/simulation result versus signable calldata), though an output schema exists to 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, and the action is front-loaded ahead of the risk caveat. Every clause carries information an agent needs before calling.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter, fully documented tool with an output schema, the description covers purpose, risk, and a hard simulation prerequisite. Remaining gaps are minor: no explicit sibling routing and no mention of what the prepared artifact is used for next.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already documented, including the 'fixed major-reserve list' constraint on asset and the boolean semantics of use_as_collateral. The description adds no format, default, or edge-case 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the exact contract method (setUserUseReserveAsCollateral) and the resource (a supported fixed reserve), which distinguishes it from sibling Aave prepare tools like prepare_aave_v3_supply or prepare_aave_v3_borrow. It stops short of explicitly contrasting those siblings, but the verb+resource pair is specific enough to route correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Use is implied: toggle collateral on a reserve from the fixed major-reserve list. The description adds a real precondition ('exact wallet simulation is mandatory') but never states when to choose this over the other prepare_aave_v3_* tools or when not to attempt it (e.g., reserve unsupported, no position).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_aave_v3_emodePrepare an Aave V3 eMode changeA
Read-only
Inspect

Prepare setUserEMode with a caller-supplied current uint8 category ID; zero disables eMode. Discover live category configuration through Aave's public GraphQL API directly, because this server makes no data or RPC request.

NameRequiredDescriptionDefault
senderYesWallet whose eMode selection will change (address)
chain_idYesChain of a fixed Aave V3 core market returned by get_aave_v3_markets
category_idYesCurrent onchain Aave eMode category; zero disables eMode. Obtain nonzero category IDs from Aave's public GraphQL API, because this server does not query them.

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true; the description adds the crucial operational fact that the server performs no data or RPC request, so category IDs are caller-supplied and unverified against live chain state. That explains why the tool is read-only despite preparing a state-changing user action. It does not describe what the prepared payload looks like, though an output schema exists to 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight clauses with no filler, and the operative fact (caller supplies the category, server does no lookups) is front-loaded. The density makes it slightly hard to parse, but every phrase carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Annotations and a full-coverage schema plus an output schema cover most needs, and the description supplies the non-obvious constraint that live eMode configuration must be fetched elsewhere. What is missing is the downstream step: that the returned object is an unsigned transaction/calldata the caller must submit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 in the schema, including the uint8 range, the zero-disables semantics, and the GraphQL sourcing of category IDs. The description restates the category_id constraints rather than adding meaning beyond them, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names the exact contract method (setUserEMode) and the resource it acts on, which unambiguously separates it from the many sibling prepare_aave_v3_* tools (supply, borrow, repay, collateral, withdraw). An agent can identify the operation 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the key semantic rule (zero disables eMode) and tells the caller how to obtain nonzero category IDs, namely from Aave's public GraphQL API. It stops short of naming sibling alternatives (e.g. get_aave_v3_markets for chain selection) or stating that the result must be signed and broadcast by the caller.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_aave_v3_repayPrepare an Aave V3 variable-debt repaymentA
Read-only
Inspect

Prepare variable-debt repayment with underlying tokens or sender-owned aTokens. Underlying repayment carries an exact ERC-20 approval and cleanup in one atomic plan; uint256 maximum requests all available debt.

NameRequiredDescriptionDefault
assetYesExact underlying ERC-20 address from the selected market's fixed major-reserve list
amountYesPositive repayment amount in base units; uint256 maximum requests all available variable debt (positive decimal integer)
senderYesWallet that will execute the Aave action (address)
chain_idYesChain of a fixed Aave V3 core market returned by get_aave_v3_markets
on_behalf_ofNoDebt owner; defaults to sender (address)
funding_sourceNoUse underlying ERC-20 with a temporary exact Pool approval, or burn sender-owned aTokens with repayWithATokensunderlying

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations supply only readOnlyHint=true, so the description has to carry most of the behavioral burden, and it does add real context: underlying repayment bundles an exact ERC-20 approval plus cleanup into one atomic plan, which tells the agent about approval lifecycle side effects. It stops short of saying explicitly that the output is an unsigned plan rather than an executed transaction, or whether on_behalf_of requires authorization.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the resource and funding modes front-loaded, followed by the atomic-approval consequence and the max-amount convention. Nothing is wasted and there is no repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the six-parameter surface is fully documented in the schema. What is missing is small but real: the plan-vs-execution nature of a 'prepare' tool and the authorization expectations for on_behalf_of are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 asset, amount, sender, chain_id, on_behalf_of, and funding_source, which sets the baseline at 3. The description reinforces the max-uint256 convention and the underlying/aToken distinction but adds no syntax, constraints, or format detail beyond what the schema fields already say.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (prepare) plus the exact resource (Aave V3 variable-debt repayment) and the two funding modes (underlying ERC-20 or sender-owned aTokens). This clearly separates it from siblings such as prepare_aave_v3_borrow, prepare_aave_v3_supply, and prepare_aave_v3_withdraw 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when each funding path applies (underlying vs aToken) and notes that uint256 maximum requests all available debt, which is genuine usage guidance. It never states prerequisites or exclusions relative to other prepare_* tools, so an agent must infer that a market must first come from get_aave_v3_markets and that this tool only builds a plan rather than executing it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_aave_v3_supplyPrepare an Aave V3 supplyA
Read-only
Inspect

Prepare a fixed-market Aave V3 Pool supply with an exact ERC-20 approval, supply calldata, and allowance cleanup as one atomic wallet plan. No live balance, allowance, reserve, cap, pause, or rate data is queried.

NameRequiredDescriptionDefault
assetYesExact underlying ERC-20 address from the selected market's fixed major-reserve list
amountYesPositive underlying-token amount in base units (positive decimal integer)
senderYesWallet that will execute the Aave action (address)
chain_idYesChain of a fixed Aave V3 core market returned by get_aave_v3_markets
on_behalf_ofNoaToken recipient; defaults to sender (address)

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, so the description carries most of the burden and does add real value: it discloses the atomic multi-step composition (approve → supply → allowance cleanup) and, importantly, that no live on-chain state is read, warning the agent that validation is absent. It does not explicitly state that nothing is broadcast or how the returned plan is executed, leaving 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler: the first front-loads what the tool produces, the second front-loads the key limitation. The negation list of unqueried data sources is dense but each item is meaningful for the agent's expectations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, 100% parameter coverage, and a readOnly annotation, the description supplies enough for correct invocation. Minor residual gaps are what happens if the asset is outside the fixed reserve list and how the resulting plan is submitted, though these may be covered by the output schema or sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (asset, amount, sender, chain_id, on_behalf_of) is already documented in the schema, including the base-units constraint and the aToken recipient default. The description adds only the market-scoping notion of a 'fixed major-reserve list' and does not elaborate per-parameter semantics beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Prepare a fixed-market Aave V3 Pool supply') and enumerates the three artifacts produced: an exact ERC-20 approval, supply calldata, and allowance cleanup bundled as one atomic wallet plan. This clearly distinguishes it from siblings such as prepare_aave_v3_borrow, prepare_aave_v3_repay, and prepare_aave_v3_withdraw.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'fixed-market' qualifier plus 'No live balance, allowance, reserve, cap, pause, or rate data is queried' gives the agent clear context that this is a purely constructive call for a market previously obtained from get_aave_v3_markets, and that no pre-flight validation happens here. It stops short of naming an explicit alternative or stating a when-not condition, 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.

prepare_aave_v3_withdrawPrepare an Aave V3 withdrawalA
Read-only
Inspect

Prepare a direct Aave V3 Pool withdrawal for a supported fixed reserve. Pass uint256 maximum as amount to request the available aToken balance. The wallet establishes balance, health-factor, collateral, and liquidity validity by exact simulation.

NameRequiredDescriptionDefault
assetYesExact underlying ERC-20 address from the selected market's fixed major-reserve list
amountYesPositive underlying-token amount in base units; uint256 maximum requests all available balance (positive decimal integer)
senderYesWallet that will execute the Aave action (address)
chain_idYesChain of a fixed Aave V3 core market returned by get_aave_v3_markets
recipientNoUnderlying-token recipient; defaults to sender (address)

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only supply readOnlyHint=true, and the description adds genuine behavioral context beyond that: the action is validated by 'exact simulation' against balance, health-factor, collateral, and liquidity, so the agent knows the transaction can be rejected pre-flight. The 'direct Pool' framing also hints at the execution path. Remaining gaps (e.g., whether a failed simulation returns an error or a plan) are modest given the 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded on what the tool does, then the sentinel value, then the validation model. No filler; the only near-redundancy is the max-amount sentence, which repeats the schema but earns its place as a call-time reminder.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a prepare-style tool with a true readOnlyHint and a full output schema, the description covers the essentials: reserve restriction, the max-balance sentinel, and the simulation-based validity checks. 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents asset, amount, sender, chain_id, and recipient. The description's uint256-maximum sentinel meaningfully restates the 'amount' semantics but adds nothing the schema does not already say, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Prepare a direct Aave V3 Pool withdrawal') plus scope ('for a supported fixed reserve'), which separates it from prepare_aave_v3_supply/borrow/repay by resource alone. It stops short of naming any sibling or contrasting 'direct Pool' with alternative withdrawal routes, so it is clear but not fully differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: you call it when you want to exit an Aave V3 position on a fixed reserve, and the 'supported fixed reserve' phrase flags a prerequisite. There is no explicit when-not guidance, no pointer to get_aave_v3_markets or the market-selection flow, and no mention of how this relates to other prepare_* exit paths.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_aerodrome_gauge_claimPrepare an Aerodrome emissions claimA
Read-only
Inspect

Claim accrued AERO from a gauge. getReward credits its account argument rather than the sender, so a claim can pay a different address than the one paying gas; the plan states which. A claim with nothing earned succeeds and transfers nothing.

NameRequiredDescriptionDefault
gaugeYesGauge from a Sugar pools read (address)
senderYesaddress
accountNoAccount whose emissions are claimed; defaults to sender. getReward credits this address, so a non-sender value pays someone else.
chain_idYesBase (8453) only

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true; the description adds substantive behavior beyond that – the payout address comes from the account argument rather than the sender, and the plan states which, plus the notable edge case that a zero-earned claim succeeds and transfers nothing. It omits gas/approval or execution-flow context, which is reasonable given the plan-producing nature of the tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action, then the sharpest gotcha (account vs sender), then the empty-claim edge case. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so the plan contents need not be described. The description covers the two non-obvious behaviors an agent could get wrong (payout address and the no-op-with-success case), which is sufficient for a four-parameter prepare tool restricted to a single chain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the account parameter already documents the getReward crediting behavior, so the description mostly restates the schema. Its only additional contribution is that 'the plan states which' address is paid, which reframes rather than expands parameter meaning; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Claim accrued AERO from a gauge,' which is concrete enough for an agent to act on. It does not explicitly distinguish itself from the several claim-shaped siblings (prepare_aerodrome_incentive_claim, prepare_rewards_claim, prepare_merkl_claim), leaving the AERO-from-gauge scope as the only differentiator.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'claim accrued AERO from a gauge' – you use it when emissions have accrued to a gauge position. There is no explicit when-to-use, no prerequisites (e.g. approvals, veAERO requirements), and no routing to alternative claim tools, so the agent must infer selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_aerodrome_gauge_depositPrepare an Aerodrome gauge stakeA
Read-only
Inspect

Stake v2 LP tokens into a pool's gauge to earn AERO emissions, with the LP-token approval the gauge needs and an allowance cleanup after. Phased, because which token the gauge pulls is its own stakingToken: call it without lp_token to get that read back, then again with the resolved address for the complete atomic plan. Staking redirects that position's trading fees to the pool's voters, so it trades fee income for emissions rather than adding to it. A dead gauge accepts the stake and pays nothing, so check gauge_alive. Size amount from the live LP balance, not from an earlier deposit simulation.

NameRequiredDescriptionDefault
gaugeYesGauge from a Sugar pools read (address)
amountYesExact LP token amount to stake in base units (positive decimal integer)
senderYesaddress
chain_idYesBase (8453) only
lp_tokenNoGauge stakingToken from this tool's first-phase read; omit to get that read, supply it for the full plan (address)

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only supply readOnlyHint=true, so the description should carry the behavioral burden, and it does: it discloses the approval and allowance-cleanup steps, the two-phase call requirement, the fee-redirect economic tradeoff (trading fee income for emissions), and the dead-gauge failure mode that silently pays nothing. It also consistently frames output as a 'plan' rather than an on-chain execution, which aligns with the read-only annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and the phased-call mechanic are front-loaded, and every sentence (phasing, fee redirect, dead gauge, amount sizing) carries actionable information. It is dense and clause-heavy, but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and full parameter documentation already present, the description covers the remaining gaps an agent needs: the two-phase invocation, pre-flight gauge liveness check, input sizing source, and the economic consequence of staking. Nothing required 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.

Parameters4/5

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: it explains why lp_token exists as an optional phase selector and warns that amount must be sized from the live LP balance rather than a stale simulation. It does not add anything for gauge, sender, or chain_id beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (stake v2 LP tokens into a pool's gauge) plus the yield intent (AERO emissions) and the two side effects bundled in (LP-token approval, allowance cleanup). This clearly separates it from siblings such as prepare_aerodrome_gauge_withdraw, prepare_aerodrome_gauge_claim, and prepare_aerodrome_liquidity_deposit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit procedural guidance: call once without lp_token to read the gauge's stakingToken, then call again with the resolved address for the full plan. It also gives a negative rule for sizing (use live LP balance, not a prior deposit simulation two-phase. It never names a sibling alternative for when not to use this tool (e.g. deposit into the pool rather than stake), 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.

prepare_aerodrome_gauge_withdrawPrepare an Aerodrome gauge unstakeA
Read-only
Inspect

Unstake v2 LP tokens from a gauge. This returns the LP token, not the underlying pair, and it does not claim AERO: the read bundle reports what is still earned so it is not silently left behind.

NameRequiredDescriptionDefault
gaugeYesGauge from a Sugar pools read (address)
amountYesExact LP token amount to unstake in base units (positive decimal integer)
senderYesaddress
chain_idYesBase (8453) only

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation is present, so the bar is lower, and the description still adds substantive context beyond it: what the caller receives (LP token, not the underlying pair), what is deliberately not performed (AERO claiming), and that remaining earnings are surfaced by a read bundle so they are not abandoned. The one thing left unsaid is that this only prepares a transaction rather than broadcasting it, which is the fact that would fully reconcile the mutation-sounding verb 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and immediately followed by the two most consequential caveats (LP token not pair, no AERO claim). The final clause is dense with internal jargon ("read bundle") but still earns its place by explaining why rewards are not silently lost.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full schema coverage, the description only needs to cover action semantics and gotchas, and it does: token type returned, reward non-claiming, and residual earnings visibility. What is missing is the prepare-versus-execute distinction and any approval prerequisite, both relevant given the readOnlyHint annotation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all four parameters are documented in the schema, so the baseline is 3; the description's mention of unstaking LP tokens from a gauge reinforces the semantics of the gauge and amount fields rather than duplicating them. It adds no new syntax or constraints, so it sits at the schema-driven baseline rather than above it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Unstake v2 LP tokens from a gauge") and immediately scopes the result ("returns the LP token, not the underlying pair"), which separates it from the liquidity-withdraw sibling. It also carves out the reward side by noting it "does not claim AERO", implicitly distinguishing it from prepare_aerodrome_gauge_claim, though no sibling is named directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the note that it does not claim AERO hints that a separate claim step exists, and the note that rewards are still reported hints at a follow-up action. There is no explicit when-to-use versus prepare_aerodrome_liquidity_withdraw or prepare_aerodrome_gauge_claim, and no stated prerequisites such as approvals or existing deposits.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_aerodrome_incentive_claimPrepare a veAERO reward claimA
Read-only
Inspect

Claim a veNFT's voting rewards — trading fees, bribes, or both — and optionally the RewardsDistributor rebase, as one plan. The fee and bribe contract addresses are required inputs because they are per-pool contracts that only a Sugar rewards read returns; this server cannot derive them, and a wrong address claims nothing rather than failing loudly. Distinct from prepare_aerodrome_gauge_claim, which collects an LP's emissions rather than a voter's rewards.

NameRequiredDescriptionDefault
feesNoFee contracts and their tokens, taken from a Sugar venft_rewards read
bribesNoBribe contracts and their tokens, taken from a Sugar venft_rewards read
senderYesaddress
chain_idYesBase (8453) only
venft_idYesveNFT token id whose rewards are claimed (positive decimal integer)
claim_rebaseNoAlso claim the RewardsDistributor rebase, which compounds into the lock

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only readOnlyHint=true supplied, the description adds real behavioral context: the output is a single combined plan, addresses are non-derivable external inputs, and a wrong address fails silently ('claims nothing rather than failing loudly') — a meaningful hazard worth surfacing. It does not discuss how the plan is returned or sequenced, but the output schema can carry that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what the tool does before the input rationale and the sibling contrast. The middle sentence is dense and slightly run-on, but no sentence is filler and nothing is repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the parts an agent could plausibly get wrong — sourcing the contract addresses and choosing between voter-reward and gauge-emission claims — while the output schema and field descriptions handle chain restriction, token lists, and return shape. Complete for a plan-preparation tool of this size.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 explaining why `fees`/`bribes` are mandatory (per-pool contracts obtainable only from a Sugar rewards read) and by framing `claim_rebase` as an optional compounding add-on. That rationale is not present in the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — claiming a veNFT's voting rewards (fees, bribes, or both, plus optional rebase) as a single plan — and explicitly separates itself from prepare_aerodrome_gauge_claim by contrasting voter rewards with LP emissions. An agent can place this 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit alternative (prepare_aerodrome_gauge_claim) and the condition that selects it, plus the prerequisite that fee/bribe contract addresses must come from a Sugar rewards read. It stops short of routing the agent to the specific Sugar read tool (prepare_aerodrome_sugar_reads) or addressing other claim-style siblings such as prepare_ve33_claim_fees.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_aerodrome_liquidity_depositPrepare an Aerodrome v2 liquidity depositA
Read-only
Inspect

Prepare a v2 addLiquidity through Aerodrome's Router with exact approvals and allowance cleanup. The read bundle quotes the actual split and resolves the pool, so a pair with no pool is caught before a deposit sets its price. LP tokens earn no AERO until staked with prepare_aerodrome_gauge_deposit.

NameRequiredDescriptionDefault
senderYesaddress
stableYesStable (true) or volatile pool; with the pair it identifies the pool
token_aYesaddress
token_bYesaddress
chain_idYesBase (8453) only
deadlineYesNear-term unix timestamp; a past one makes the plan revert (positive decimal integer)
recipientNoDefaults to sender (address)
amount_a_minYesSlippage bound: minimum token_a base units consumed (positive decimal integer)
amount_b_minYesMinimum token_b base units consumed (positive decimal integer)
amount_a_desiredYesMaximum token_a base units (positive decimal integer)
amount_b_desiredYesMaximum token_b base units (positive decimal integer)

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only supply readOnlyHint=true, so the description carries the rest: it discloses that the emitted plan bundles approvals and allowance cleanup, that a quote bundle resolves the pool and computes the actual split, and that a missing pool is caught before pricing. That is meaningful behavior beyond the annotation and is consistent with a read-only planner that returns unsigned transactions, though the description never says explicitly that nothing is broadcast.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences with no filler; the primary action comes first and the caveats follow. The second sentence is slightly compressed ('catches a pair with no pool before a deposit sets its price'), which costs a little readability but not correctness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter preparation tool with an output schema and full parameter documentation, the description covers the important non-schema facts: approval handling, pre-flight pool validation, and the downstream staking requirement. Only the absence of an explicit 'returns a plan, does not execute' statement leaves a small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter including deadline, min/max amounts and stable-vs-volatile is documented there, so the baseline is 3. The description's mention of the split quote and pool resolution echoes rather than extends the schema's 'with the pair it identifies the pool' note.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb-plus-resource: it prepares a v2 addLiquidity call routed through Aerodrome's Router, and it states the scope of the artifact (exact approvals plus allowance cleanup). Against siblings such as prepare_aerodrome_liquidity_withdraw or prepare_uniswap_v2_add_liquidity, the chain/protocol is unambiguous 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It routes the agent to a named follow-up (stake LP with prepare_aerodrome_gauge_deposit to earn AERO) and explains when the tool is safe to call (the read bundle resolves the pool first). It does not explicitly exclude or compare against adjacent tools like prepare_lp_position_deposit, but the operational context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_aerodrome_liquidity_withdrawPrepare an Aerodrome v2 liquidity withdrawalA
Read-only
Inspect

Prepare a v2 removeLiquidity that burns LP tokens back into the underlying pair, with the LP-token approval the router needs and an allowance cleanup after. Phased, because the token being approved is the pool and this server resolves Aerodrome addresses by reading them: call it without lp_token to get the pool read back, then again with the resolved address for the complete atomic plan. An LP balance short of the requested liquidity usually means the rest is staked in the gauge and needs unstaking first.

NameRequiredDescriptionDefault
senderYesaddress
stableYesStable (true) or volatile pool
token_aYesaddress
token_bYesaddress
chain_idYesBase (8453) only
deadlineYesNear-term unix timestamp; a past one makes the plan revert (positive decimal integer)
lp_tokenNoPool address from this tool's first-phase read; omit to get that read, supply it for the full plan
liquidityYesExact LP token amount to burn in base units (positive decimal integer)
recipientNoDefaults to sender (address)
amount_a_minYesMinimum token_a base units to receive (positive decimal integer)
amount_b_minYesMinimum token_b base units to receive (positive decimal integer)

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation (consistent, since the tool only builds a plan and never broadcasts), the description discloses the approval step, the post-approval allowance cleanup, and the two-phase address resolution. It also explains how to interpret a liquidity shortfall as gauge-staked tokens.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the action and follows with phasing rationale and the shortfall tip, so every sentence earns its place. The sentences are dense and slightly run-on, but nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema, full schema coverage, and a readOnly annotation, the description fills the remaining gaps: coordinate phasing, approval/cleanup behavior, and the common staked-liquidity failure mode. 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already documented; the description nonetheless adds meaning about the lp_token two-phase flow and frames liquidity against the actual LP balance, helping the agent reason about the value rather than just the format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete verb and resource: 'Prepare a v2 removeLiquidity that burns LP tokens back into the underlying pair,' and it adds the LP-token approval and allowance cleanup the plan includes. This distinguishes it from the deposit and gauge siblings, which do not burn LP tokens into the pair.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit phasing: call without lp_token to get the pool read, then again with the resolved address for the full plan. It also provides a diagnostic that a short LP balance usually means the rest is staked in the gauge and needs unstaking first, pointing the agent to the gauge-unstake path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_aerodrome_lockPrepare a veAERO lock actionA
Read-only
Inspect

Build one veAERO escrow action: create a lock, add AERO to one, extend it, switch permanent locking on or off, or withdraw an expired one. Durations are measured from now and floored to a week boundary, so anything under a week is refused rather than signed. The read bundle returns ownership and the lock's (amount, end, isPermanent) so an impossible action — withdrawing an unexpired or permanent lock, extending past nothing — is caught before signing.

NameRequiredDescriptionDefault
actionYesWhich veAERO lock action to build
amountNoAERO amount in base units; required for create and increase_amount (positive decimal integer)
senderYesaddress
chain_idYesBase (8453) only
venft_idNoveNFT token id; required for every action but create (positive decimal integer)
lock_durationNoLock length in seconds measured from now, required for create and extend. The escrow floors it to a week boundary and caps it at four years. (positive decimal integer)

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond readOnlyHint=true, the description discloses non-obvious behavior: durations are measured from now and floored to a week boundary, sub-week requests are refused rather than signed, and a read bundle is fetched to reject impossible actions before signing. That 'builds but never signs or submits' framing is exactly the context an agent needs, though it says nothing about what the returned action contains or whether it must be re-validated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both front-loaded with the most important information (what it builds, then the duration and validation rules). Dense but no filler; the middle clause listing action types is slightly redundant with the enum but earns its place as a quick scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values needn't be explained. Given six parameters with an enum and only a readOnlyHint annotation, the description supplies the missing behavioral layer — duration rounding, refusal instead of signing, and pre-signing state checks — leaving nothing important unsaid for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter already carries its own description including the week-floor and four-year cap. The description restates those rules and clarifies which actions are relevant per field only implicitly; it adds little machine-relevant meaning beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 ('Build one veAERO escrow action') and then enumerates every operation the tool covers: create, increase, extend, toggle permanent, withdraw. That enumeration matches the action enum and lets an agent distinguish this from the many sibling prepare_* 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through the action list and the statement that impossible actions are caught before signing, which tells the agent this is a build-and-validate step. However, it never names alternatives — notably prepare_ve33_extend, prepare_ve33_withdraw, prepare_ve33_stake and prepare_aerodrome_sugar_reads sit adjacent and an agent gets no explicit rule for choosing between them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_aerodrome_sugar_readsPrepare an Aerodrome Sugar read bundleA
Read-only
Inspect

Build the eth_call bundle and decode plan for one Sugar dataset (pools, positions, veNFTs, epochs, rewards) for the wallet to run against the user's RPC; Sugar has no API. The pool, gauge, fee and bribe addresses and veNFT ids it returns are the inputs to the other prepare_aerodrome_* tools.

NameRequiredDescriptionDefault
poolNoRequired for pool_epochs and venft_pool_rewards (address)
limitNoPage size; at most 500 pools or 200 positions
offsetNo
accountNoRequired for positions and venfts_by_account (address)
datasetYesSugar dataset
chain_idYesBase (8453) only
venft_idNoRequired for venft_by_id, venft_rewards, and venft_pool_rewards (positive decimal integer)

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, and the description adds real context beyond that: it produces a bundle plus decode plan rather than results, execution happens on the user's RPC, and Sugar has no API. It does not discuss failure modes (unsupported chain, missing conditional params) or how large bundles behave, so it is informative 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences with zero filler; the core action is front-loaded and the second sentence carries the downstream chaining fact that an agent most needs. Nothing is repeated from the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and readOnlyHint covering safety, the description supplies what structured fields cannot: the two-step flow (build here, execute on the user's RPC) and how outputs feed sibling prepare tools. Minor gap: it does not mention chain support limits beyond what the chain_id schema note says, nor what an agent should do if a required conditional parameter is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 86%, and the schema already states the conditional requirements (pool for pool_epochs/venft_pool_rewards, account for positions/venfts_by_account, venft_id for the three venft datasets) and the 500/200 limits. The description adds only the framing that the dataset choice selects which call bundle is built, and that returned addresses and veNFT ids become inputs elsewhere — useful but not per-parameter meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Build the eth_call bundle and decode plan') on a specific resource (one Sugar dataset) and enumerates the datasets supported. It also distinguishes itself from the other prepare_aerodrome_* tools by explaining that its outputs are their inputs, so an agent can place 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It makes clear the tool does not fetch data itself: the bundle is 'for the wallet to run against the user's RPC' and 'Sugar has no API', which tells an agent this is the read path for Aerodrome Sugar data. It stops short of naming explicit exclusions or contrasting with near neighbors such as decode_pool_config or get_ve33_allocations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_aerodrome_votePrepare a veAERO vote or resetA
Read-only
Inspect

Cast one veNFT's gauge vote, or reset it. Weights are relative shares of voting power, not amounts, and the allocation replaces any previous vote entirely — a pool left out is voted zero. A veNFT may vote once per weekly epoch and reverts on a second attempt, so the read bundle returns lastVoted along with each pool's gauge and liveness. Voting also locks the NFT against withdrawal until it is reset.

NameRequiredDescriptionDefault
poolsNoThe complete allocation. It replaces any previous vote, so a pool left out is voted zero rather than left alone.
resetNoClear this NFT's votes instead of casting new ones; required before withdrawing a voted NFT
senderYesaddress
chain_idYesBase (8453) only
venft_idYesveNFT token id casting the vote (positive decimal integer)

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description carries real behavioral payload beyond readOnlyHint: weights are ratio-based, the allocation fully replaces the prior vote, a second vote in the same epoch reverts, and voting locks the NFT against withdrawal until reset. However, readOnlyHint=true is never reconciled with the imperative 'Cast one veNFT's gauge vote', which reads as a state-changing broadcast; it never says the tool only builds an unsigned transaction for later submission. This is a notable ambiguity for a tool with a single, minimal annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences, front-loaded with the action and mode, then the weight semantics, then the epoch revert, then the lock side effect. No filler and no repetition of the tool name or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full schema coverage, the description need not explain return values, and it supplies the epoch and lock constraints that no structured field carries. The one remaining hole is the prepare-vs-execute distinction, which matters for an agent chaining this into a signing flow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and every semantic point in the description — relative weights, full replacement, omitted pools voting zero, reset required before withdrawal — is already written into the corresponding schema property descriptions. The prose adds emphasis but no new parameter meaning, so it sits below the baseline rather than at it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names the exact resource and scope: one veNFT's gauge vote, with the reset variant called out. The reader immediately knows the unit of operation (a single veNFT) and the two modes, so it is distinguishable from neighboring prepare_* tools even 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the operative constraints that drive usage: one vote per weekly epoch, a revert on a second attempt, and that the read bundle surfaces lastVoted plus gauge liveness so the caller can check preconditions first. What it lacks is an explicit pointer to the sibling to call for those reads or to prepare_ve33_vote for the Velodrome equivalent, so alternatives are only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_approval_revocationsPrepare ERC-20 approval revocationsA
Read-only
Inspect

Prepare every approve(spender,0) as an exact ordered multi-transaction execution plan. The wallet must not discover or construct the transaction list.

NameRequiredDescriptionDefault
senderYesaddress
chain_idYesEVM chain ID
approvalsYes

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already supplied, the description still adds real behavioural content: the plan is ordered and exact, and the caller must not discover or re-derive the transaction list. Those are genuine planning contracts beyond the annotations. It stops short of stating that no signing or broadcasting occurs, or how gas/nonce are handled, which would have made it 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, both front-loaded with the essential facts: what is produced and how the caller must treat it. There is no filler or restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value detail is not required, and the description covers the plan-building contract and ordering constraint adequately for a three-parameter tool. The remaining gap is edge-case behaviour (mixing multiple chains or tokens, or what happens when a revocation is already in place), which is minor but not covered anywhere else.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, so the schema documents sender, chain_id and the token/spender pair at a basic level. The description adds the semantic that each approvals entry becomes an approve(spender, 0) call, clarifying what token and spender mean in the revocation context, but it says nothing about chain_id handling or multi-chain batching, so it is a modest gain over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ("Prepare") and a concrete resource ("every approve(spender,0)") and states the output artefact: "an exact ordered multi-transaction execution plan". This distinguishes it cleanly from neighbouring planners such as prepare_transfers or prepare_wrap_unwrap without requiring the schema to be opened.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: it is the tool to call when a wallet needs a revocation plan and must not build the list itself. However, there is no explicit when-not guidance, no named alternative for related flows (e.g. prepare_transfers for moving tokens), and no prerequisite stated such as requiring the approvals to already exist on-chain.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_auction_completePrepare auction completionB
Read-only
Inspect

Prepare permissionless auction completion and, when necessary, graduation-pool initialization in the same atomic batch.

NameRequiredDescriptionDefault
senderYesaddress
chain_idYesEVM chain ID
token_idYesdecimal or 0x-hex integer
auction_keyYesPoolKey {token0, token1, config}: token addresses (zero = native), bytes32 config
launch_pool_tickNo
graduation_pool_initializedYes

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

It adds two useful behavioral facts: the action is permissionless (no privileged auth) and both operations are bundled into one atomic batch. However, it does not state preconditions or whether the prepared completion can fail if the auction is not ready. There is also tension with readOnlyHint=true: a tool that prepares a state-changing auction completion is a transaction builder. Although 'prepare' plausibly means it does not execute, the definition does nothing to reconcile this mismatch.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler and no repetition of the title. It is efficient, though its terseness means the reader gets no extra hooks beyond the core claim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. But for a six-parameter transaction-preparation tool with a nested PoolKey and an undocumented launch_pool_tick, the description leaves out preconditions, the meaning of the graduation flag, and the prepare-then-sign workflow. That is a real gap even after accounting for the surrounding structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, and the description documents none of the six parameters directly. The 'when necessary' clause is really about graduation_pool_initialized, but it never names that flag or explains the relationship with launch_pool_tick, which the schema leaves entirely undocumented. It therefore does not compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (prepare) and a specific resource (permissionless auction completion), plus a secondary operation (graduation-pool initialization). It is clearly distinguishable from prepare_auction_create, but it does not explicitly say how it differs from prepare_auction_creator_proceeds or prepare_pool_initialization, which sit adjacent in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'when necessary' signals conditional behavior, but the description never states what triggers it or what state the auction must be in (ended, not yet completed). No alternative tools are named and no when-not-to-use condition is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_auction_createPrepare auction creationC
Read-only
Inspect

Pack the exact interface auction config and prepare mint plus sellAmountByAuction, including approval or native value and deterministic token ID.

NameRequiredDescriptionDefault
saltYesbytes32 hex
senderYesaddress
chain_idYesEVM chain ID
buy_tokenYesToken; zero address = native
sell_tokenYesToken; zero address = native
start_timeYesdecimal integer
sell_amountYesBase units (positive decimal integer)
creator_fee_q32Yesdecimal integer
auction_durationYes
min_boost_durationYes
graduation_pool_fee_q64Yesdecimal integer
graduation_pool_tick_spacingYes

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the single readOnlyHint annotation, the description adds real behavioral content: it produces a mint transaction, folds in an approval or native value, and derives a deterministic token ID. However, it never states that the result is unsigned calldata the caller must sign and broadcast, so the 'prepare mint... including approval' phrasing can be misread as executing a write, which sits uneasily 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single sentence, so it is short, and the core action is front-loaded. But it is a dense run-on of unglossed terms with no structure, so density substitutes for clarity rather than serving it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-required-parameter transaction builder, the description leaves out how fee/timing values are sourced, ordering or precondition constraints, and what the caller does with the prepared output. The presence of an output schema covers return shape, but the surrounding workflow context is largely absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 75% schema coverage the baseline is 3, and the description goes slightly beyond it by linking 'salt' to the deterministic token ID and by explaining that the approval/native-value branch depends on whether a token is the zero address. It still adds nothing about creator_fee_q32, graduation_pool_fee_q64, tick spacing, or the timing parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb is vague ('Pack the exact interface auction config') and the object is described with internal jargon ('sellAmountByAuction', 'exact interface'). It does convey that an auction-creation transaction is being prepared (mint plus approval/native value, deterministic token ID), so the purpose is inferable, but it is not distinguished from siblings such as prepare_auction_complete or prepare_auction_creator_proceeds.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance, no prerequisites (e.g., tokens must exist, pool must be initialized), and no mention of the sibling auction tools. The agent must infer the call context from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_auction_creator_proceedsPrepare auction creator proceeds collectionB
Read-only
Inspect

Prepare collection of creator proceeds for an auction NFT with pending owner validation.

NameRequiredDescriptionDefault
senderYesaddress
chain_idYesEVM chain ID
token_idYesdecimal or 0x-hex integer
auction_keyYesPoolKey {token0, token1, config}: token addresses (zero = native), bytes32 config

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation is consistent with a prepare-style tool that builds rather than executes. The description adds the owner-validation prerequisite, which is useful pre-call context, but says nothing about what the preparation produces or what the caller must do with it, such as signing and submission.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single compact sentence with no filler, and the subject of the operation comes first. It may be slightly too compressed for a multi-parameter transaction-building tool, but it does not waste words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The return-value burden is lifted by the output schema, and parameter details are covered by the schema. For a four-parameter tool with a nested PoolKey, however, the description lacks the workflow context that the agent needs: it should explain what 'prepare' yields and whether the owner-validation state is a precondition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All four parameters have schema descriptions, so the schema does most of the work: sender address, EVM chain ID, token ID, and the PoolKey shape. The description does not explain any parameter, including the relationship between auction_key and token_id, so it adds nothing beyond the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb plus resource: preparing collection of creator proceeds for an auction NFT. This separates it from the neighboring prepare_auction_create and prepare_auction_complete tools. The only weakness is that 'prepare' (build a transaction payload) is not spelled out without background knowledge of the family.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

A single conditional qualifier, 'with pending owner validation,' implies the auction must be in that state before calling, which gives some guidance. It still gives no explicit when-not and names no alternative among the many prepare_* siblings, so the agent has to infer the selection rules.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_fix_pool_pricePrepare a pool price correctionB
Read-only
Inspect

Run the interface-equivalent phased fix-price workflow: provide exact pending pool-price read calldata, then exact router quote calldata, then approvals and target-price execution calldata. The wallet never constructs a route or transaction.

NameRequiredDescriptionDefault
senderYesaddress
pool_idYesdecimal or 0x-hex integer
chain_idYesEVM chain ID
base_tokenYesToken; zero address = native
core_addressYesaddress
quote_resultNo
target_priceYes
swap_deadline_minutesNoEkubo router route deadline; default 30
pending_current_sqrt_ratioNodecimal integer

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is supplied. The description adds real context beyond that: it is a multi-phase workflow and 'the wallet never constructs a route or transaction', clarifying the division of responsibility between tool and client. It does not say whether the produced approvals are bounded, whether phases must be executed in one session, or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the workflow name and then the phase sequence, with no filler. It is dense with domain jargon ('interface-equivalent', 'phased') that costs some readability, but nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 9 parameters, a nested quote_result object, and an output schema, the description covers the workflow shape but leaves out the operational glue: which sibling produces the quote result, where pending_current_sqrt_ratio is read from, and what the caller does with the returned calldata phases. Adequate as a pointer, thin for a tool this complex.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 78%, so the baseline is 3. The description does map loosely onto the key inputs — 'pending pool-price read calldata' corresponds to pending_current_sqrt_ratio, 'router quote calldata' to the nested quote_result object, and 'target-price execution' to target_price — but it gives no format, sourcing, or constraint detail, and swap_deadline_minutes is only explained in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 runs a 'phased fix-price workflow' to prepare a pool price correction, and it clarifies that it emits calldata rather than building a route itself. It stops short of naming or contrasting any sibling (e.g. get_quotes_with_plans, prepare_uniswap_reads), so the agent must infer where this sits in the prepare_* family.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through the stated phase order — pending pool-price read calldata, then router quote calldata, then approvals and target-price execution — which tells the agent this is a multi-step flow. There is no explicit 'use this when…' statement, no prerequisites (where quote_result or pending_current_sqrt_ratio must come from), and no guidance on when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_lido_stakePrepare Lido ETH stakingA
Read-only
Inspect

Prepare the canonical Lido submit call with exact native ETH value and an explicit or zero referral. The agent must read current staking pause and limit state directly; the wallet then simulates the exact transaction.

NameRequiredDescriptionDefault
amountYesExact native ETH stake amount in wei (positive decimal integer)
senderYesaddress
chain_idYesMust be Ethereum chain 1
referralNoOptional Lido referral address; defaults to zero address

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond readOnlyHint, it clarifies that the tool constructs the exact submit call, that live pause and limit validation is the agent’s responsibility, and that the wallet subsequently simulates the transaction. These details help prevent assumptions that the tool checks current staking capacity or performs the stake itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences front-load the operation and then provide the required validation and simulation workflow. There is no filler, and each clause contributes either call semantics or behavioral guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Together with the fully described input schema, read-only annotation, and output schema, the description supplies nearly everything needed to prepare the call correctly. The main remaining gap is that it does not identify where or how to read the pause and limit state, or how the agent should respond to adverse state.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and already documents the wei amount, sender, Ethereum chain 1 restriction, and optional referral default. The description’s exact-value and zero-referral wording reinforces those fields but adds little parameter meaning beyond the schema, so the baseline applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

“Prepare the canonical Lido submit call” identifies a specific transaction-preparation operation for Lido’s native-ETH staking entry point. The exact native ETH value and referral details also distinguish it from the Lido wrap, unwrap, withdrawal-request, and withdrawal-claim siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It supplies a concrete prerequisite: the agent must read current staking pause and limit state directly, followed by wallet simulation of the prepared transaction. It does not name an alternative sibling or explicitly explain what to do when staking is paused or over the limit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_lido_unwrapPrepare wstETH unwrappingB
Read-only
Inspect

Prepare a direct wstETH unwrap call for an exact share amount, returning rebasing stETH to the sender.

NameRequiredDescriptionDefault
amountYesExact wstETH amount to unwrap in base units (positive decimal integer)
senderYesaddress
chain_idYesMust be Ethereum chain 1

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true is already supplied by annotations, but the description usefully adds that this only *prepares* a call (no execution) and that the proceeds are rebasing stETH returned to the sender. It omits approval/permit requirements and any precondition checks, which matter for a transactional preparation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with the action front-loaded and no filler. It is efficient, though so terse that it sacrifices any routing or prerequisite structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations on safety, a full output schema, and complete parameter documentation, the remaining gap is routing: among many Lido-related siblings (prepare_lido_wrap, prepare_wrap_unwrap, prepare_lido_withdrawal_request/claim) the agent gets no explicit decision rule. Adequate but not fully self-sufficient for selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 only added nuance is "exact share amount" in the description, which reinforces the share-denominated (non-rebasing) nature of `amount` beyond the schema's "base units" wording; chain_id's Ethereum-1 restriction is left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Prepare a direct wstETH unwrap call" gives a specific verb plus resource, and the qualifiers "direct" and "rebasing stETH" separate it from the queued withdrawal path (prepare_lido_withdrawal_request). It stops short of naming the sibling it displaces (prepare_wrap_unwrap, prepare_lido_wrap), 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by "direct ... unwrap": an agent can infer this is the synchronous share-to-stETH path rather than the withdrawal queue. There is no explicit when-to-use, when-not-to-use, or named alternative, and no prerequisites such as needing wstETH balance or an approval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_lido_withdrawal_claimPrepare a Lido withdrawal claimA
Read-only
Inspect

Prepare claimWithdrawal for one finalized, unclaimed unstETH request ID owned by the sender. The agent must verify ownership and finalization directly through the user's wallet/RPC before preparation.

NameRequiredDescriptionDefault
senderYesaddress
chain_idYesMust be Ethereum chain 1
request_idYesFinalized, unclaimed unstETH NFT request ID owned by sender (positive decimal integer)

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true supplied, the key added value is the disclosed precondition burden: this tool does not check ownership or finalization, and the agent is responsible for verifying both via the user's wallet/RPC. It also bounds scope to exactly one request ID, so no batching is implied. It does not say whether preparation is chain-restricted beyond the schema, but nothing contradicts the read-only annotation since 'prepare' means building a transaction, not submitting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the operation and its singular scope come first, then the agent's verification duty. No filler, no restatement of the title, and the most decision-relevant constraint is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and all three parameters are fully documented in the schema. What remains is a modest gap: the description never states the chain/contract context of the claim or what the prepared transaction will contain, which an agent might want for a mainnet-only Ethereum operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter already carries its constraint (chain 1, address, positive decimal request ID), so the schema does the heavy lifting and a baseline 3 applies. The description adds a cross-parameter relationship the schema cannot express — that request_id must be owned by sender and already finalized and unclaimed — but contributes nothing further about formats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and target (prepare the claimWithdrawal call) plus the exact object being claimed: one finalized, unclaimed unstETH request ID. It implicitly separates itself from prepare_lido_withdrawal_request and prepare_lido_unwrap through the 'finalized, unclaimed' qualifier, though it never names those siblings, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage conditions are implied rather than spelled out: the request must be finalized, unclaimed, singular, and owned by the sender, and the description tells the agent to verify these through the wallet/RPC first. There is no explicit 'use X instead when the request is not yet finalized' routing against prepare_lido_withdrawal_request, which is the obvious adjacent sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_lido_withdrawal_requestPrepare a Lido withdrawal requestA
Read-only
Inspect

Prepare one or more bounded stETH withdrawal requests with an exact queue approval and cleanup. This irreversible asynchronous action mints unstETH NFTs, stops rewards while queued, and can settle below 1:1 after extraordinary losses; wallet simulation and clear user review are required.

NameRequiredDescriptionDefault
ownerNoRecipient/owner of the unstETH request NFTs; defaults to sender (address)
senderYesaddress
amountsYesOne to 64 stETH request amounts, each from 100 wei through 1000 stETH
chain_idYesMust be Ethereum chain 1

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond readOnlyHint, it discloses substantial downstream behavior: irreversibility, asynchronous settlement, unstETH NFT minting, rewards stopping while queued, possible below-1:1 settlement after extraordinary losses, and approval cleanup. However, it does not plainly state that this read-only preparation tool does not itself submit the transaction, leaving some ambiguity about when those state-changing consequences occur.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences front-load the operation and then concentrate on material risks and required review. There is no filler, and each clause contributes operational or safety information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Together with the fully described input schema and existing output schema, the description supplies enough detail to prepare the request cautiously and understand its major financial consequences. It would be more complete with an explicit prepare-versus-submit statement and lifecycle guidance covering finalization and the separate claim tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including amount bounds, base units, chain restriction, and the owner default, so the baseline is 3. The description reinforces multiple bounded requests and exact approval but adds no concrete parameter syntax, constraints, or relationships beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence specifies the verb, resource, and scope: preparing one or more bounded stETH withdrawal requests with exact queue approval and cleanup. The unstETH NFT and queue details identify the withdrawal-request stage, but the description does not explicitly differentiate this tool from prepare_lido_withdrawal_claim or the staking and wrapping siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly frames the tool around initiating queued stETH withdrawals and establishes wallet simulation and clear user review as required preconditions. It does not explain when withdrawal is preferable to another Lido operation or direct the agent to prepare_lido_withdrawal_claim once a request becomes claimable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_lido_wrapPrepare stETH wrappingA
Read-only
Inspect

Prepare an exact stETH approval, wstETH wrap call, and allowance cleanup in one atomic wallet plan.

NameRequiredDescriptionDefault
amountYesExact stETH amount to wrap in base units (positive decimal integer)
senderYesaddress
chain_idYesMust be Ethereum chain 1

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true is consistent with a tool that only builds a plan rather than broadcasting it. Beyond those annotations, the description adds real behavioral content: the plan is atomic, contains exactly three parts, uses an exact approval amount rather than an unlimited one, and performs allowance cleanup afterwards. It still does not state what it returns or whether the plan must be submitted separately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that names the three plan components and the atomicity property, with no filler or repetition of the title. Every clause carries information an agent needs in order to select and invoke the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the return shape need not be explained, and the annotations supply the safety profile. The input schema fully documents all three parameters. The only meaningful gap is the lack of explicit sibling routing guidance among the several Lido and generic wrap/unwrap prepare tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (amount, sender, chain_id) are already documented in the schema, including the base-units format and the chain 1 constraint. The description's phrase 'exact stETH amount' reinforces the amount parameter, but it adds no format or constraint detail beyond the schema. Baseline 3 applies when the schema carries the weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Prepare') and a concrete resource set: an exact stETH approval, a wstETH wrap call, and an allowance cleanup, bundled into one atomic wallet plan. That is far more informative than the title. It does not explicitly contrast itself with the nearest siblings (prepare_lido_unwrap, prepare_wrap_unwrap), so it falls just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use or when-not-to-use guidance and no prerequisites (e.g., needing an stETH balance, Ethereum mainnet only). An agent must infer from the name that this is the wrapping path rather than the unwrapping path or the generic prepare_wrap_unwrap alternative. Usage is only implied, and the presence of overlapping siblings makes explicit routing more valuable here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_lp_position_depositPrepare an LP position depositA
Read-only
Inspect

Prepare a v3 position mint or add_liquidity, initializing a new pool at initial_tick when requested, with every approval, refund and cleanup step. Ekubo ticks use base 1.000001, so tick = ln(price in base units) x 10^6 and a Uniswap-style 1.0001 calculation is 100x too small. The token ratio follows the range and current price: do every swap first, re-read the tick with the pool's current_state_query, then mint once. If the wallet lacks one side, execute that swap separately and size the deposit from the measured balance after its receipt, never a quoted output. See ekubo://docs/lp-position-workflow.

NameRequiredDescriptionDefault
modeNomint_new
senderYesaddress
pool_idNoOmit when pool_key is supplied (decimal or 0x-hex integer)
chain_idYesEVM chain ID
pool_keyNoRequired for an uninitialized pool. PoolKey {token0, token1, config}: token addresses (zero = native), bytes32 config
token_idNoadd_liquidity only (decimal or 0x-hex integer)
tick_lowerYes
tick_upperYes
max_amount0YesMax token0 base units; 0 for single-sided (decimal integer)
max_amount1YesMax token1 base units; 0 for single-sided (decimal integer)
core_addressYesv3 Core address
initial_tickNoUninitialized pool only: initializes at this tick
slippage_bpsYesUser-selected liquidity slippage
pool_initializedNofalse only for a new pool to initialize here

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, so the description carries most of the burden and does add real context: the tool bundles approval, refund and cleanup steps, can initialize a pool at initial_tick, and requires a swap-then-recheck-then-mint ordering. It never explicitly says it returns unsigned transactions rather than broadcasting, which is the one behavioral fact an agent most needs confirmed for a 'prepare' tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action, then layers the tick-math caveat and the ordering rules, each sentence adding a distinct constraint. Some sentences are long and the 'See ekubo://docs/lp-position-workflow' pointer is good but arrives after dense prose, so it is efficient rather than optimally skimmable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter, nested-object tool with an output schema, the description covers the hard parts: pool initialization, tick scaling, swap-before-mint ordering, and single-sided sizing from measured balances. Gaps remain around mode selection and the pool_id/pool_key and token_id conditions, which are only partially handled by the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 79%, so the baseline is 3. The description adds genuine meaning for the otherwise undocumented tick_lower/tick_upper by giving the base-1.000001 conversion and warning that a 1.0001 calculation is 100x too small, and it ties the token ratio to the range and current price. It says nothing about mode, token_id, pool_initialized, initial_tick or slippage_bps beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: preparing a v3 position mint or add_liquidity, including optional pool initialization, approvals, refunds and cleanup. It is clear what the tool produces. It does not explicitly differentiate itself from sibling preparers such as prepare_uniswap_v3_add_liquidity or prepare_pool_initialization, leaving the agent to infer that this is the Ekubo-specific variant from the ekubo docs reference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Strong procedural guidance: do every swap first, re-read the tick with the pool's current_state_query, then mint once; execute a missing-side swap separately and size the deposit from the measured balance after receipt, never a quoted output. What is missing is selection guidance between mode=mint_new and add_liquidity, and when to pick this tool over the Uniswap add-liquidity siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_lp_position_earnings_claimPrepare an LP fee or reward claimB
Read-only
Inspect

Prepare collection of all accrued fees from an owned standard position or rewards from an owned Ve33 position, keeping its liquidity and NFT. Run its current_state_query first: require every inner call to succeed and the decoded owner to equal expected_owner, and pass the decoded fees or rewards to the wallet with the plan.

NameRequiredDescriptionDefault
senderYesPosition owner (address)
chain_idYesEVM chain ID
token_idYesPosition NFT ID (decimal or 0x-hex integer)
recipientNoDefaults to sender (address)
positions_addressYesPositions or Ve33Positions manager (address)

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, and the description usefully confirms non-destructiveness ('keeping its liquidity and NFT') plus an owner-verification gate. However it leans on undefined terms ('its current_state_query', 'expected_owner') that are not parameters or schema fields, so the disclosed behavior is not fully actionable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the outcome and then the pre-flight requirement; no filler. The second sentence is dense with conditional logic but still parses.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the mutation scope is covered. The gap is the reference to a 'current_state_query' and 'expected_owner' that have no counterpart in the input schema, leaving an agent unsure how to satisfy the stated precondition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds that the owner is validated against an expected value and that decoded amounts flow to 'the wallet' (loosely implying recipient), but it adds no format or default semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (prepare collection) and a precisely scoped resource: accrued fees from a standard LP position OR rewards from a Ve33 position, while preserving liquidity and the NFT. That scope statement is what separates it from collect/claim siblings, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete prerequisite sequence ('Run its current_state_query first', all inner calls must succeed, decoded owner must equal expected_owner), which is real when-to-use guidance. It never addresses when to prefer this over prepare_ve33_claim_fees, prepare_uniswap_v3_collect_fees, or prepare_rewards_claim, so alternative 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.

prepare_lp_position_transferPrepare an LP position transferA
Read-only
Inspect

Prepare the exact safeTransferFrom transaction for an owned LP position and include pending ownership validation. The position, liquidity, and unclaimed earnings move together.

NameRequiredDescriptionDefault
senderYesaddress
chain_idYesEVM chain ID
token_idYesdecimal or 0x-hex integer
recipientYesaddress
positions_addressYesaddress

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, and the description is consistent with that by framing the tool as preparing a transaction rather than sending one. It adds real behavioral detail beyond the annotations: the payload is an exact safeTransferFrom call, ownership validation is still pending/included, and position, liquidity, and unclaimed earnings move as a unit. It does not say whether the returned transaction must be signed and broadcast separately or which tool/step resolves the ownership validation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and artifact, and the second sentence carries substantive semantics (what moves together) rather than filler. Nothing is redundant with the title or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full schema coverage, the description needn't explain return values, and it correctly focuses on what is transferred and the validation state. The only gap is the mechanics of 'pending ownership validation' — whether it blocks execution or is resolved elsewhere — which an agent preparing this call would want to know.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% across all five required parameters, so the schema already carries parameter meaning. The description adds nothing parameter-specific (e.g., how sender must relate to token_id ownership, or whether positions_address is the LP NFT contract), so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Prepare') and a specific artifact ('the exact safeTransferFrom transaction for an owned LP position'), which separates it from the deposit/withdraw/earnings-claim siblings in the same family. It stops short of naming any sibling explicitly, so the differentiation is implied by the 'transfer' resource rather than spelled out.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'for an owned LP position' implies a precondition (the caller must own the token) and the verb implies this builds calldata rather than executing. There is no explicit statement of when to prefer this over prepare_transfers or the deposit/withdraw siblings, and no when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_lp_position_withdrawPrepare one or more LP position withdrawalsA
Read-only
Inspect

Prepare partial or full withdrawals from one or more owned positions in one plan, collecting fees or Ve33 rewards and keeping the NFTs. Read each position's current_state_query first and request no more liquidity than it decodes; require every inner call to succeed and owner to equal expected_owner. Hand the wallet every principal and earnings estimate and recipient.

NameRequiredDescriptionDefault
senderYesOwner of every position (address)
chain_idYesEVM chain ID
withdrawalsYesOne entry per position

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only readOnlyHint=true supplied, the description carries most of the burden and does add real context: the position NFT is retained, fees/rewards are swept into the same operation, liquidity is bounded by decoded current state, and the whole batch is all-or-nothing ('require every inner call to succeed'). It does not say what the prepared output looks like or whether approval steps are needed, but the output schema covers the return shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the operation and its scope, then preconditions, then output handoff. Dense but every sentence carries a constraint. Mild deduction for jargon like 'current_state_query' and 'inner call' that assume familiarity with sibling tooling.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a multi-position batch preparation tool with a 3-parameter schema and an output schema, the description covers scope, safety constraints, and recipient/earnings handling adequately. The remaining gap is that it never states whether approvals are included or how the batch behaves on partial failure beyond 'require every inner call to succeed'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 adds meaning beyond the schema: it explains that liquidity must not exceed the decoded current-state value, that owner must match expected_owner (the sender constraint), and that the recipient receives principal plus earnings estimates. These are semantic constraints rather than restatements of the field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb (Prepare) plus the exact resource (partial or full withdrawals from one or more owned positions in one plan) and states the two distinguishing behaviors: fees/Ve33 rewards are collected and the NFTs are kept. That separates it cleanly from siblings like prepare_lp_position_deposit, prepare_lp_position_earnings_claim, and prepare_uniswap_v3_remove_liquidity 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete preconditions — read each position's current_state_query first, never request more liquidity than that decodes, require every inner call to succeed, and require owner to equal expected_owner. What is missing is explicit routing against alternatives: it never says when to use this instead of a plain remove-liquidity tool or a separate earnings-claim tool when only rewards are wanted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_manual_pool_boostPrepare a manual pool boostB
Read-only
Inspect

Compute the exact Q32 boost rates and prepare all token approvals, native value, and boost calldata used by the interface.

NameRequiredDescriptionDefault
senderYesaddress
amount0YesTotal token0 base units over the boost (decimal integer)
amount1YesTotal token1 base units over the boost (decimal integer)
chain_idYesEVM chain ID
end_timeYesUnix seconds, after start_time (decimal integer)
pool_keyYesPoolKey {token0, token1, config}: token addresses (zero = native), bytes32 config
start_timeYesUnix seconds (decimal integer)

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true is consistent with a tool that only computes and assembles calldata, so the safety bar is lower. The description usefully discloses that the response bundles token approvals, native value, and calldata — beyond what the annotations state. It stops short of saying whether anything is submitted on-chain, how approvals are encoded, or anything about rate/price validity, which would have earned a higher score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence with the main output artifacts front-loaded and no filler. The trailing clause 'used by the interface' is slightly vague and adds little, but the rest is dense and purposeful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 7 required parameters including a nested PoolKey, plus annotations and an output schema, the definition is minimally adequate — the return shape is covered by the output schema. What is missing is the operational context: what 'manual' distinguishes, whether the caller must be the pool owner or hold a position, and how the time window and amounts constrain the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter carries a description, so the schema already carries the parameter semantics. The description adds no syntax, defaults, or constraints (e.g., how amount0/amount1 relate to the computed boost rates, or how start_time/end_time bound the boost), which is the expected baseline 3 when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb pair ('Compute ... and prepare') and names concrete artifacts: Q32 boost rates, token approvals, native value, and boost calldata. An agent can tell this produces an unsigned boost transaction bundle rather than executing one. It does not, however, name a sibling it is distinct from, so a reader must infer the boundary against the other prepare_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance. Nothing tells the agent whether this is the right tool for a manual boost versus other Uniswap V4 prepare_* flows, nor what prerequisites (existing allowance, pool existence, valid time window) make the call meaningful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_merkl_claimPrepare a Merkl reward claimA
Read-only
Inspect

Prepare one Distributor claim for every Merkl reward token the sender holds on a chain, from amounts and proofs fetched from https://api.merkl.xyz/v4/users/{address}/rewards/summary. The proofs are folded into their Merkle root here, and the read bundle checks it against the root the chain enforces, so Merkl's API need not be trusted. Distinct from prepare_rewards_claim, which claims Ekubo's own incentive drops.

NameRequiredDescriptionDefault
senderYesClaiming wallet; the leaf's user address
rewardsYesOne entry per reward token on this chain, all in one claim
chain_idYesFrom the Merkl rewards summary

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, and the description adds real substance beyond that: proofs are folded into their Merkle root locally and the read bundle is checked against the on-chain root, so Merkl's API need not be trusted. It also conveys the batching behavior (all tokens for a chain in one claim). It stops short of saying what the prepared bundle contains or what signing/execution step follows, but an output schema exists to carry the return shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly packed sentences, front-loaded with the action and scope, followed by the trust-model rationale and sibling disambiguation. The embedded API URL is informative about data provenance but slightly overstates the tool's own behavior given the caller must pass rewards in, costing a little precision.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a prepare-style tool with full schema coverage, an output schema, and a minimal annotation set, the description supplies the missing trust model, batching scope, and sibling differentiation. Nothing an agent needs to select and invoke it correctly is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 sender as the leaf user address, amount as cumulative rather than claimable delta, and proofs as ordered bytes32 values. The description reinforces the per-chain grouping ('one Distributor claim for every Merkl reward token... on a chain') but adds no new format or constraint 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Prepare one Distributor claim for every Merkl reward token the sender holds on a chain'), including the per-chain/per-sender scope. It also explicitly names the sibling it is not (prepare_rewards_claim, Ekubo's own incentive drops), 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear negative routing rule against prepare_rewards_claim and implies use when a sender has Merkl rewards to claim on a given chain. It does not cover the relationship to get_rewards_claims_by_owner or state prerequisites such as needing the summary fetched first, and the phrasing 'from amounts and proofs fetched from' the API is ambiguous about whether the tool fetches data or the caller must supply it (the schema requires the caller to supply `rewards`).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_morpho_vault_depositPrepare a guarded Morpho vault depositA
Read-only
Inspect

Prepare an exact-approval Morpho Vault V2 deposit through the official SDK's VaultBundlesV1 route. The caller supplies a fresh RAY-scaled max share price, which is enforced onchain against ERC-4626 share-price inflation; shares are minted to the sender and the server performs no data fetch.

NameRequiredDescriptionDefault
vaultYesExact Morpho Vault V2 address returned by get_morpho_vaults
amountYesPositive underlying-asset amount in base units (positive decimal integer)
senderYesWallet that will execute the Morpho action (address)
chain_idYesChain returned by get_morpho_vaults
deadlineNoUnix timestamp after which VaultBundlesV1 rejects the deposit; defaults to two hours after preparation. One already past makes the plan a guaranteed revert. (positive decimal integer)
recipientNoVault-share recipient; must equal sender if supplied, because VaultBundlesV1 mints shares only to the transaction sender (address)
max_share_price_rayYesMaximum acceptable vault share price in RAY (1e27), derived by the agent from fresh Morpho/onchain vault state plus the user's slippage tolerance (positive decimal integer)

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond readOnlyHint=true, the description discloses real behavior: the plan uses exact-approval semantics, the max share price is enforced onchain as ERC-4626 inflation protection, shares are minted only to the sender, and 'the server performs no data fetch' — meaning the tool does not verify state itself. The weak point is that it does not say what the tool returns (an unsigned plan) or that signing/broadcast is out of scope, though the output schema covers the return shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, front-loaded with the action and the route, with no filler. It is jargon-heavy (RAY, VaultBundlesV1, ERC-4626) but each clause carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter prepare tool with a fully documented schema and an output schema, the description supplies the crucial missing context: the price input must come from fresh state and the server does no fetching of its own. It omits only the downstream handoff (sign/submit the returned plan) and any slippage/price-staleness failure modes beyond the onchain guard.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 explaining why max_share_price_ray must be freshly derived and how it is enforced onchain, and by reinforcing that shares go to the sender (constraining recipient). It does not add anything on amount, deadline, or chain_id beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Prepare an exact-approval Morpho Vault V2 deposit') and names the exact route ('official SDK's VaultBundlesV1'). It distinguishes itself from redeem/withdraw siblings by the word 'deposit' but never names an alternative tool explicitly, so differentiation is implicit 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied rather than spelled out: 'the caller supplies a fresh RAY-scaled max share price' signals the agent must first read onchain vault state, and the schema points to get_morpho_vaults for the address and chain. There is no explicit when-to-use/when-not guidance versus prepare_morpho_vault_redeem, prepare_morpho_vault_withdraw, or direct-approval flows.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_morpho_vault_redeemPrepare a Morpho vault redemptionA
Read-only
Inspect

Prepare a direct Morpho Vault V2 redemption for an exact share amount. Prefer redeem for full exits so the user's complete fresh share balance can be bound without asset/share rounding dust.

NameRequiredDescriptionDefault
ownerNoVault-share owner; defaults to sender (address)
vaultYesExact Morpho Vault V2 address returned by get_morpho_vaults
senderYesWallet that will execute the Morpho action (address)
sharesYesExact vault-share amount to redeem in base units (positive decimal integer)
chain_idYesChain returned by get_morpho_vaults
recipientNoUnderlying-asset recipient; defaults to sender (address)

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true is consistent with a 'prepare' tool that builds a transaction rather than executing it, and the output schema covers what is returned. The description adds the useful dust/rounding rationale for full exits, but says nothing about what the prepared transaction includes, whether an approval is required, or any prerequisites — modest added 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, with the core action stated first and the selection heuristic second. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given full schema coverage, an output schema, and a read-only annotation, the description covers the essentials an agent needs to route correctly. The main residual gap is not clarifying the interaction with prepare_morpho_vault_withdraw for partial exits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema already documents all six parameters including the owner/recipient defaults and share base units. The description only reinforces that shares must be an exact amount; it does not clarify the owner/recipient defaults or the shares-vs-assets distinction beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Prepare a direct Morpho Vault V2 redemption for an exact share amount.' That clearly distinguishes it from deposit and from asset-denominated operations. It stops short of naming prepare_morpho_vault_withdraw explicitly, so the distinction is implied 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Prefer redeem for full exits' gives a concrete selection rule tied to a user intent (full exit), including the reason (avoiding rounding dust). It lacks a when-not-to-use statement naming the alternative withdraw tool for partial/asset-denominated exits, which would make it a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_morpho_vault_withdrawPrepare a Morpho vault withdrawalA
Read-only
Inspect

Prepare a direct Morpho Vault V2 withdrawal for an exact underlying-asset amount from a fixed vault. Current shares, liquidity, permissions, and vault state are established by direct agent discovery and exact wallet simulation.

NameRequiredDescriptionDefault
ownerNoVault-share owner; defaults to sender (address)
vaultYesExact Morpho Vault V2 address returned by get_morpho_vaults
amountYesExact underlying-asset amount to withdraw in base units (positive decimal integer)
senderYesWallet that will execute the Morpho action (address)
chain_idYesChain returned by get_morpho_vaults
recipientNoUnderlying-asset recipient; defaults to sender (address)

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only readOnlyHint=true supplied, the description does add one genuinely useful behavioral fact: shares, liquidity, permissions and vault state are NOT validated here but must be established beforehand via agent discovery and wallet simulation. That tells the agent this is a plan/calldata builder rather than a validated execution path. However, the phrasing is terse and jargon-heavy, and it never states plainly that the output is an unsigned transaction or that the caller is responsible for the safety checks, so the disclosure is present but under-articulated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, purpose front-loaded, no filler or marketing language. The second sentence is dense and slightly opaque ('direct agent discovery and exact wallet simulation'), costing a little clarity, but nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Six parameters at full schema coverage plus an output schema mean the description only needs to carry purpose and behavioral caveats, and it does both. The remaining gap is sibling disambiguation against prepare_morpho_vault_redeem and the other prepare_* withdraw tools, which would be cheap to add and would materially help selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including owner/recipient defaults and base-unit amount is already documented. The description reinforces that the amount is an exact underlying-asset figure rather than a share count, which is a meaningful disambiguation from redeem, but it adds no syntax or constraint detail beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Prepare a direct Morpho Vault V2 withdrawal') and pins down scope ('exact underlying-asset amount from a fixed vault'), which implicitly separates it from the share-denominated sibling prepare_morpho_vault_redeem. It stops short of naming that sibling or stating the amount-vs-shares distinction explicitly, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the 'fixed vault' and 'exact underlying-asset amount' framing suggests the vault address must come from discovery, and the schema points at get_morpho_vaults. There is no explicit when-to-use/when-not or a named alternative such as prepare_morpho_vault_redeem for share-based exits, so selection guidance 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.

prepare_oracle_capacity_expansionPrepare oracle capacity expansionB
Read-only
Inspect

Prepare the interface's permissionless Oracle expandCapacity call for one ERC-20 token.

NameRequiredDescriptionDefault
tokenYesToken; zero address = native
senderYesaddress
chain_idYesEVM chain ID
min_capacityYes

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals that preparation is non-mutating. The description adds that the underlying call is permissionless and targets one token, but it does not explain what preparing entails, such as transaction-request generation, approval assumptions, or behavior when capacity is already sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or repetition. The terseness is a completeness issue, not a conciseness issue.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a domain-specific prepare tool with four required parameters, the description omits when to use it, what preparation yields, and how min_capacity is interpreted. The output schema and readOnlyHint cover return values and safety partially, but the definition is not complete enough for confident invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%, and the description mentions only the token ('one ERC-20 token'), not sender, chain_id, or min_capacity. It also says ERC-20-only while the schema explicitly allows the native token via the zero address, and min_capacity has no schema description or description-level explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Prepare') and unique resource ('permissionless Oracle expandCapacity call') scoped to one token. It is distinguishable from the many other prepare_* siblings by naming a unique protocol action, though it does not explain what Oracle capacity expansion entails.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It says only that the target is one ERC-20 token; there is no guidance on when to use this rather than another prepare tool, what prerequisites exist, or when capacity expansion is appropriate. Usage 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.

prepare_pool_initializationPrepare standalone pool initializationA
Read-only
Inspect

Prepare one permissionless maybeInitializePool transaction for a v3 PoolKey and initial tick; prepare_lp_position_deposit with pool_initialized=false does the same atomically with the mint.

NameRequiredDescriptionDefault
senderYesSubmitting wallet (address)
chain_idYesEVM chain ID
pool_keyYesPool to initialize. PoolKey {token0, token1, config}: token addresses (zero = native), bytes32 config
core_addressYesv3 Core address
initial_tickYesThe first initialization permanently sets the price

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond readOnlyHint, it discloses that preparation produces one transaction, that the operation is permissionless, and that the sibling can perform the work atomically with a mint. Preparing rather than submitting a transaction is consistent with readOnlyHint, but the description does not explain already-initialized-pool behavior or any validation performed during preparation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence front-loads the exact operation and then provides the sibling alternative without filler. Although technically dense, its protocol-specific terms and exact pool_initialized=false setting are useful rather than unnecessary wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Together with the fully documented input schema, output schema, and read-only annotation, the description provides enough context to select and invoke the tool correctly. Its main remaining gap is the meaning of maybeInitializePool when initialization has already occurred, along with any preparation-time validation or subsequent signing workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including the nested PoolKey structure and the warning that initial_tick permanently sets the first price. The description reinforces how PoolKey and initial_tick are used but adds no further encoding, format, or value-selection guidance, so the schema appropriately does most of the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific action and resource: preparing one maybeInitializePool transaction for a v3 PoolKey and initial tick. It also distinguishes the tool from prepare_lp_position_deposit by identifying that sibling's atomic initialization-and-mint behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly routes agents to prepare_lp_position_deposit with pool_initialized=false when initialization should be combined atomically with a mint. The single-transaction wording and standalone title make this tool's contrasting use case clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_revenue_buybacksPrepare revenue buyback maintenanceC
Read-only
Inspect

Prepare the exact selected ended-order collections, protocol-fee withdrawals, and token rolls in interface order within one atomic batch of decodable steps.

NameRequiredDescriptionDefault
senderYesaddress
chain_idYesEVM chain ID
roll_tokensYes
protocol_fee_pairsYes
ended_order_collectsYes

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already tells the agent this builds rather than executes, and that matches the 'prepare ... decodable steps' framing, so there is no contradiction. The description does add real behavioral context: a single atomic batch, interface-ordered steps, and decodability. It still omits prerequisites (approvals, sender ownership of orders), what happens if one component fails, and any cross-chain/ordering constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the operation kinds and the atomicity constraint are stated first. It is dense and jargon-heavy ('interface order', 'decodable steps', 'rolls'), but nothing in it is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and readOnlyHint declared, the description need not explain return values or safety, and it correctly stays focused on composition. But for a 5-required-parameter mutation-preparation tool with 40% schema coverage and complex nested array inputs, it leaves chain/sender semantics, ordering rules, and preconditions unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 40%, and the schema descriptions themselves are bare ('address', 'decimal integer'), so the description carries weight here. It does implicitly map three required parameters (ended_order_collects, protocol_fee_pairs, roll_tokens) to the three operation kinds, but chain_id and sender are never mentioned, and it says nothing about whether the arrays are ordered, what 'interface order' means for element sequence, or fee/end_time formatting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a verb (prepare) and enumerates the three operation kinds composed into the batch (ended-order collections, protocol-fee withdrawals, token rolls), which is more informative than the name alone. However 'buybacks' from the name/title is never explained or connected to these operations, and nothing distinguishes it from close siblings such as prepare_twamm_order_collection or prepare_rewards_claim. An agent can guess the general domain but not the exact selection criteria.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no when-not-to-use, and no alternative sibling is named. The phrase 'exact selected' implies the caller must have already chosen orders/tokens elsewhere, but which tool supplies those selections (e.g. get_stonx_allocation_recommendation or a position query) is left entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_rewards_claimPrepare incentive reward claimsC
Read-only
Inspect

Prepare one Incentives claim or the interface's allow-failure Multicall3 aggregate for multiple claims.

NameRequiredDescriptionDefault
claimsYes
senderYesaddress
chain_idYesEVM chain ID

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true is consistent with a "prepare" tool that builds calldata rather than broadcasting, and the description does add one real behavioral trait beyond the annotations: multi-claim batches go through an allow-failure Multicall3 aggregate, so one bad claim does not revert the batch. It still never states that the output is an unsigned transaction, nor any auth or allowance prerequisites, and the phrasing is dense with protocol jargon.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single front-loaded sentence with no filler, which is good, but the compactness comes at the cost of clarity: "the interface's allow-failure Multicall3 aggregate" is a noun pile an agent has to decode, and the sentence only covers batching, not the tool's core single-claim behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is an output schema, so return values need not be explained, but for a three-parameter claim tool with nested proof/key structures the description omits prerequisites (where proofs come from, that sender must be the claiming account) and the single-vs-multi behavior contract beyond the batching hint. It is minimally viable rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 67%, and the description contributes nothing about the three required parameters: it does not explain the claims array element shape (drop_address, key.owner/token/root, claim.index/account/amount, proof), what sender represents, or how chain_id should be formatted. All of that burden falls on the partially documented schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a verb ("Prepare") and a resource ("Incentives claim"), plus the batching variant ("Multicall3 aggregate for multiple claims"). However, "Incentives" is unexplained jargon and nothing distinguishes this from the many look-alike siblings (prepare_merkl_claim, prepare_aerodrome_incentive_claim, prepare_lp_position_earnings_claim), so an agent cannot confidently pick it 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is an implicit rule (one claim vs. multiple claims → aggregate), but no explicit when-to-use/when-not guidance and no pointer to the natural upstream step, get_rewards_claims_by_owner, for obtaining the proofs and claim keys this tool requires. The agent must infer the whole workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_sky_savings_depositPrepare a Sky savings depositA
Read-only
Inspect

Prepare an exact USDS approval, ERC-4626 sUSDS deposit, and allowance cleanup as one atomic wallet plan. The direct vault interface has no minimum-shares or deadline field, so a fresh preview and exact wallet simulation are mandatory.

NameRequiredDescriptionDefault
amountYesExact USDS deposit amount in base units (positive decimal integer)
senderYesWallet that will execute the Sky savings action (address)
chain_idYesMust be Ethereum chain 1
receiverNosUSDS recipient; defaults to sender (address)

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, so the description has room to add value, and it does: it discloses the composition of the plan (approve → deposit → allowance cleanup), that the three steps are atomic, and that the vault interface omits minimum-shares and deadline protections. It stops short of saying explicitly that nothing is broadcast on-chain or what the plan output looks like, but the “wallet plan” phrasing is consistent with the read-only annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero filler. The composition of the plan is front-loaded, and the rationale for the mandatory simulation follows immediately as supporting context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value detail is unnecessary, and the description covers the multi-step atomicity, token identities, and the missing vault safeguards. The main residual gap is the absence of routing guidance against the many sibling prepare_* tools, though the deposit-specific naming mitigates this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents amount, sender, chain_id and receiver; the description only reinforces the “exact” nature of the amount and the approval. It adds no new meaning about the receiver default or the chain-1 restriction beyond what the schema states, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (“Prepare”) and a precisely scoped resource: an exact USDS approval, an ERC-4626 sUSDS deposit, and an allowance cleanup bundled as one atomic wallet plan. The deposit framing plus the sUSDS/ERC-4626 identifiers distinguish it cleanly from the sibling prepare_sky_savings_redeem and prepare_sky_savings_withdraw tools without needing their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a hard precondition — a fresh preview and exact wallet simulation are mandatory because the vault interface lacks minimum-shares and deadline fields — which is real usage context. However, it never states when to choose this over the sibling redeem/withdraw/approval-revocation tools, nor any exclusions or prerequisites regarding token balances or chain.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_sky_savings_redeemPrepare a Sky savings redemptionA
Read-only
Inspect

Prepare a direct sUSDS ERC-4626 redemption for an exact share amount. Use a fresh wallet/RPC balance and preview, then require exact wallet simulation before authorization.

NameRequiredDescriptionDefault
ownerNosUSDS owner; defaults to sender (address)
senderYesWallet that will execute the Sky savings action (address)
sharesYesExact sUSDS share amount to redeem in base units (positive decimal integer)
chain_idYesMust be Ethereum chain 1
receiverNoUSDS recipient; defaults to sender (address)

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, so the description carries the rest, and it does add real value: this is a non-executing preparation step gated by a fresh balance read, a preview, and mandatory wallet simulation before authorization. That workflow constraint is not derivable from the annotations. It stops short of stating what the preparation actually emits (unsigned transaction vs. plan object) or whether an approval is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the core purpose front-loaded and no filler. The second sentence is dense with prerequisites but still readable; a small loss for jargon ('fresh wallet/RPC balance') that an unfamiliar agent may need to unpack.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the schema covers all five parameters. What is left implicit is the transaction lifecycle: whether preparation produces an authorization-ready transaction, whether a separate simulation or submission tool follows, and how approval for the sUSDS shares is handled when owner differs from sender.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter including owner/receiver defaults and the chain-1 constraint is already documented in the schema. The description echoes 'exact share amount' but adds no semantics about base units, owner/receiver defaults, or the chain restriction beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: prepare a direct sUSDS ERC-4626 redemption, scoped to an exact share amount. The 'exact share amount' phrasing implicitly separates it from prepare_sky_savings_withdraw (asset-denominated), but no sibling is named explicitly, so an agent must infer that distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence gives procedural guidance (use fresh wallet/RPC balance and preview, require wallet simulation before authorization), which implies when the tool fits into a workflow. However, it never states when to choose this over prepare_sky_savings_withdraw or when not to use it at all, leaving the sibling routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_sky_savings_withdrawPrepare a Sky savings withdrawalA
Read-only
Inspect

Prepare a direct sUSDS ERC-4626 withdrawal for an exact USDS amount. The server does not query current exchange rate, capacity, balance, allowance, or preview state.

NameRequiredDescriptionDefault
ownerNosUSDS owner; defaults to sender (address)
amountYesExact USDS amount to withdraw in base units (positive decimal integer)
senderYesWallet that will execute the Sky savings action (address)
chain_idYesMust be Ethereum chain 1
receiverNoUSDS recipient; defaults to sender (address)

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already tells the agent this is a non-mutating preparation step, so the bar is lower. The description still adds real value by enumerating what the server does NOT check (exchange rate, capacity, balance, allowance, preview state), warning the agent that the returned plan can fail on-chain and that pre-validation is its responsibility.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the operation and its denomination front-loaded before the caveat. Nothing could be removed without losing signal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a five-parameter preparation tool with an output schema and annotations, the description covers the operation, the amount denomination, and the critical unverified-state caveat. It leaves the sibling relationship with prepare_sky_savings_redeem implicit, which is the main remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 five parameters including the exact-USDS-vs-shares semantics of 'amount' and the owner/receiver defaults. The description's 'exact USDS amount' phrasing reinforces that but adds no syntax, unit, or defaulting detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Prepare a direct sUSDS ERC-4626 withdrawal') plus a scoping detail, 'for an exact USDS amount', which implicitly separates it from prepare_sky_savings_redeem (share-denominated). It never names that sibling, so the distinction must be inferred from ERC-4626 knowledge rather than read directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'exact USDS amount' framing implies when this tool is appropriate versus the redeem variant, and the second sentence implies the caller must have verified state beforehand. There is no explicit when-to-use/when-not statement and no named alternative, so routing is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_transfersPrepare a batch of token transfersB
Read-only
Inspect

Prepare one atomic-capable plan of 1 to 4,096 ordered native, ERC-20, ERC-721 and ERC-1155 transfers on one EVM chain, mixed freely. Returns a compact summary and the execution_plan_reference.

NameRequiredDescriptionDefault
senderYesNonzero owner of every asset (address)
chain_idYesEVM chain ID
transfersYesOne to 4096 ordered, optionally mixed native, ERC-20, ERC-721, or ERC-1155 transfers

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already declaring the safety profile, the description adds real value by framing the output as a non-executing 'plan' plus an execution_plan_reference. However, 'atomic-capable' is left undefined (single transaction vs. batchable), and it does not state whether allowances must be in place before preparing, or that nothing is broadcast.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the scope constraint, with no filler. The density is slightly counterproductive because 'atomic-capable' is jargon that is never unpacked, costing a bit of clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and the description still names the key return artifacts (summary and execution_plan_reference), so an agent knows what it gets back. The main omissions are preconditions around approvals and what atomicity guarantees, which a preparation tool arguably should state.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including minItems/maxItems and per-variant field docs, so the schema carries the parameter burden. The description restates the same 1–4,096 bound, mixed kinds and single-chain constraint, adding no meaning beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (prepare) and a precisely scoped resource: a plan of 1–4,096 ordered transfers of native, ERC-20, ERC-721 and ERC-1155 assets on a single EVM chain. That scope alone separates it from the many specialized prepare_* siblings (e.g. prepare_wrap_unwrap, prepare_lp_position_transfer). It stops short of explicitly naming a sibling it replaces or excludes, so it lands at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance: no statement of when an agent should pick this generic transfer planner over a specialized prepare_* tool, and no prerequisite such as required token approvals (even though prepare_approval_revocations exists as a sibling). The only implied usage cue is the returned execution_plan_reference, which hints at a later execution step but does not spell it out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_twamm_orderPrepare a TWAMM or DCA orderA
Read-only
Inspect

Prepare one or more TWAMM order splits with approvals and native value as one atomic batch. details.token_id is the order's id before anything is sent: keep it, because prepare_twamm_order_collection and prepare_twamm_order_stop are keyed by it and orders are not enumerable by owner. Start and end times must be multiples of 256 seconds near the present, widening in powers of 16 further out.

NameRequiredDescriptionDefault
saltNoFixes the order's token id; omit to derive it from the request. Supply one only when identical orders need distinct ids (bytes32 hex)
ordersYes
senderYesaddress
chain_idYesEVM chain ID
buy_tokenYesToken; zero address = native
sell_tokenYesToken; zero address = native
deadline_secondsNo
pending_timestampYesdecimal integer

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial context beyond readOnlyHint=true: it discloses that approvals and native value are bundled atomically, that token_id is minted at prepare time and is the only handle because orders aren't enumerable by owner, and that times are quantized (multiples of 256s near present, powers of 16 further out). It does not clarify what happens after preparation (whether it broadcasts, what the caller must do to submit) — the one point where readOnlyHint could be misread by an agent as "this places the order".

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each carrying distinct information: what is built, the token_id lifecycle constraint, and the timestamp quantization rule. The front-loaded first sentence establishes scope immediately; the timestamp rule is dense but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-shape explanation is not required, but for a complex prepare tool (8 params, nested orders array, atomic approval batching) the description omits chain applicability, what the agent should do with the result next (sign/submit flow), and any limits on order count. The critical id-retention constraint is covered, so the core risk is addressed but peripheral context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

At 75% schema coverage the schema already documents most fields, but the description adds meaning the schema lacks: it constrains start_time/end_time to multiples of 256 seconds near the present and powers of 16 further out, which the schema only calls "decimal integer". It also explains salt's purpose (deriving token_id, needed for duplicate identical orders) in a way that complements the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Prepare one or more TWAMM order splits with approvals and native value as one atomic batch" names a specific verb (prepare), a specific resource (TWAMM order splits), and the packaging semantics (approvals + native value in one batch). It also implicitly differentiates from the collection/stop siblings by naming them as separate steps keyed to this output.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description tells the agent what to do after this call (persist details.token_id for prepare_twamm_order_collection and prepare_twamm_order_stop), which implies this is the entry point of an ordering workflow. But it gives no explicit selection guidance against other order-related siblings such as prepare_twamm_virtual_orders, and no prerequisites (e.g., token approvals already needed, chain support) are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_twamm_order_collectionPrepare TWAMM proceeds collectionA
Read-only
Inspect

Prepare collection of every selected order key through the exact current or legacy Orders manager, as one atomic batch of decodable steps, with pending owner validation.

NameRequiredDescriptionDefault
senderYesaddress
chain_idYesEVM chain ID
token_idYesdecimal or 0x-hex integer
order_keysYes
orders_addressYesaddress

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, so the description carries most of the burden and it does disclose real behavior: collection is batched atomically across all selected keys, the result is a set of 'decodable steps' rather than a submission, manager version is resolved automatically (current or legacy), and 'pending owner validation' signals an approval gate. It does not say what happens if one key is invalid or whether the batch is all-or-nothing at execution time.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, but it is dense with unexplained jargon ('decodable steps', 'pending owner validation') that would benefit from a short clarifying clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 5 required parameters, an output schema present, and only a readOnlyHint annotation, the description still conveys the key facts an agent needs: atomic batch semantics, manager version routing, and an owner validation step. Remaining gaps (failure behavior for a partially valid key set, relation to sibling TWAMM tools) are minor given the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 80%, so the baseline is 3. The description adds the useful linkage that every entry in order_keys is collected and that orders_address refers to the Orders manager (current or legacy), but it does not clarify sender vs token_id semantics or the native-token zero-address convention, which must be read from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb plus resource: 'Prepare collection of every selected order key' via the 'Orders manager'. An agent can tell this is a TWAMM proceeds-collection planner rather than an order create/stop tool. It stops short of naming a sibling such as prepare_twamm_order_stop to sharpen the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit when-to-use or when-not-to-use guidance and never names an alternative among the many prepare_twamm_* siblings. The phrase 'exact current or legacy Orders manager' implies the tool auto-resolves the right manager, but nothing tells the agent under what conditions to prefer this over prepare_twamm_order_stop or prepare_lp_position_earnings_claim.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_twamm_order_stopPrepare stopping a TWAMM orderB
Read-only
Inspect

Prepare the interface's complete stop flow: collect every selected order and decrease every still-active sale rate in one atomic batch of decodable steps.

NameRequiredDescriptionDefault
ordersYes
senderYesaddress
chain_idYesEVM chain ID
token_idYesdecimal or 0x-hex integer
orders_addressYesaddress
pending_timestampYesdecimal integer

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation is not blatantly contradicted because the tool "prepares" decodable steps rather than executing them, but the wording "decrease every still-active sale rate" describes an on-chain state mutation that is never reconciled with that read-only hint. The description would be much stronger if it stated plainly that it produces unsigned calldata and does not broadcast, and whether any approvals or follow-up execute call is required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler paragraphs; the effect is stated before the mechanism. It leans slightly on vague qualifiers ("complete", "still-active") that carry meaning the rest of the definition never pins down.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, but for a six-required-parameter mutation-preparation tool awash in similarly named siblings there are real gaps: how the caller obtains the order list, what makes an order "still-active" (presumably end_time vs pending_timestamp), and whether zero-rate orders must be excluded.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 83%, so the baseline is 3. The description does add meaning for the orders array by tying it to "selected orders" and active sale rates, but it says nothing about pending_timestamp, sender, token_id, or the nesting of order_key/end_time that determine which orders count as still active.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

A specific verb ("Prepare") plus resource (TWAMM order stop flow) with the concrete effect spelled out: collects selected orders and decreases still-active sale rates into decodable steps. It stops short of distinguishing itself from the closely named siblings prepare_twamm_order, prepare_twamm_order_collection, and prepare_twamm_virtual_orders, so an agent must infer the boundary from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase "every still-active sale rate" implies a precondition (only active orders are touched) and "one atomic batch" implies batching semantics, but there is no explicit when-to-use vs when-not, no mention of whether this must be followed by a commit/broadcast step, and no guidance on choosing among the three other prepare_twamm_* siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_twamm_virtual_ordersPrepare TWAMM virtual-order executionB
Read-only
Inspect

Prepare the permissionless lockAndExecuteVirtualOrders maintenance call for a current or legacy TWAMM pool.

NameRequiredDescriptionDefault
senderYesaddress
chain_idYesEVM chain ID
pool_keyYesPoolKey {token0, token1, config}: token addresses (zero = native), bytes32 config

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The word 'permissionless' usefully signals no access control is required, which goes beyond the minimal readOnlyHint annotation. However, it does not say that the tool returns an unsigned transaction/calldata to be submitted separately, nor what happens for 'legacy' vs 'current' pools — a distinction the description raises but never explains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tightly constructed sentence with the action front-loaded and no filler. It is arguably too short for the complexity, but nothing in it is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema and full schema coverage remove the need to explain returns and parameters, so the description only had to cover invocation timing and pool-variant behavior. It gestures at 'current or legacy' pools but leaves both that distinction and the trigger condition unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including a documented nested PoolKey, so parameter meaning is already fully carried by the schema. The description adds nothing about chain_id, sender, or pool_key beyond implying a pool is targeted; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it prepares the permissionless lockAndExecuteVirtualOrders maintenance call for a TWAMM pool. The 'maintenance call' framing distinguishes it in spirit from the order-creation siblings (prepare_twamm_order, prepare_twamm_order_collection, prepare_twamm_order_stop), though none of them are named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when this maintenance call is needed (e.g., after a virtual-order interval has elapsed with pending orders) or when to prefer it over the sibling prepare_twamm_* tools. The agent must infer the trigger condition from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_uniswap_readsPrepare Uniswap pool and position readsA
Read-only
Inspect

Return exact wallet read bundles for pool state, reserves, positions and ownership. V3 supports bounded owner-index enumeration. V4 requires known token IDs. Verify returned tokens, fee, factory/pool key, tick spacing and owner before preparing liquidity operations.

NameRequiredDescriptionDefault
feeNo
hooksNoaddress
ownerNoaddress
token0Yesaddress
token1Yesaddress
versionYes
chain_idYes
token_idsNo
pool_addressNoaddress
tick_spacingNo
owner_indicesNo

Output Schema

NameRequiredDescription
read_calls_referenceNoartifact_reference; pass unchanged

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true, the safety profile is already covered; the description adds version-specific read constraints (V3 bounded owner-index enumeration, V4 known token IDs) and a verification checklist. It still omits auth needs, error behavior, and what 'bounded' means quantitatively.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three front-loaded sentences, each carrying a distinct point: purpose, version behavior, and pre-liquidity verification. No filler or redundant restatement of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter tool with only 45% schema description coverage, the description covers the highest-risk version-dependent params but leaves v2, chain_id, hooks/pool_address distinctions, and the meaning of 'bounded' unexplained. Output schema and readOnly annotation reduce the burden, but the definition is not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The 45% schema description coverage leaves many parameters thinly documented, but the description adds real meaning for token_ids and owner_indices via the V3/V4 rules, and names fee, tick spacing, owner, and pool key as fields to verify. It does not explain chain_id, hooks, pool_address, or the v2 path, so compensation is partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource ('wallet read bundles for pool state, reserves, positions and ownership') and the operation ('Return'), and distinguishes V3 vs V4 behavior. It does not name any sibling read tool it replaces or complements, so an agent still has to infer its routing versus get_uniswap_pool or get_positions_by_owner.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It tells the agent to verify returned fields 'before preparing liquidity operations,' which supplies a preparatory-read context. However, it gives no explicit when-not-to-use guidance or alternatives such as the get_* read tools, and the version notes are constraints rather than routing rules.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_uniswap_v2_add_liquidityPrepare Uniswap V2 liquidity depositA
Read-only
Inspect

Add liquidity or create a V2 pair with exact token approvals and cleanup. Amounts are raw units; sorted token0/token1 and explicit minimum outputs are required. use_native pays ETH for the wrapped-native side. Execute atomically through the wallet.

NameRequiredDescriptionDefault
senderYesaddress
token0Yesaddress
token1Yesaddress
amount0Yesdecimal integer
amount1Yesdecimal integer
chain_idYes
deadlineYesdecimal integer
use_nativeNo
amount0_minYesdecimal integer
amount1_minYesdecimal integer

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations only declare readOnlyHint=true, so the description carries the real behavioral load and delivers: it discloses that approvals and cleanup are bundled, that execution is atomic and routed through the wallet, and that use_native pays ETH for the wrapped-native side. The "Execute atomically through the wallet" clause resolves the apparent tension between the mutating verb "Add" and readOnlyHint, making clear the tool prepares rather than submits. It could still say more about what "cleanup" resets and what the returned payload contains, but that is minor given the 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four dense sentences, front-loaded with the action and its two branches before dropping into constraints. Nearly every clause carries new information, though "cleanup" is under-explained for a term doing real behavioral work.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter, 9-required transaction-building tool with an output schema, this covers the failure-prone parts: raw-unit amounts, token ordering, slippage minimums, native-ETH handling, and atomic bundled execution. Deadline semantics and chain_id applicability are the only notable omissions, and the output schema absorbs the return-value question.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 80% schema coverage the baseline is 3, and the description earns above that by adding meaning the schema lacks: amounts are raw units (not decimal-adjusted), token0/token1 must be pre-sorted, and minimum outputs are required rather than optional. The one genuinely useful addition would be deadline semantics, which is unaddressed in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb and resource ("Add liquidity or create a V2 pair") and adds the distinguishing detail of bundling exact token approvals and cleanup. It clearly separates this from the remove-liquidity sibling, though it never names the v3/v4 add-liquidity variants it competes with 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the description establishes that this is for V2 deposits and mentions the "create a V2 pair" branch, but there is no explicit when-to-use versus prepare_uniswap_v3_add_liquidity, prepare_uniswap_v4_add_liquidity, quote_uniswap_liquidity, or prepare_lp_position_deposit. The prerequisites it does list (sorted tokens, explicit minimums) hint at the calling context without ever stating when not to reach for this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_uniswap_v2_remove_liquidityPrepare Uniswap V2 liquidity withdrawalB
Read-only
Inspect

Burn an exact LP amount through the canonical V2 router; realize accrued fees with principal. Raw minima protect withdrawal proceeds. LP token address is derived from the factory. Optional native unwrapping. V2 has no separate fee claim. Requires atomic LP approval and cleanup.

NameRequiredDescriptionDefault
senderYesaddress
token0Yesaddress
token1Yesaddress
chain_idYes
deadlineYesdecimal integer
liquidityYesdecimal integer
amount0_minYesdecimal integer
amount1_minYesdecimal integer
unwrap_nativeNo

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

B3.1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, but the description describes burning LP tokens, requires an atomic LP approval, and mentions cleanup — all hallmarks of a state-changing transaction. This is a direct contradiction an agent could act on incorrectly. Flagged as an annotation contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Six short clauses, front-loaded with the core action, with no filler. The telegraphic style is dense but each clause adds a distinct fact (router, fees, minima, derivation, unwrapping, approval/cleanup).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the derivation of the LP address plus the approval requirement are useful inclusions. Still, for a 9-parameter transactional tool the description omits deadline behavior and chain coverage, and its most consequential gap — the mismatch with the readOnly annotation — leaves the agent without a reliable safety picture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 78%, so the schema carries most parameter documentation. The description adds real meaning for a few fields — minima are raw values protecting proceeds, the LP token address is derived from the factory rather than supplied, and unwrap_native is optional — but says nothing about deadline, sender, or chain_id semantics. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (burn) and resource (an exact LP amount) via the canonical V2 router, plus the scope detail that accrued fees are realized with principal. It also distinguishes the V2 flow from V3/V4 siblings by noting 'V2 has no separate fee claim,' which no other sibling covers. It stops short of naming the V3/V4 remove-liquidity siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied (withdraw liquidity from a V2 pool) and the prerequisite 'Requires atomic LP approval and cleanup' gives an actionable precondition. However, there is no explicit when-to-use versus prepare_uniswap_v3_remove_liquidity, prepare_uniswap_v4_remove_liquidity, or prepare_lp_position_withdraw, and no when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_uniswap_v3_add_liquidityPrepare Uniswap V3 liquidity depositA
Read-only
Inspect

Mint a ranged NFT or increase token_id with raw desired amounts and minima. First verify factory fee tick spacing and position tokens/range. Optional initialize_sqrt_price_x96 creates the pool; use_native pays ETH and refunds excess. Exact approvals and cleanup require an atomic wallet.

NameRequiredDescriptionDefault
feeYes
senderYesaddress
token0Yesaddress
token1Yesaddress
amount0Yesdecimal integer
amount1Yesdecimal integer
chain_idYes
deadlineYesdecimal integer
token_idNodecimal integer
tick_lowerYes
tick_upperYes
use_nativeNo
amount0_minYesdecimal integer
amount1_minYesdecimal integer
tick_spacingYes
initialize_sqrt_price_x96Nodecimal integer

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, so the description has room to add and does: initializing sqrt price implicitly creates the pool (a real side effect), use_native spends ETH and refunds excess, and exact approvals plus cleanup require an atomic wallet (i.e., this tool alone does not finish the job). What is missing is an explicit statement of what the call returns/produces and that no transaction is broadcast, which matters given the 'Mint' wording versus readOnlyHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the two operating modes, then preconditions, then optional flags, then the wallet caveat. Dense and largely waste-free, though the telegraphic phrasing ("verify factory fee tick spacing") is ambiguous enough to cost a little clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-parameter, 13-required transaction-building tool with an output schema (so return shape need not be explained), the description covers modes, pool-creation side effect, native-ETH handling, and the approval/atomicity caveat. Gaps remain around tick alignment to tick_spacing, slippage/deadline semantics, and explicit non-broadcast behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 63% and most property descriptions are bare types ("address", "decimal integer"), so the description carries real weight: it clarifies token_id as the increase-existing-position path, amount0/amount1 as raw desired amounts with amount0_min/amount1_min as bounds, initialize_sqrt_price_x96 as pool creation, and use_native as native-ETH payment. It still leaves fee vs. tick_spacing relationship, deadline, and chain_id unaddressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Mint a ranged NFT or increase token_id" states a specific verb plus resource and covers both operating modes (new position vs. adding to an existing one) in the first clause. The v3 scope is implied by the name rather than stated, and no sibling (e.g., v2/v4 add-liquidity, prepare_lp_position_deposit) is named, so an agent must infer differentiation from the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"First verify factory fee tick spacing and position tokens/range" gives a precondition for use, and the initialize_sqrt_price_x96 / use_native clauses tell the agent when those switches matter. However, there is no explicit when-not guidance or pointer to adjacent tools (uniswap_v2/v4 add liquidity, quote_uniswap_liquidity, prepare_lp_position_deposit), so the routing decision is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_uniswap_v3_collect_feesPrepare Uniswap V3 fee collectionA
Read-only
Inspect

Collect all owed fees without removing liquidity, optionally unwrapping WETH. Verify NFT ownership and currencies first. V3 collect has no onchain deadline; regenerate and simulate before execution.

NameRequiredDescriptionDefault
senderYesaddress
token0Yesaddress
token1Yesaddress
chain_idYes
deadlineYesdecimal integer
token_idYesdecimal integer
unwrap_nativeNo

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond readOnlyHint, the description adds that V3 collect has no onchain deadline and that the result should be regenerated and simulated before execution. It also discloses the optional WETH unwrapping behavior and the need to verify NFT ownership and currencies. These are meaningful operational constraints not conveyed by the annotation alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three tight sentences: purpose first, then preconditions, then execution guidance. Every sentence adds useful information without redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a prepare-transaction tool with seven parameters and an output schema, the description supplies the essential purpose, preconditions, and unique V3 deadline behavior. It does not explain the chain_id enum or sender role, but those remain documented in the schema and are not critical to safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description maps unwrap_native to optional WETH unwrapping, token_id to NFT ownership, and token0/token1 to currencies. It also explains that V3 collect has no onchain deadline, which clarifies the unusual required deadline parameter. Schema coverage is 71%, and the description compensates for key parameters but does not cover chain_id or sender.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: collect all owed fees from a Uniswap V3 position without removing liquidity. It distinguishes the action from liquidity removal, which is a key sibling operation, and explicitly names the V3 collect context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear preconditions—verify NFT ownership and currencies first—and a post-preparation workflow: regenerate and simulate before execution. It also clarifies that liquidity is not removed, which implicitly distinguishes this from remove-liquidity tools. It stops short of naming an explicit alternative or stating when not to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_uniswap_v3_remove_liquidityPrepare Uniswap V3 liquidity withdrawalA
Read-only
Inspect

Decrease exact uint128 liquidity, collect principal and all accrued fees, and optionally burn a fully emptied NFT. Raw minima protect withdrawal proceeds. Optional unwrap_native requires verified position currencies.

NameRequiredDescriptionDefault
burnNo
senderYesaddress
token0Yesaddress
token1Yesaddress
chain_idYes
deadlineYesdecimal integer
token_idYesdecimal integer
liquidityYesdecimal integer
amount0_minYesdecimal integer
amount1_minYesdecimal integer
unwrap_nativeNo

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations only declare readOnlyHint=true, and the description adds useful behavior: minima act as slippage protection for proceeds, burn is conditional on full emptying, and unwrap_native has a currency-verification prerequisite. However it never states that this only constructs an unsigned transaction for later signing or what permissions/approvals are needed, so an agent could read the described liquidity decrease, fee collection and NFT burn as immediate state changes despite 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with the core action, then protections, then optional-flag prerequisites. Little waste, though the 'Raw minima protect withdrawal proceeds' sentence is terse enough to be slightly cryptic without schema context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and the description covers the action, the two optional flags and the safety minima across 11 parameters. The remaining gap is the prepare-versus-execute contract and deadline/approval expectations, which matter for a transaction-building tool flagged readOnly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 73% and most field descriptions are the bare word 'decimal integer'. The description compensates by clarifying that liquidity is an exact uint128 value, that amount0_min/amount1_min are raw minimums guarding proceeds, and by explaining the conditions behind the burn and unwrap_native booleans. It leaves sender, token0/token1, deadline and token_id meaning entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verbs and resources: decrease uint128 liquidity, collect principal and accrued fees, optionally burn an emptied NFT. That is unambiguously a Uniswap V3 withdrawal preparation and is distinct from add-liquidity or pure fee-collection work. It stops short of explicitly naming the nearby siblings (prepare_uniswap_v3_collect_fees, prepare_uniswap_v4_remove_liquidity), so distinction relies partly on the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is only implied through conditionals: burn applies only to a 'fully emptied NFT', and unwrap_native 'requires verified position currencies'. There is no explicit when-to-use or when-not-to-use statement, and no routing guidance versus collect-fees or the V4 remove-liquidity variant.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_uniswap_v4_add_liquidityPrepare Uniswap V4 liquidity depositA
Read-only
Inspect

Mint or increase an exact liquidity amount using raw uint128 token maxima. Zero token0 means native ETH. Uses exact ERC20 and Permit2 approvals with cleanup, settles both signs of accrued-fee deltas on increase, and refunds native surplus. Verify NFT pool key/range and hook behavior; hook_data is forwarded unchanged. Optional pool initialization.

NameRequiredDescriptionDefault
feeYes
hooksNoaddress
senderYesaddress
token0Yesaddress
token1Yesaddress
pool_idYesbytes32 hex
chain_idYes
deadlineYesdecimal integer
token_idNodecimal integer
hook_dataNohex bytes0x
liquidityYesdecimal integer
tick_lowerYes
tick_upperYes
amount0_maxYesdecimal integer
amount1_maxYesdecimal integer
tick_spacingYes
initialize_sqrt_price_x96Nodecimal integer

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the single readOnlyHint annotation, the description discloses a lot of real behavior: exact ERC20 plus Permit2 approvals with cleanup, settlement of both signs of accrued-fee deltas on increase, native surplus refunds, and that hook_data is forwarded unchanged to the hook. The one gap is that it never states the output is an unsigned transaction plan, so 'mint' and 'refunds' read as if execution happens, which sits awkwardly beside readOnlyHint=true without strictly contradicting it given the 'prepare_' prefix.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The most consequential constraint (exact liquidity with raw maxima, ETH sentinel) is front-loaded, and each sentence carries distinct information with no filler. The telegraphic phrasing ('settles both signs of accrued-fee deltas on increase') is dense enough to cost some readability, but the length is proportionate to a 17-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 need not explain return values, and the hook/approval/fee-delta disclosures cover the most error-prone aspects. Still, for a 13-required-parameter transaction-prep tool it omits deadline semantics, sender expectations, and how liquidity maps to the max amounts, so an agent still has to infer several call details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is a moderate 71%, and the description adds genuine meaning for a few fields: zero token0 means native ETH, hook_data is passed through verbatim, initialize_sqrt_price_x96 is optional pool initialization, and token_id/ticks relate to verifying an existing NFT position. It says nothing about deadline, sender, or the relationship between the exact liquidity figure and amount0_max/amount1_max, leaving several of the 17 parameters to the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a concrete verb+resource pair ('Mint or increase an exact liquidity amount') and immediately scopes it to raw uint128 maxima, which pins down the semantics of the liquidity/amount parameters. V4-specific traits (hooks, Permit2, native ETH sentinel) implicitly separate it from prepare_uniswap_v3_add_liquidity, but no sibling 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives useful preconditions ('Verify NFT pool key/range and hook behavior') and notes that pool initialization is optional, which nudges the agent toward initialize_sqrt_price_x96 in the right circumstances. However, there is no explicit when-to-use guidance versus prepare_uniswap_v3_add_liquidity, prepare_lp_position_deposit, or quote_uniswap_liquidity, and no statement that this only prepares a transaction rather than executing it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_uniswap_v4_collect_feesPrepare Uniswap V4 fee collectionB
Read-only
Inspect

Poke a V4 position with zero liquidity decrease then take both currencies to the sender. Principal remains invested. Verify ownership, pool key and hook behavior first.

NameRequiredDescriptionDefault
feeYes
hooksNoaddress
senderYesaddress
token0Yesaddress
token1Yesaddress
pool_idYesbytes32 hex
chain_idYes
deadlineYesdecimal integer
token_idYesdecimal integer
hook_dataNohex bytes0x
tick_spacingYes

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only supply readOnlyHint=true, so the description's additions matter: 'zero liquidity decrease' and 'Principal remains invested' clarify that the position is not modified, and 'to the sender' clarifies the recipient. The gap is that it does not reconcile the fund-moving language ('take both currencies') with the read-only annotation by stating that it returns an unsigned transaction for signing, nor does it mention approval requirements or deadline handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly packed sentences with no filler; the effect ('principal remains invested') is front-loaded ahead of the prerequisite. The density borders on cryptic ('poke'), but nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the key preconditions are stated. Still, for an 11-parameter transaction-preparation tool it omits whether an approval or prior position lookup is required and does not clarify that the output is a signable transaction rather than an executed collection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 73% with nine required params, so the structured schema already documents most fields. The description adds useful linkage — 'pool key' maps to pool_id/token0/token1/fee/tick_spacing and 'hook behavior' points at hooks/hook_data — but it adds no guidance on the deadline value, chain_id selection, or why tick_spacing must match the pool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a concrete verb chain ('poke a V4 position with zero liquidity decrease then take both currencies to the sender') that pins down both the mechanism and the effect, and the phrase 'Principal remains invested' cleanly separates it from prepare_uniswap_v4_remove_liquidity. It loses a point because it never states that the tool only *prepares* an unsigned transaction (the behavior implied by the 'prepare_' name), and 'poke' is protocol jargon an agent may not resolve.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Verify ownership, pool key and hook behavior first' gives real preconditions for calling it. However, it names no alternatives (e.g. prepare_uniswap_v3_collect_fees, prepare_uniswap_v4_remove_liquidity) and gives no explicit when-not condition, leaving the choice between fee collection and liquidity removal to inference from the purpose sentence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_uniswap_v4_remove_liquidityPrepare Uniswap V4 liquidity withdrawalB
Read-only
Inspect

Remove liquidity and take principal plus fees to the sender. Optional burn:true requires liquidity:0 and withdraws the entire NFT with minima applied to the full position. Requires exact pool currencies and hook data; uint128 minima bound principal outputs.

NameRequiredDescriptionDefault
feeYes
burnNo
hooksNoaddress
senderYesaddress
token0Yesaddress
token1Yesaddress
pool_idYesbytes32 hex
chain_idYes
deadlineYesdecimal integer
token_idYesdecimal integer
hook_dataNohex bytes0x
liquidityYesdecimal integer
amount0_minYesdecimal integer
amount1_minYesdecimal integer
tick_spacingYes

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description reads as an executed state change ('Remove liquidity and take principal plus fees to the sender'), while annotations declare readOnlyHint=true. That is reconcilable only if the reader assumes the 'prepare_' prefix means it merely builds an unsigned transaction for signing, and the description never states that. It also omits allowance/approval requirements and any warning that the resulting transaction is irreversible once broadcast.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences with no filler, front-loaded on the primary effect and immediately followed by the optional burn branch. The phrasing is jargon-heavy ('minima applied to the full position') but each clause carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-required-parameter financial transaction with no annotations beyond a read-only hint and no output explanation needed, the description leaves two critical things unstated: whether it returns calldata for signing rather than executing, and whether prior approvals are required. Given the value at stake these gaps are material, not cosmetic.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Real meaning is added beyond the schema: burn coupling to liquidity:0, minima applied to the full position when burning, the requirement for exact pool currencies and hook data, and that amount0_min/amount1_min are uint128 bounds on principal. With 15 parameters and only 73% schema coverage, however, fee/tick_spacing ordering, deadline semantics, and hook_data usage in the non-burn path remain unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names a specific verb and resource ('Remove liquidity', principal plus fees to the sender) and the second sentence describes the V4-specific burn path. V4 specifics (pool_id, hooks/hook_data, NFT burn) separate it from prepare_uniswap_v3_remove_liquidity, though the text itself never names the siblings it is distinct from.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Useful conditional guidance is given for the burn path ('burn:true requires liquidity:0 and withdraws the entire NFT'), which is a real when-to-use rule. What is missing is routing guidance: no statement of when to choose this over prepare_uniswap_v4_collect_fees, prepare_uniswap_v3_remove_liquidity, or prepare_lp_position_withdraw, and no prerequisite note about token approvals.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_ve33_claim_all_feesPrepare all ve-token fee claimsA
Read-only
Inspect

Discover every active vote on VeTokens owned by the sender and generate one atomic batch of decodable VeToken steps claiming all indexed pool fees, with ownerOf and voteState validation calldata. Fees only: votes, stake amounts, lock ends, and NFT ownership are all unchanged.

NameRequiredDescriptionDefault
senderYesOwner whose indexed VeTokens and active votes should be discovered (address)
chain_idYesWith ve_token, from get_ve33_allocations (STONX: 4663), not the wallet's chain
ve_tokenYesaddress
recipientNoFee recipient; defaults to sender for claimPoolFeesToSelf (address)

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond readOnlyHint=true, the description discloses that the output is one atomic batch of decodable steps carrying ownerOf and voteState validation calldata, and that nothing about votes, stake amounts, lock ends, or NFT ownership changes. This tells the agent both the construction strategy and the exact non-effects, which the annotations alone would not convey; it stops short of describing failure modes when no active votes exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both front-loaded with the core action and then the scope constraint. Dense terminology ('decodable VeToken steps', 'validation calldata') is efficient rather than padded, though the second sentence's exclusion list is packed into one clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation is unnecessary, and the description covers discovery scope, atomic batching, validation calldata, and the invariant that no vote/stake/lock/ownership state changes. For a multi-step transaction-preparation tool that is nearly complete; only the empty-result case and the relationship to the singular claim sibling are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the parameters are already documented, and the description reinforces the discovery scope of 'sender' as the owner whose VeTokens and active votes are enumerated. It adds nothing about chain_id pairing with ve_token or the recipient default, leaving the schema to carry that load, which matches the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific compound action: discover every active vote on the sender's VeTokens, then generate one atomic batch of decodable steps claiming all indexed pool fees. The 'all/every' scope implicitly contrasts with the singular sibling prepare_ve33_claim_fees, but the sibling is never named, so the agent must infer the distinction from the wording alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the tool applies when the sender wants all fees across every active vote in one shot, and 'Fees only' rules out vote, stake, lock, and ownership changes. However, it never explicitly says when to choose this over prepare_ve33_claim_fees, prepare_ve33_reinvest, or the per-protocol claim tools, nor does it state prerequisites such as needing existing votes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_ve33_claim_feesPrepare ve-token fee claimsA
Read-only
Inspect

Generate one call, or an atomic batch of decodable VeToken steps, claiming voter fees from one or more ve-tokens. Fees only: votes, stake amounts, lock ends, and NFT ownership are all unchanged, so this is always safe to run before any other ve(3,3) action.

NameRequiredDescriptionDefault
claimsYes
senderYesaddress
chain_idYesWith ve_token, from get_ve33_allocations (STONX: 4663), not the wallet's chain
ve_tokenYesaddress
recipientNoaddress

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already supplied, the description still adds substantive behavior: the output is one call or an atomic batch of decodable steps, and the operation leaves votes, stake amounts, lock ends, and NFT ownership untouched. That last clause is the key assurance an agent needs before sequencing this ahead of other ve(3,3) actions. It does not cover signing/execution flow or failure modes, keeping it 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no waste, and the core action is front-loaded before the safety note. Both sentences carry information an agent would otherwise have to guess at.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and the input schema is well annotated, so the description does not need to explain return values or field formats. What remains thin is the routing between this and the claim-all sibling, which matters given ~90 similarly named prepare_* tools. Otherwise the definition is sufficient to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 80%, so the schema already carries most parameter meaning, including the non-obvious note that chain_id must come from get_ve33_allocations rather than the wallet's chain. The description only maps loosely onto parameters via 'one or more ve-tokens'; it says nothing about claims entries, recipient, or sender. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: 'Generate one call, or an atomic batch of decodable VeToken steps, claiming voter fees from one or more ve-tokens.' The 'one or more ve-tokens' phrasing implicitly separates it from the all-in-one sibling prepare_ve33_claim_all_fees, but that sibling is never named, so the differentiation 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It offers one real usage cue — 'always safe to run before any other ve(3,3) action' — which tells the agent this is a low-risk predecessor step. It never states when to pick this over prepare_ve33_claim_all_fees, prepare_rewards_claim, or prepare_lp_position_earnings_claim, and gives no prerequisite or exclusion guidance beyond safety.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_ve33_clear_votePrepare ve-token vote clearingA
Read-only
Inspect

Remove the active vote from one or more ve-tokens, claiming each stake's current pool fees immediately before its clearVote in one atomic batch. Use this instead of raw clearVote calldata: Ve33 discards pending voter fees when a stake's weight goes to zero, and a current_pool_key that is not the stake's active pool reverts the whole batch. Stake amount, lock end and NFT ownership are untouched; the stake stops directing emissions and earning that pool's voter fees. Prefer prepare_ve33_reallocation when votes move to other pools. See ekubo://docs/ve33-workflow.

NameRequiredDescriptionDefault
votesYes
senderYesaddress
chain_idYesWith ve_token, from get_ve33_allocations (STONX: 4663), not the wallet's chain
ve_tokenYesaddress
recipientNoFee recipient; defaults to sender for claimPoolFeesToSelf (address)

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, and the description earns credit beyond that: it discloses atomicity, that fees are claimed immediately before the clear, that Ve33 discards pending voter fees when weight goes to zero, and that a mismatched current_pool_key reverts the whole batch. It also states what is untouched (stake amount, lock end, NFT ownership), though it never explicitly says the output is unsigned calldata requiring signing and broadcast.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The action and its mechanism are front-loaded, followed by the routing rule and the effects, then the docs pointer. It is dense but each sentence carries distinct information; the only mild compression cost is that the atomicity and revert warnings are packed into long clauses.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a prepare tool with an output schema, five parameters and only a readOnlyHint annotation, the description covers the behavioral consequences an agent needs: fee loss risk, all-or-nothing batching, and unaffected stake state. The remaining omission is that it does not describe the resulting transaction lifecycle (sign/broadcast) or the recipient default.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 80%, so the schema already documents most fields; the description still adds semantic weight by explaining why current_pool_key is mandatory (it drives the fee claim and a wrong key reverts the entire batch). The optional recipient parameter is not mentioned in the description at all, leaving that one gap to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Remove the active vote from one or more ve-tokens') and immediately qualifies the mechanism ('claiming each stake's current pool fees immediately before its clearVote in one atomic batch'). It explicitly distinguishes itself from raw clearVote calldata and from prepare_ve33_reallocation, 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states when to use it ('instead of raw clearVote calldata') and names the alternative with its selecting condition ('Prefer prepare_ve33_reallocation when votes move to other pools'). It also points to ekubo://docs/ve33-workflow for the broader procedure, leaving nothing to inference about routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_ve33_extendPrepare a ve-token extensionA
Read-only
Inspect

Prepare a direct extension for an unvoted VeToken or an atomic claim-and-extend call when current_pool_key identifies an active vote, so pending voter fees are preserved. Extending moves the stake to a later end time and clears its vote — that is why the claim is compounded into the same call. A stake's end time only ever moves later, here and everywhere else in Ve33. No NFT is burned and no stake leaves the wallet; re-vote afterwards with prepare_ve33_vote. max_duration=true must be the user's explicit choice.

NameRequiredDescriptionDefault
ve_idYesdecimal integer
senderYesaddress
chain_idYesWith ve_token, from get_ve33_allocations (STONX: 4663), not the wallet's chain
ve_tokenYesaddress
max_durationNo
current_pool_keyNoActive pool key when voted; the MCP claims fees atomically before extension. Omit only for an unvoted VeToken. PoolKey {token0, token1, config} or {token0, token1, fee, tick_spacing, extension, stableswap_params?}, as read from the pool or vote
duration_secondsNo

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true is consistent with a transaction-preparation tool, and the description reinforces that with 'No NFT is burned and no stake leaves the wallet.' Beyond the annotations it discloses real behavioral traits: extension clears the existing vote, fees are claimed atomically before extension to preserve pending voter fees, and the end time can only move later. That is substantially more than the readOnlyHint tells an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Information is front-loaded: mode selection comes first, then the effect of extending, then the safety reassurances and follow-up. Every sentence carries distinct information, though the first sentence is heavily compound and takes a second read to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter prepare tool with a nested PoolKey object, an output schema, and annotations already covering the safety profile, the description covers the remaining agent-relevant unknowns: conditional parameters, the side effect on the vote, and the next step. Nothing needed to call 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 71% and the description closes the important gaps: it explains when current_pool_key is required versus omitted, and that max_duration=true must be a deliberate user decision rather than a default. The chain_id/ve_token pairing and duration_seconds semantics are left to the schema, which already documents the former adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 ('Prepare a direct extension for an unvoted VeToken'), then names the two distinct operating modes (plain extension vs. atomic claim-and-extend) and the parameter that selects between them (current_pool_key). It also names the follow-up sibling prepare_ve33_vote, so an agent can place this tool relative to others in the ve33 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear conditional rule for current_pool_key ('Omit only for an unvoted VeToken'), an explicit constraint on max_duration ('must be the user's explicit choice'), and a post-call instruction to re-vote with prepare_ve33_vote. What is missing is a comparison against the adjacent alternatives an agent would weigh here — prepare_ve33_increase_stake and prepare_ve33_stake — so the extend-vs-increase decision 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.

prepare_ve33_increase_stakePrepare increasing a ve-token stakeA
Read-only
Inspect

Prepare the exact approval/native value and increaseStakeAmount call while preserving the existing vote and fee accounting. Non-destructive: the vote is resized rather than cleared, no fees are discarded, and no NFT is burned. The added stake takes the NFT's existing lock end, so it cannot be withdrawn before that time.

NameRequiredDescriptionDefault
ve_idYesdecimal integer
amountYesBase units (positive decimal integer)
senderYesaddress
chain_idYesWith ve_token, from get_ve33_allocations (STONX: 4663), not the wallet's chain
ve_tokenYesaddress
stake_tokenYesaddress

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation only tells the agent this is non-mutating; the description layers on the substantive semantics that matter: the vote is resized rather than cleared, fees are not discarded, no NFT is burned, and the added stake inherits the existing lock end so it cannot be withdrawn early. That is exactly the kind of consequence-level detail an agent cannot derive from annotations or schema, and it is consistent with a prepare-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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what is produced, then the non-destructive guarantees, then the lock-end consequence. Every sentence adds information and none restates the tool name or the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and the description covers the mutation semantics and the approval/native value it prepares. What is missing is the precondition set — that the caller must hold the veNFT and have the stake token approved — which for a prepare tool of this complexity would be worth one clause.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the six parameters (including chain_id's direction to get_ve33_allocations and the base-unit note for amount) are already documented. The description adds one useful semantic — the added stake adopts the NFT's existing lock end — but says nothing extra about stake_token, sender, or ve_id beyond the schema. Baseline 3 is correct when the schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('prepare'), a specific resource ('increase a ve-token stake'), and even names the resulting contract call (increaseStakeAmount). That is enough for an agent to know what it produces. It stops short of naming the sibling it is not (e.g. prepare_ve33_stake for a brand-new lock or prepare_ve33_extend), so differentiation is inferable 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'preserving the existing vote and fee accounting' signals this is for adding to an existing locked position rather than creating one, but the description never says when to pick this over prepare_ve33_stake, prepare_ve33_extend, or prepare_ve33_merge. No prerequisites (ownership of the veNFT, approval of the stake token) are stated. An agent can guess the context but is not routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_ve33_mergePrepare merging ve-token stakesB
Read-only
Inspect

Prepare fee-safe merging of one or more source NFTs into a destination, including required claims and the selected resulting vote in one atomic batch of decodable steps. Destructive to the sources: each source's stake moves to the destination, its vote is cleared, and the source NFT is burned, so its fees are claimed first and its ID is reported in the plan. The destination keeps its own lock end, which is why no source may end later than it.

NameRequiredDescriptionDefault
senderYesaddress
sourcesYes
chain_idYesWith ve_token, from get_ve33_allocations (STONX: 4663), not the wallet's chain
ve_tokenYesaddress
resulting_voteNo
destination_ve_idYesdecimal integer
destination_pool_keyNoPoolKey {token0, token1, config} or {token0, token1, fee, tick_spacing, extension, stableswap_params?}, as read from the pool or vote

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

B3.4/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explicitly says it is 'Destructive to the sources' and that 'the source NFT is burned', while annotations declare readOnlyHint=true. Regardless of the rich behavioral detail about fee claiming, vote clearing, and destination lock end, this is a direct contradiction of the structured safety signal and would badly mislead an agent's risk assessment.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action, then consequences, then the key eligibility constraint. Three dense sentences with no filler, though the last sentence is slightly convoluted ('which is why no source may end later than it').

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A complex, multi-step, nested-object tool with an output schema, so return values need not be described; the description does cover atomicity, fee claiming, vote clearing, and the lock-end rule. But the destructive-vs-readOnly conflict is an incompleteness that no amount of behavioral prose compensates for until the annotations are reconciled.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds real meaning beyond the 71%-covered schema: it explains that sources require pre-claims, that the source IDs are reported in the plan, that the destination retains its own lock end (constraining valid source sets), and that the resulting vote is selected in the same batch. It does not clarify chain_id/ve_token provenance, but the schema already does.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Prepare fee-safe merging of one or more source NFTs into a destination') and scopes the result as an atomic batch of decodable steps. This is readily distinguishable from siblings like prepare_ve33_split, prepare_ve33_reallocation, and prepare_ve33_increase_stake.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the merge framing and one eligibility constraint is given ('no source may end later than it'), which helps an agent decide feasibility. However, it never names alternative tools or states when not to use this one (e.g. single-source top-ups should use increase_stake).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_ve33_reallocationPrepare atomic ve(3,3) reallocationA
Read-only
Inspect

Compile a reviewed current allocation into at most 25 target pool-weight shares as one atomic batch of decodable VeToken steps. The default path only claims, splits, and votes: nothing is burned, no lock is extended, and nothing is withdrawn. The optional compact_max_lock strategy fee-safely consolidates active NFTs, extends the survivor to four years, then creates exactly one voting NFT per target; it burns every merged source NFT and lengthens the lock, and explicitly discloses both. Show the get_ve33_allocations result first and pass its exact state_id; hand the wallet the survivor, every burned source, the extension, and the decoded calls. See ekubo://docs/ve33-workflow.

NameRequiredDescriptionDefault
senderYesVeToken owner that will execute the atomic batch (address)
targetsYesAt most 25 targets. compact_max_lock creates one final voting VeToken per target; preserve_existing_locks may require multiple NFTs per target to keep expiry-cohort decay proportional.
chain_idYesWith ve_token, from get_ve33_allocations (STONX: 4663), not the wallet's chain
strategyNoDefaults to preserve_existing_locks. compact_max_lock explicitly claims fees, consolidates active stake into one surviving NFT, extends it to four years, then creates exactly one voting NFT per target; redundant source NFT IDs are burned.
ve_tokenYesaddress
salt_nonceYesUser-selected nonce for deterministic child VeToken IDs created by required splits (bytes32 hex)
current_state_idYesExact state_id returned by get_ve33_allocations; preparation fails if indexed state changed (bytes32 hex)

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses destructive side effects beyond the annotations: the default preserve_existing_locks path claims, splits and votes with nothing burned, extended or withdrawn, while compact_max_lock burns every merged source NFT and extends the survivor to four years, and it says so explicitly. This is exactly the mutation-risk detail an agent needs; readOnlyHint=true is consistent because the tool only compiles decodable calls rather than executing them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the outcome, then the safety contrast between the two paths, then the workflow prerequisite and handoff instructions. Dense and mostly waste-free, though the 25-target limit and the compact_max_lock semantics are restated in both the description and the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema, the description does not need to explain return values, yet it still tells the agent what to do with the result: hand the wallet the survivor, every burned source, the extension, and the decoded calls. It also points to ekubo://docs/ve33-workflow for deeper detail, covering the full prepare-then-execute loop.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 cross-parameter meaning: current_state_id ties to a specific prior get_ve33_allocations read and fails on state drift, salt_nonce exists because splits create deterministic child IDs, and the target count interacts with strategy (one NFT per target under compact_max_lock vs multiple under preserve_existing_locks). Those relationships are not expressible in the flat schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names a specific verb (compile) and resource (current allocation → at most 25 target pool-weight shares) delivered as one atomic batch of decodable VeToken steps. It clearly separates this tool from single-action siblings like prepare_ve33_vote, prepare_ve33_merge, or prepare_ve33_split, since it composes them into one batch.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states a hard prerequisite (show get_ve33_allocations first, pass its exact state_id, preparation fails if indexed state changed) and explains the two strategy paths with the default called out explicitly. It stops short of naming when to prefer a simpler sibling such as prepare_ve33_vote for a single vote, leaving that inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_ve33_reinvestPrepare ve-token fee reinvestmentA
Read-only
Inspect

Build the safe phased workflow for 'reinvest my fees': automatically claim all active voter fees, prepare one exact-input swap per claimed non-stake token, then increase one VeToken or every existing active allocation without changing ownership or replacing votes. phase=swap returns jurisdiction metadata inline on the result and on every child swap; it is not permission to trade. For a nonempty restricted_jurisdictions list, follow its execution_notice before requesting any signature. Phases run in order after each confirms: claim (omit claims to discover every active allocation; keep the pre-claim balance snapshots), swap with only the exact claimed deltas, never a pre-existing balance, then stake_all with the refreshed state_id and the measured STONX output.

NameRequiredDescriptionDefault
phaseYes
ve_idNodecimal integer
amountNoStake token base units (decimal integer)
claimsNo
senderYesaddress
sourceNo
chain_idYesWith ve_token, from get_ve33_allocations (STONX: 4663), not the wallet's chain
ve_tokenYesaddress
stake_tokenNoaddress
fee_balancesNo
slippage_bpsNo
current_state_idNobytes32 hex
swap_deadline_minutesNoEkubo router route deadline; default 30

Output Schema

NameRequiredDescription
phaseNo
jurisdictionNojurisdiction metadata (ekubo-token-jurisdictions-v2): coverage, execution_hold, restricted_jurisdictions, per-asset classification
exact_input_full_balance_swapsNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only supply readOnlyHint=true, and the description correctly reinforces rather than contradicts that by declaring 'it is not permission to trade'. It adds substantial non-schema behavior: per-phase confirmation gating, inline jurisdiction metadata on the result and every child swap, required pre-claim balance snapshots, state_id refresh between phases, and a signature-blocking notice for restricted jurisdictions — none of which the 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The intent and the three-phase sequence are front-loaded, and each sentence carries operational weight rather than filler. Some sentences are run-on and pack multiple constraints (balance snapshots, delta discipline, jurisdiction notices) into single clauses, which costs a little readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter, four-phase orchestration tool with an output schema, the description covers ordering, state hand-off, safety constraints, and the return-value caveat about jurisdiction metadata. It leaves a few secondary inputs (source, slippage, swap deadline) unexplained, but the output schema relieves it of describing results and nothing essential to calling it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 62% schema coverage across 13 parameters, the description compensates by explaining the phase enum's workflow meaning, the omit-claims discovery mode, the exact-delta constraint on swap amounts, and the refreshed current_state_id requirement for stake_all — all beyond what the schema states. A few parameters (source, slippage_bps, swap_deadline_minutes) get no mention in the description, so it is useful but not exhaustive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — build a phased 'reinvest my fees' workflow — and enumerates the three composed actions (claim all voter fees, swap claimed non-stake deltas, increase VeToken/allocation). This clearly distinguishes it from the atomic siblings prepare_ve33_claim_all_fees, prepare_ve33_increase_stake, and prepare_ve33_claim_fees, which it orchestrates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit sequencing rules: phases run in order after each confirms, omit claims to discover allocations, swap only claimed deltas and never a pre-existing balance, and stake_all only with the refreshed state_id. The jurisdiction branch ('for a nonempty restricted_jurisdictions list, follow its execution_notice before requesting any signature') is a real when-to-do-X rule. It doesn't explicitly say when to prefer an atomic sibling over this composite, so it stops 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.

prepare_ve33_splitPrepare a ve-token splitA
Read-only
Inspect

Split a source ve-token with an explicit salt and return the deterministic child token ID; the source vote is preserved with reduced weight and the child starts unvoted with the same lock end. Non-destructive: no stake leaves the wallet, no NFT is burned, no vote is cleared, and no fees are discarded.

NameRequiredDescriptionDefault
saltYesbytes32 hex
ve_idYesdecimal integer
amountYesBase units (positive decimal integer)
senderYesaddress
chain_idYesWith ve_token, from get_ve33_allocations (STONX: 4663), not the wallet's chain
ve_tokenYesaddress

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, so the description carries most of the behavioral burden and does it well: it discloses the resulting state — source retains its vote at reduced weight, child starts unvoted, both share the same lock end — and it pre-empts the destructive reading of 'split' by asserting no stake leaves the wallet, no NFT is burned, no vote cleared, no fees discarded. That is a genuine reconciliation with readOnlyHint rather than a contradiction. It omits any mention of what the tool actually emits (prepared calldata/transaction) or authority requirements, which is why this is 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and its result, followed by a compact negative list of non-effects. The negatives are enumerated efficiently and each carries information (stake, NFT, vote, fees). Slightly dense but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter prepare tool with an output schema and only a readOnlyHint annotation, the description supplies the essential missing context: resulting vote state on both tokens, lock-end preservation, and a safety profile. An agent needs no return-value explanation because an output schema exists. Gaps remain around caller authority and the prepared-transaction output, keeping it below 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 six parameters, establishing a baseline of 3. The description adds moderate meaning: 'explicit salt' signals the determinism of the child ID, and 'reduced weight' links amount to the source's post-split voting power. It does not explain the units or constraints of amount beyond the schema, nor clarify the chain_id caveat already present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Split a source ve-token') and states the distinguishing mechanism ('explicit salt') plus the deterministic outcome ('return the deterministic child token ID'). An agent can picture exactly what is produced. It stops short of contrasting with the inverse sibling prepare_ve33_merge or with prepare_ve33_reallocation, so sibling differentiation is left implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is the tool for dividing one ve-lock into two, but there is no explicit 'use when X' clause, no mention of the alternative (merge, increase_stake, reallocation), and no stated prerequisites such as ownership of ve_id. The context needed to choose correctly must be derived from the name and the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_ve33_stakePrepare a new ve-token stakeA
Read-only
Inspect

Create a new VeToken stake with an exact stake-token approval. Max duration is the safe default for new stakes; an explicit shorter duration is optional and no existing NFT, vote, fee balance, or ownership is changed.

NameRequiredDescriptionDefault
saltYesUser-selected salt for a deterministic, replay-detectable VeToken ID (bytes32 hex)
amountYesBase units (positive decimal integer)
senderYesaddress
chain_idYesWith ve_token, from get_ve33_allocations (STONX: 4663), not the wallet's chain
ve_tokenYesaddress
stake_tokenYesaddress
max_durationNoDefaults to true when duration_seconds is omitted; set false only with an explicit duration_seconds
duration_secondsNo

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond readOnlyHint=true, the description adds that the operation uses an exact approval and that 'no existing NFT, vote, fee balance, or ownership is changed' — meaningful scoping context. However, it never states that this *prepares* a transaction rather than executing it, leaving a real tension with the readOnlyHint annotation that the agent must resolve on its own.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and kept to two compact clauses with no filler. The second clause is dense — it packs default behavior and a safety guarantee together — but every word carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter tool with an output schema and high schema coverage, the description covers purpose, default behavior, and state-safety adequately. The main omission is clarifying whether the call only builds calldata for signing, which matters given the readOnlyHint annotation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 88%, so the schema already documents salt, amount, chain_id, and the max_duration/duration_seconds pairing. The description restates the max-duration default and the optionality of a shorter duration, adding only marginal meaning beyond the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a new VeToken stake') and adds the distinguishing detail of an 'exact stake-token approval'. The word 'new' implicitly separates it from prepare_ve33_increase_stake/extend/merge, but no sibling is named explicitly, so the differentiation is left for the agent to infer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a default rule ('Max duration is the safe default for new stakes; an explicit shorter duration is optional'), which is useful parameter guidance. It does not say when to pick this tool over prepare_ve33_increase_stake or prepare_ve33_extend, nor does it mention prerequisites such as sourcing chain_id/ve_token from get_ve33_allocations (that only appears in the schema).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_ve33_votePrepare one ve(3,3) NFT vote changeA
Read-only
Inspect

Compile one actively voted ve-token into multiple allocations. Unconditionally claims its current pool first, then splits and changes votes in one atomic batch of decodable VeToken steps. Nothing is burned, withdrawn, or transferred: the source keeps a stake and every additional allocation is a newly minted NFT with the same lock end. Prefer the portfolio reallocation workflow for complete state validation.

NameRequiredDescriptionDefault
senderYesaddress
chain_idYesWith ve_token, from get_ve33_allocations (STONX: 4663), not the wallet's chain
ve_tokenYesaddress
salt_nonceYesUser-selected nonce used to derive deterministic, replay-detectable split salts (bytes32 hex)
allocationsYes
current_voteYesRequired active indexed vote; its pool is claimed unconditionally before any split, clear, or replacement vote
source_ve_idYesdecimal integer
source_amountYesBase units (positive decimal integer)
unallocated_permilleYes

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already supplied, the description adds substantial behavioral context: the current pool is claimed unconditionally first, the batch is atomic, nothing is burned or transferred, and the lock end is preserved on new NFTs. The only ambiguity is that the state-changing language (claims, votes, mints) could momentarily confuse an agent about whether readOnlyHint means "does not execute," but the "compile" and "decodable steps" framing is consistent with a transaction-preparation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four dense sentences, front-loaded with the core action and followed by non-obvious effects and the alternative workflow. No sentence is redundant, and the safety-relevant claim behavior is stated early.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter tool with nested objects and an output schema, the description covers the important behavioral contract and points to a validation-heavy alternative. It leaves a few parameter-level gaps (unallocated_permille semantics, allocation-sum constraints) but output structure need not be explained because an output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 78%, so the schema already documents most parameters, including current_vote's unconditional claim behavior. The description reinforces that source_amount leaves a retained stake and that allocations become newly minted NFTs, but it does not explain unallocated_permille or clarify the salt_nonce replay-detection mechanics beyond the schema text, so it adds only marginal meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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: "Compile one actively voted ve-token into multiple allocations," and clarifies that the source retains a stake while additional allocations become newly minted NFTs. It distinguishes itself from sibling operations by pointing to the "portfolio reallocation workflow," though it does not name prepare_ve33_reallocation explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives one directional hint—prefer the portfolio reallocation workflow for complete state validation—but names no exact sibling tool and gives no explicit when-not-to-use guidance versus prepare_ve33_split, prepare_ve33_clear_vote, or prepare_ve33_merge. Usage is implied rather than fully scoped.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_ve33_withdrawPrepare expired ve-token withdrawalA
Read-only
Inspect

Prepare fee-safe withdrawal of an expired ve-token stake, claiming the active pool first when voted and returning pending owner/stake validation. Ends the position: the stake leaves Ve33 and returns to the owner and the vote is cleared. Only an expired stake can be withdrawn — Ve33 reverts with StakeNotExpired at any earlier time, and there is no early exit or penalty path.

NameRequiredDescriptionDefault
ve_idYesdecimal integer
senderYesaddress
chain_idYesWith ve_token, from get_ve33_allocations (STONX: 4663), not the wallet's chain
ve_tokenYesaddress
current_pool_keyNoPoolKey {token0, token1, config} or {token0, token1, fee, tick_spacing, extension, stableswap_params?}, as read from the pool or vote

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the single readOnlyHint annotation, the description discloses the revert reason (StakeNotExpired), internal ordering ('claiming the active pool first when voted'), the state effect (stake returns to owner, vote cleared), and that the call returns pending owner/stake validation requiring follow-up. The only friction is that 'Ends the position' reads like execution while the tool merely prepares a transaction; the 'Prepare' verb resolves this, but the description never states that an unsigned transaction/signing step results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, with the action and the expiry precondition front-loaded before the revert detail. The phrase 'returning pending owner/stake validation' is the one piece of compressed jargon that costs a beat of clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter tool with a nested PoolKey object and a fully documented schema plus an output schema, the description covers the essentials: precondition, side effects, revert behavior, and ordering. What is missing is the prepare-then-sign workflow and how downstream validation results should be handled, which matters for a tool whose output the agent must act on.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 earns an increment by attaching the conditional 'when voted' to the pool-claim step, which explains when the optional current_pool_key argument actually matters. It adds no guidance on ve_id, sender, or chain_id, but the schema already documents those, including where chain_id comes from (get_ve33_allocations).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Prepare fee-safe withdrawal of an expired ve-token stake') and adds the distinguishing scope ('expired'), which cleanly separates it from siblings like prepare_ve33_clear_vote, prepare_ve33_extend, and prepare_ve33_increase_stake. An agent can identify the operation and its boundary 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit precondition ('Only an expired stake can be withdrawn — Ve33 reverts with StakeNotExpired at any earlier time') and rules out a wrong path ('there is no early exit or penalty path'), which is strong when-to-use/when-not guidance. It stops short of naming the sibling to use instead when the stake is not yet expired (e.g., extend or clear_vote), leaving the alternative implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_wrap_unwrapPrepare a direct wrapped-native wrap or unwrapB
Read-only
Inspect

Prepare a direct wrapped-native deposit or withdrawal on a chain with a verified wrapped native token. The response names the wrapped token, which is not WETH everywhere (BNB Chain wraps BNB, Polygon POL, Monad MON).

NameRequiredDescriptionDefault
amountYesBase units (positive decimal integer)
senderYesaddress
chain_idYesEVM chain ID
directionYes

Output Schema

NameRequiredDescription
execution_plan_referenceNoartifact_reference; pass unchanged

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is known and the description need not restate it. The description does add genuinely useful behavior: the response names the wrapped token and that token is chain-dependent (BNB, POL, MON), which prevents the agent from hardcoding WETH. It stops short of describing what 'prepare' emits (calldata vs. a plan), approval prerequisites, or failure modes for unsupported chains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler, and the core action is front-loaded. The second sentence is a return-value note that partially overlaps the existing output schema, which is the only mild redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and 75% schema coverage, the description need not explain return shape, yet the one return detail it does give (varying wrapped-token symbol) is a good pick. Gaps remain for a four-required-parameter transaction-preparation tool: no supported-chain guidance, no mention of prior token approvals or allowance setup, and no hint about what the caller must do with the prepared result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75%, so most parameter meaning is already carried by the schema (amount in base units, sender address, chain_id, direction enum). The description adds no per-parameter meaning and does not clarify whether amount refers to the native or wrapped denomination. 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Prepare a direct wrapped-native deposit or withdrawal.' The word 'direct' and the 'wrapped native token' qualifier separate it from router-based or liquid-staking siblings like prepare_lido_wrap, but the description never names those siblings explicitly, so differentiation requires inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'on a chain with a verified wrapped native token' implies a precondition for use, and 'direct' suggests the non-router path. However, there is no explicit when-not guidance (e.g. use prepare_lido_wrap for stETH, or don't use on chains lacking a verified wrapper) and no alternatives are named despite ~80 sibling prepare_* tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

quote_uniswap_liquidityCalculate Uniswap concentrated liquidity amountsA
Read-only
Inspect

Calculate V3/V4 range liquidity, rounded mint/burn amounts and explicit token bounds from a current sqrt-price snapshot and raw token budgets, or an exact liquidity amount. Fees are excluded. Obtain current state using prepare_uniswap_reads.

NameRequiredDescriptionDefault
amount0Yesdecimal integer
amount1Yesdecimal integer
liquidityNodecimal integer
tick_lowerYes
tick_upperYes
slippage_bpsNo
tick_spacingYes
sqrt_price_x96Yesdecimal integer

Output Schema

NameRequiredDescription
liquidityNo
amount0_maxNo
amount0_minNo
amount1_maxNo
amount1_minNo
instructionsNo
mint_amount0No
mint_amount1No
input_snapshotNo
live_state_queriedNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true and openWorldHint=false, the safety profile is already covered by annotations, and the description adds genuine value by noting that fees are excluded and that outputs are rounded. However it says nothing about how slippage_bps affects the result, whether tick bounds must align to tick_spacing, or what happens on invalid ranges.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the verb and scope, then adds the short clarifiers 'Fees are excluded' and the state-acquisition pointer, each of which earns its place. The opening sentence is dense but not padded; no redundant restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value detail is not required, and the description covers input sourcing, mode selection, and fee exclusion for an 8-parameter read-only calculator. Remaining gaps are the semantics of tick_spacing/slippage_bps and any validity constraints on the tick range.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

At 50% schema coverage, half the parameters (tick_lower, tick_upper, tick_spacing, slippage_bps) have no schema text, so the description must compensate. It does partially: 'current sqrt-price snapshot' maps to sqrt_price_x96, 'raw token budgets' to amount0/amount1, 'exact liquidity amount' to liquidity, and 'explicit token bounds' hints at the tick pair — but tick_spacing and slippage_bps remain entirely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses a specific verb+resource ('Calculate V3/V4 range liquidity, rounded mint/burn amounts and explicit token bounds') and scopes it to concentrated-liquidity quoting rather than transaction building. It also names the sibling used to obtain inputs ('prepare_uniswap_reads'), though it never explicitly contrasts itself with the prepare_uniswap_v3/v4_add_liquidity siblings that would consume the quote.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the prerequisite/data source ('Obtain current state using prepare_uniswap_reads') and two operating modes (raw token budgets vs. an exact liquidity amount). It lacks an explicit 'do not use for X, use Y instead' exclusion against the actual add/remove liquidity preparation tools.

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. 99 tool updates
    • First observeddecode_pool_config
    • First observeddecode_uniswap_v4_position_info
    • First observedderive_pool_id
    • First observeddiscover_uniswap_pools
    • First observedexport_tokens
    • First observedget_aave_v3_markets
    • First observedget_aerodrome_deployment
    • First observedget_lido_deployment
    • First observedget_liquidity_opportunities
    • First observedget_merkl_deployment
    • First observedget_morpho_vaults
    • First observedget_pool
    • First observedget_pool_liquidity
    • First observedget_position
    • First observedget_position_pool_candidates
    • First observedget_positions_by_owner
    • First observedget_quotes_with_plans
    • First observedget_rewards_claims_by_owner
    • First observedget_sky_savings_deployment
    • First observedget_stonx_allocation_recommendation
    • First observedget_token
    • First observedget_tokens
    • First observedget_uniswap_charts
    • First observedget_uniswap_deployments
    • First observedget_uniswap_pool
    • First observedget_uniswap_pool_ticks
    • First observedget_value_transfer_status
    • First observedget_ve33_allocations
    • First observedlist_pool_keys
    • First observedlist_tokens
    • First observedprepare_aave_v3_borrow
    • First observedprepare_aave_v3_collateral
    • First observedprepare_aave_v3_emode
    • First observedprepare_aave_v3_repay
    • First observedprepare_aave_v3_supply
    • First observedprepare_aave_v3_withdraw
    • First observedprepare_aerodrome_gauge_claim
    • First observedprepare_aerodrome_gauge_deposit
    • First observedprepare_aerodrome_gauge_withdraw
    • First observedprepare_aerodrome_incentive_claim
    • First observedprepare_aerodrome_liquidity_deposit
    • First observedprepare_aerodrome_liquidity_withdraw
    • First observedprepare_aerodrome_lock
    • First observedprepare_aerodrome_sugar_reads
    • First observedprepare_aerodrome_vote
    • First observedprepare_approval_revocations
    • First observedprepare_auction_complete
    • First observedprepare_auction_create
    • First observedprepare_auction_creator_proceeds
    • First observedprepare_fix_pool_price
    • First observedprepare_lido_stake
    • First observedprepare_lido_unwrap
    • First observedprepare_lido_withdrawal_claim
    • First observedprepare_lido_withdrawal_request
    • First observedprepare_lido_wrap
    • First observedprepare_lp_position_deposit
    • First observedprepare_lp_position_earnings_claim
    • First observedprepare_lp_position_transfer
    • First observedprepare_lp_position_withdraw
    • First observedprepare_manual_pool_boost
    • First observedprepare_merkl_claim
    • First observedprepare_morpho_vault_deposit
    • First observedprepare_morpho_vault_redeem
    • First observedprepare_morpho_vault_withdraw
    • First observedprepare_oracle_capacity_expansion
    • First observedprepare_pool_initialization
    • First observedprepare_revenue_buybacks
    • First observedprepare_rewards_claim
    • First observedprepare_sky_savings_deposit
    • First observedprepare_sky_savings_redeem
    • First observedprepare_sky_savings_withdraw
    • First observedprepare_transfers
    • First observedprepare_twamm_order
    • First observedprepare_twamm_order_collection
    • First observedprepare_twamm_order_stop
    • First observedprepare_twamm_virtual_orders
    • First observedprepare_uniswap_reads
    • First observedprepare_uniswap_v2_add_liquidity
    • First observedprepare_uniswap_v2_remove_liquidity
    • First observedprepare_uniswap_v3_add_liquidity
    • First observedprepare_uniswap_v3_collect_fees
    • First observedprepare_uniswap_v3_remove_liquidity
    • First observedprepare_uniswap_v4_add_liquidity
    • First observedprepare_uniswap_v4_collect_fees
    • First observedprepare_uniswap_v4_remove_liquidity
    • First observedprepare_ve33_claim_all_fees
    • First observedprepare_ve33_claim_fees
    • First observedprepare_ve33_clear_vote
    • First observedprepare_ve33_extend
    • First observedprepare_ve33_increase_stake
    • First observedprepare_ve33_merge
    • First observedprepare_ve33_reallocation
    • First observedprepare_ve33_reinvest
    • First observedprepare_ve33_split
    • First observedprepare_ve33_stake
    • First observedprepare_ve33_vote
    • First observedprepare_ve33_withdraw
    • First observedprepare_wrap_unwrap
    • First observedquote_uniswap_liquidity

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Analyzes live Uniswap V2/V3, Balancer, and Curve stableswap pools for positions, price moves, pool health, rug signals, slippage, and depeg risk, and builds portable State Twins for offline analysis.
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables launching tokens on pump.fun and StonkFun with user-signed transactions, plus a disclosed two-sided quoter for market making.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Exposes Uniswap V2 and V3 on-chain data and swap execution as MCP tools, resources, and prompts, enabling AI agents to query prices, inspect pools, get quotes, and execute trades.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.