Skip to main content
Glama

Simulate Transaction

simulate_transaction
Read-only

Dry-run one transaction or an ordered bundle (e.g. approve then swap) from a wallet on Ethereum or Base without signing or broadcasting. Returns per-call success or decoded revert reason, gas used, the wallet's net ETH and ERC-20 balance changes, new token approvals (flagging unlimited ones), and a receipt hash committing to the inputs and results at the simulated block. Use the result to decide whether to proceed, adjust, or abort before acting on-chain.

Use when: Use before recommending or preparing any state-changing transaction to confirm it will not revert and to see actual token outflows, inflows, and approvals. Put dependent steps (approve then swap) in one call so later steps see earlier state. Use read_contract for view-only reads and decode_transaction for already-mined txs.

Limitations: Point-in-time result at the reported block; mempool ordering, MEV, and later state can change the real outcome. Gas affordability, nonce, and signatures are not checked. Max 8 calls; Ethereum and Base only. If bundle simulation is unavailable, calls run independently and balance/approval changes are omitted.

Alternatives: read_contract, decode_transaction, get_dex_quote, get_token_approvals

Input Schema

NameRequiredDescriptionDefault
callsYesOrdered bundle, e.g. [approve, swap]; later calls see earlier state.
chain_idNo1=Ethereum, 8453=Base.
from_addressYesSender wallet (msg.sender).
block_identifierNo'latest' or a decimal parent block number.latest

Output Schema

NameRequiredDescriptionDefault
modeYes
callsYes
receiptYes
chain_idYes
warningsYes
approvalsYes
from_addressYes
all_succeededYes
balance_changesYes
base_block_numberYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, and the description is fully consistent with that — it stresses nothing is signed or broadcast. Beyond that it discloses the return payload, the unlimited-approval flag, the receipt hash, and the degradation mode when bundle simulation is unavailable, which is real added context. It does not cover rate limits or error-surface behaviour beyond decoded revert reasons, so it is good 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?

Front-loaded with the core action, then cleanly sectioned into Use when / Limitations / Alternatives. Every sentence carries new information — no restating of the name or title, no 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?

For a complex simulation tool with 4 parameters, nested call objects, and an output schema, the description covers purpose, preconditions, failure modes, and degradation behaviour. An agent has everything needed to decide to call it and to interpret the result 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?

Schema coverage is 100%, so the baseline is 3; the description earns above that by explaining the ordering semantics of the calls array ('later calls see earlier state'), the 8-call ceiling, and the Ethereum/Base restriction on chain_id. It adds little about from_address or block_identifier that the schema does not 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 ('Dry-run') plus resource ('one transaction or an ordered bundle') and scope (wallet, Ethereum/Base, no signing or broadcasting). It explicitly positions itself against read_contract, decode_transaction, get_dex_quote and get_token_approvals, so an agent can distinguish it from every nearby sibling without opening a schema.

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

Usage Guidelines5/5

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

The 'Use when' block gives a concrete trigger ('before recommending or preparing any state-changing transaction'), names the alternatives with the condition that selects each (read_contract for view-only, decode_transaction for mined txs), and explains the bundling pattern for dependent steps. Limitations (point-in-time, no gas/nonce/signature checks, max 8 calls, two chains) round out the when-not guidance.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.