Skip to main content
Glama

transactions / approve_router

transactions.approve_router
Read-onlyIdempotent

Approve ERC20 tokens for an allowlisted Rootstock router, rejecting arbitrary spenders and simulating policy-gated transactions before execution.

Instructions

ERC20 approve whose spender must be an allowlisted Rootstock router. Arbitrary spenders refused. Sim-first, policy-gated.

Input Schema

NameRequiredDescriptionDefault
tokenYes
routerYes
chain_idYes
amount_weiYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.9.0

TDQS

B3.2/5.0
Behavior3/5

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

The annotations already declare the safety profile (readOnlyHint, idempotentHint, non-destructive), and the description adds real value on top: an allowlist gate on the spender and a simulation-first, policy-checked flow. However, it never resolves whether the call only simulates/prepares or also broadcasts, and it gives no detail on policy failure modes or what the caller receives back.

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 operation and then the constraint and the execution model. Nothing is redundant and no sentence simply restates the title.

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 four-parameter, no-output-schema mutation-adjacent tool, the description omits the outcomes an agent needs: whether a transaction is broadcast, what the simulation result contains, and how the policy gate reports refusal. The readOnlyHint annotation sits uneasily beside 'ERC20 approve' and the description does not reconcile that.

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% across four required parameters, so the description carries the full burden and mostly drops it. It clarifies that 'router' means an allowlisted Rootstock router and ties the call to a spender, but chain_id, token (address format?) and amount_wei (string-encoded wei, decimals handling) are left 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?

Names a specific operation and resource: an ERC20 approve restricted to an allowlisted Rootstock router. The constraint ('spender must be an allowlisted Rootstock router') makes it distinct from a generic approve, though it never names the neighbouring tools (transactions.call_router, transactions.prepare, transactions.simulate) it could be confused with.

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?

'Arbitrary spenders refused' and 'policy-gated' imply the preconditions, so an agent can infer that unlisted routers will fail. But it never says when to pick this over transactions.prepare or transactions.call_router, nor what to do after the simulation returns.

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