Skip to content

Run Transaction

Status: Implemented — ships on the public MCP at launch. MCP tool: run_transaction. Public endpoint not live.

Purpose

Run a value-bearing 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, 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.

When to use

  • A generic Amsterdam or Osaka transaction (no EIP named)
  • “Is 21,000 gas enough for this transfer after Amsterdam?”
  • Paid gas of a simple ETH transfer (Osaka ≈ 21,000; Amsterdam first-touch ≈ 204,600)
  • Receipt logs / decoded EIP-7708 Transfer rows
  • Amsterdam txRegularGas / txStateGas when present

MCP tool name

run_transaction

Inputs

FieldRequiredDescription
fromYesHex sender (impersonated)
toYesHex recipient
valueNoWei as a decimal string (default 0)
dataNoCalldata hex
codeNoRuntime bytecode installed at to before the tx (contract-wallet / SSTORE)
accountsNoExtra accounts to prefund (address, optional balance, code, storage slots)
forkNo{ baseHardfork, eips[] } — default amsterdam
gasLimitNoDecimal string. Default 1000000. Pass 21000 for the wallet-era simple-transfer limit.
authorizationListNoSigned EIP-7702 JSON items — Prague+ type-4 set-code tx. Use Inspect authorization-list to validate first.

Fork notes

Same named forks as Run Bytecode: default amsterdam, optional osaka for a mainnet baseline compare.

Outputs

FieldDescription
successTx completed without revert or intrinsic failure
gasUsedPaid transaction gas (intrinsic + execution − refund)
gasUsedScopeAlways transaction
txRegularGasAmsterdam only — regular-gas total
txStateGasAmsterdam only — state-gas total
returnValueHex return data
errorFailure message (e.g. intrinsic gas too low), else null
logs / decodedLogsReceipt logs; EIP-7708 Transfer/Burn decorations when present
provenanceAlways present

Example — first-touch 1 wei (Amsterdam)

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

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

JSON schema

run_transaction.input.json

Limits

See Guarantees for gas ceilings.

Changelog

Run Transaction Changelog
  1. v0.42026-09-16Generic Amsterdam / Osaka transaction is a first-class when-to-use.
  2. v0.22026-09-14accounts[].storage seeds slots (EIP-8038 existing-slot SSTORE).
  3. v0.12026-09-08New MCP tool — VM transaction execution; paid gas, 8037 dimensions, 7708 receipt logs.

Use = end-user reference. Internals = architecture and operations. Each section carries its own micro-changelog.