Agentic Portal

EVM Transaction Explainer

blockchain
Serving

Explains an EVM transaction in plain language: decoded intent, asset movements, approvals, and risk flags. POST /v1/tool with {tx_hash, chain_id}, or GET /v1/explain with query params, and get one JSON object with a summary, moved assets, gas, parties, and risk flags. Deterministic for identical input. Pay per request in USDC; no account, no API key.

Endpoint
POST https://agent.pocket.network/v1/tx-explain/v1/tool
Price per call
$0.005 USD
Networks payable on
Base (eip155:8453), Tempo (eip155:4217)
Protocol
rest

Calling it

The first call returns 402 Payment Required with the terms. Sign for those terms and retry the same request with the payment attached.

Example request

A real, working call — the request the service card verifies against.

curl -X POST https://agent.pocket.network/v1/tx-explain/v1/tool \
  -H 'content-type: application/json' \
  -d '{"arguments":{"chain_id":1,"tx_hash":"0x2d36a8c0925cd0ea335cd84b045a520e26ac50b0182d37234471c3f0914c9f6c"}}'
Example response

The response this call returned, captured 2026-09-21 23:49:56 UTC.

{
  "portal": {
    "provenance": "third-party-supplier",
    "serviceId": "tx-explain",
    "schemaCheck": "unchecked"
  },
  "data": {
    "as_of": "2026-09-21T23:49:55Z",
    "assets_moved": [
      {
        "amount": "0.003920579122847116",
        "recipient": "0xfeeeeee44046c3f61a8cc081e0918ef0de0a7ffc",
        "token": "ethereum"
      }
    ],
    "chain": "ethereum",
    "chain_id": 1,
    "confidence": "unknown",
    "contract_context": {
      "abi_verified": false,
      "address": "0xfeeeeee44046c3f61a8cc081e0918ef0de0a7ffc",
      "contract_name": null,
      "is_contract": true,
      "is_proxy": false,
      "proxy_impl": null,
      "token_surface": {
        "decimals": null,
        "name": null,
        "symbol": null
      }
    },
    "gas": {
      "effective_gas_price_gwei": 0.0541,
      "gas_limit": "29022",
      "gas_used": "29022",
      "status": "success",
      "tx_fee_native": "0.000001571148690384"
    },
    "method": null,
    "parties": {
      "from": "0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97",
      "to": "0xfeeeeee44046c3f61a8cc081e0918ef0de0a7ffc"
    },
    "raw": {
      "decoded_args": null,
      "selector": "0x6aaf4197",
      "value_wei": "3920579122847116"
    },
    "risk_flags": [
      "method unknown — verify before signing-similar flows"
    ],
    "summary": "Contract call on ethereum: unknown selector 0x6aaf4197 — 0.003920579122847116 ethereum to 0xfeeeeee44046c3f61a8cc081e0918ef0de0a7ffc (confirmed, fee 0.000001571148690384 native)",
    "tx_hash": "0x2d36a8c0925cd0ea335cd84b045a520e26ac50b0182d37234471c3f0914c9f6c"
  }
}

Try it

Make one real paid call from your own wallet — about $0.005 on Base (eip155:8453). The wallet signs; nothing here holds a key. You'll see exactly what the service answers.

No browser wallet found. Install MetaMask, Rabby, or Coinbase Wallet to try a call here.

Supported methods

Methods the registry lists for this service. The portal forwards any call as sent; the supplier decides what it answers, and a delivered answer is settled.

Methods EVM Transaction Explainer accepts, and whether each reads or writes.
MethodEffect
GET /v1/explainread
GET /v1/healthread
GET /v1/versionread
POST /v1/toolread

Schemas

Published by the service itself. The example above is generated from these.

Request schema
{
  "type": "object",
  "description": "A transaction to explain. On the MCP relay route POST /v1/tool these fields are wrapped under an `arguments` object; the direct route takes them at the top level. GET /v1/explain takes the same fields as query parameters.",
  "properties": {
    "tx_hash": {
      "type": "string",
      "description": "The transaction hash, 0x-prefixed."
    },
    "chain_id": {
      "type": "integer",
      "description": "EVM chain id (default 1)."
    }
  },
  "required": [
    "tx_hash"
  ]
}
Response schema
{
  "type": "object",
  "description": "For POST /v1/tool (and GET /v1/explain), a JSON object with a plain-language summary, moved assets, gas, parties, risk flags, and the chain_id as received. The exact shape is the service's own and is not pinned here; errors return a JSON object with an `error` field, and the GET routes return their own small JSON documents."
}