Skip to content

Run Transaction ​

Status: Live on the public MCP. Tool: run_transaction.

Amsterdam

Send 1 wei to an empty account under Amsterdam and tell me the gas the wallet would need.

Look forgasUsed near 204,600, with txStateGas near 183,600

Agent will likely call run_transactionWhat you can ask →

Purpose ​

Run a message-call or contract-creation transaction under a chosen fork and receive paid transaction gas plus receipt logs. The sender is impersonated from from — no private key.

This is the verb for wallet gas limits, contract deployment boundaries (EIP-7954), first-touch ETH transfers (EIP-8037), EIP-7708 Transfer logs on tx value, and paid txStateGas (new-slot SSTORE / first-touch). Program-gas SSTORE / SLOAD belongs on Run Bytecode.

Raw opcode / stack / precompile programs belong on Run Bytecode.

Agent voice ​

Tell the user paid gas, wallet gas limit, logs, and regular-gas / state-gas splits in plain language. Use regularGas parts when explaining small gaps between similar transfers — not JSON names like gasUsed or txStateGas unless they asked for raw output.

When to use ​

  • A generic Glamsterdam or Fusaka transaction (no EIP named)
  • “Is 21,000 gas enough for this transfer after Glamsterdam?”
  • Paid gas of a simple ETH transfer (Fusaka ≈ 21,000; Glamsterdam first-touch ≈ 204,600)
  • Receipt logs / decoded EIP-7708 Transfer rows
  • Glamsterdam txRegularGas / txStateGas when present
  • Contract creation with caller-supplied initcode and deployed runtime-code size

MCP tool name ​

run_transaction

Inputs ​

FieldRequiredDescription
fromYesHex sender (impersonated)
toNoHex recipient. Omit for contract creation; then data is initcode
valueNoWei as a decimal string (default 0)
dataNoCalldata hex, or initcode when to is omitted
codeNoRuntime bytecode installed at to before the tx (contract-wallet / SSTORE)
accountsNoBYOS prestate on this call — same shape as Run Bytecode (balance, nonce, code, storage)
forkNo{ baseHardfork, eips[] } — default glamsterdam
gasLimitNoDecimal string. Default 1000000. Tool ceiling 110000000; fork validity rules still apply
authorizationListNoSigned EIP-7702 JSON items — Pectra+ type-4 set-code tx. Use Inspect Artifact authorization-list to validate first.
accessListNoEIP-2930 access list (type-2 tx). On Glamsterdam, list bytes pay the calldata floor (EIP-7981). Not combinable with authorizationList.

BYOS prestate ​

Same empty-world accounts[] model as Run Bytecode: seed senders, recipients, deployed runtime code, and storage on this call. Use code on the tx when you need bytecode at to without a separate account row.

Fork notes ​

Same named forks as Run Bytecode: default glamsterdam; fusaka when the user asks for current-mainnet EL behavior. One run per named fork unless they ask to compare.

Outputs ​

FieldDescription
successTx completed without revert or intrinsic failure
gasUsedPaid transaction gas (intrinsic + execution − refund)
gasUsedScopeAlways transaction
txRegularGasGlamsterdam only — regular-gas total
txStateGasGlamsterdam only — state-gas total
regularGasParts that sum to txRegularGas (base, recipient, value, calldata, floorUplift, execution)
recipientPrestateself / existing / created before the tx — labels txStateGas, not regular gas
returnValueHex return data
errorFailure message (e.g. intrinsic gas too low), else null
createdAddressSuccessful creation only — deployed contract address
deployedCodeSizeSuccessful creation only — stored runtime-code bytes
logs / decodedLogsReceipt logs; EIP-7708 Transfer/Burn decorations when present
provenanceAlways present — named eips[] add a compact Spec: clause on caveat

If paid regular gas differs from what you expected, read regularGas — do not explain a regular gap with txStateGas alone.

Example — first-touch 1 wei (Glamsterdam) ​

json
{
  "from": "0x00000000000000000000000000000000000000ee",
  "to": "0x00000000000000000000000000000000000000aa",
  "value": "1",
  "fork": { "baseHardfork": "glamsterdam" }
}

Expected: success: true, gasUsed: "204600", txStateGas: "183600". The same call on fusaka is gasUsed: "21000". With "gasLimit": "21000" Glamsterdam fails.

JSON schema ​

run_transaction.input.json

Limits ​

See Guarantees for gas ceilings. The higher transaction-only ceiling supports Glamsterdam's EIP-8037 state-gas reservoir for large deployments.

Run Transaction Changelog
Run Transaction Changelog
  1. v0.92026-10-06Public endpoint is live.
  2. v0.82026-10-04Optional accessList (EIP-2930 type-2 tx) for EIP-7981 floor demos on Glamsterdam.
  3. v0.72026-09-18Named eips[] provenance.caveat includes a compact Spec: snapshot.
  4. v0.62026-09-17Contract creation via omitted to; createdAddress and deployedCodeSize; 110M transaction-only ceiling.
  5. v0.52026-09-17Fusaka fork note: current-mainnet features, not only a compare baseline.
  6. v0.42026-09-16Generic Glamsterdam / Fusaka transaction is a first-class when-to-use.
  7. v0.22026-09-14accounts[].storage seeds slots (EIP-8038 existing-slot SSTORE).
  8. v0.12026-09-08New MCP tool — VM transaction execution; paid gas, 8037 dimensions, 7708 receipt logs.

Get started = connect and ask questions. Reference = catalogues and tool schemas. Internals = for builders.