Transactions/explain_tx

What did this transaction do?

$0.01per call after 25 free a day

Reads a confirmed transaction: whether it worked, the fee, each wallet's SOL and token changes, the programs used, and why it failed.

Run after a transaction lands or fails, to report what happened instead of guessing from logs. For failures it names the failing program and the fix.

Keeps the model from guessing. Reports the real balance changes from chain data, not a model's guess from raw logs. For failures it names the program and the reason.

Call it

TransportHow
HTTPPOST /api/tools/explain_tx with a JSON body of the inputs below.
MCPtools/call with name explain_tx on /mcp.

Inputs

NameWhat it's looking forWhere to get it
tx_id
string (base58), required
The transaction's signature.Returned when you send, or from history. Never make one up.
network
"mainnet-beta" | "devnet", optional
Default "mainnet-beta" (real money)."devnet" only for test wallets.

Returned fields

Every field the tool returns, what it is, and exactly how it's worked out.

FieldWhat it isHow it's worked out
result
"success" | "failed"
Whether it worked. Failed transactions still pay fees.meta.err is empty for success.
summary
string
What happened, in a few plain sentences.Built from the result, the fee and the biggest balance changes.
time / slot
string | number
When and where it landed.Block time in ISO 8601, and the slot.
fee_payer / signers
string / string[]
Who paid the fee and who signed.The first account, and the accounts marked as signers.
fee.lamports / fee.sol
string
The fee charged.meta.fee.
programs[]
{ address, name }[]
The programs the transaction called.Each top-level step's program, with its name when we know it.
sol_changes[]
{ account, before, after, change, raw_change }[]
Every account whose SOL changed, fee included.Balances before vs after, exact decimals.
token_changes[]
{ owner, token, symbol, before, after, change, raw_change }[]
Every token balance that changed, by owner wallet and token.Token balances before vs after, with each token's decimals. Tickers from Jupiter.
compute_used
number | null
Compute units used.meta.computeUnitsConsumed.
failure
object | null
For failed transactions: the raw error, the step and program that failed, what it means, and the last log lines.meta.err decoded. The failing program is the program of the failing step. The meaning comes from why_failed.