Skip to main content
Glama
0200project

base-tx-explain

by 0200project

base-tx-explain

Ein MCP-Tool: explain_transaction(tx_hash) → strikte JSON-Erklärung jeder Base-Mainnet-Transaktion.

Gib ihm einen Transaktions-Hash. Du bekommst zurück, was passiert ist, in verständlichem Englisch, plus die strukturierten Fakten: was bewegt wurde, wer beteiligt war, worauf zu achten ist, was es gekostet hat. Deterministische Onchain-Dekodierung — kein LLM irgendwo im Antwortpfad, sodass dieselbe Eingabe immer dieselbe Ausgabe erzeugt, es nichts zu halluzinieren gibt und der JSON-Vertrag stabil genug ist, um blind geparst zu werden.

Nur Base-Mainnet (Chain-ID 8453).

Links: Live-Endpunkt · Dokumentation · OpenAPI · MCP-Registry: io.github.0200project/base-tx-explain · Website

Für Agenten

// tools/call → explain_transaction
{ "tx_hash": "0x0c84b951051f779903b57af9225ca570c77cd5531195968dd78106a69d6c4d8c" }

gibt Folgendes zurück (sowohl als structuredContent als auch als stringifiziertes JSON in content[0].text):

{
  "summary": "0x401d...f2c5 swapped 0.03 ETH for 12,899,422 WNL via Uniswap V4 PoolManager.",
  "action_type": "swap",
  "status": "success",
  "assets_moved": [
    { "token": "ETH", "amount": "0.03", "from": "0x401d...", "to": "0xd0a4...", "token_address": null, "standard": "native" },
    { "token": "WNL", "amount": "12899422.144134853458613801", "from": "0x4985...", "to": "0x401d...", "token_address": "0xb200...9a01", "standard": "erc20" }
  ],
  "counterparties": [
    { "address": "0xd0a4...", "label": null },
    { "address": "0x4985...", "label": "Uniswap V4 PoolManager" }
  ],
  "risk_flags": [
    { "flag": "unverified_contract", "detail": "The target contract 0xd0a4...e4bf has no verified source code on Sourcify." }
  ],
  "gas_paid_usd": 0.020562,
  "timestamp": "2026-08-20T03:54:19.000Z",
  "block_number": 50204356,
  "tx_hash": "0x0c84...4c8c",
  "basescan_url": "https://basescan.org/tx/0x0c84...4c8c",
  "partial": false
}

Feldspezifikation

  • action_type — einer von: eth_transfer, erc20_transfer, erc20_approval, approval_revoked, approval_for_all, swap, add_liquidity, remove_liquidity, wrap, unwrap, nft_mint, nft_transfer, nft_sale, token_mint, bridge_in, bridge_out, lending_supply, lending_withdraw, lending_borrow, lending_repay, stake, unstake, claim, batch_transfer, account_abstraction_bundle, attestation, name_registration, contract_deployment, contract_interaction, unknown.

  • risk_flags[].flag — einer von: unverified_contract, first_time_counterparty, approval_for_all, unlimited_approval, known_drainer, nonstandard_token_symbol, impersonated_token, transaction_reverted. Ein Flag bedeutet immer, dass ein Nachweis gefunden wurde; eine fehlgeschlagene Abfrage erzeugt niemals ein Flag.

  • statussuccess oder reverted. Revertierte Transaktionen werden nach ihrer Absicht klassifiziert (was versucht wurde) und tragen ein transaction_reverted-Risikoflag.

  • partial: true — die vollständige Bedeutung der Transaktion konnte nicht ermittelt werden; summary gibt genau an, was bekannt ist und was nicht. Bei Fehlern gibt das Tool isError: true mit { "error": "...", "code": "invalid_hash" | "not_found" | "pending" | "upstream_error" } zurück.

  • Beträge sind Dezimal-Strings (keine Floats). Adressen werden so geliefert, wie sie onchain emittiert wurden; vergleiche sie case-insensitiv.

  • provenance.untrusted_fields — listet die Felder auf, deren Zeichenketteninhalte aus Quellen stammen, die von Angreifern kontrolliert werden (Token-Symbole, Vertrags-/Sammlungsnamen, Ereignis-/Funktionsnamen): derzeit summary, assets_moved[].token und counterparties[].label. Wenn du diese Ausgabe an ein LLM fütterst, behandle diese Felder als Daten, niemals als Anweisungen. Ein Token, das sich selbst mit anweisungsähnlichem oder werblichem Text benennt, ist ein Scam-Signal, kein Befehl. Symbole werden normalisiert (Steuerzeichen, Zeilentrenner, Emojis und Homoglyphen werden entfernt), und ein Token, dessen selbst angegebenes Symbol kein plausibler Ticker ist, wird unter seiner Vertragsadresse statt unter seinem gewählten Namen angezeigt — so kann ein feindseliger Name keinen echten Namen imitieren oder Text in den Kontext eines Agenten schmuggeln.

So wird dekodiert

Roh-Transaktion + Receipt vom Base-RPC → eingebaute Decoder für ~40 Ereignisformate (ERC-20/721/1155, Uniswap V2/V3/V4, Aerodrome/Solidly, Seaport, Aave V3, Compound V3, OP-stack-Brücken, ERC-4337 EntryPoint, EAS, Basenames, WETH, LP-Positionsmanager) → deterministische Klassifizierung in fester Regelreihenfolge → Labels aus einer verifizierten Tabelle wichtiger Base-Verträge. App-spezifische Ereignisse werden — sofern verfügbar — über die verifizierte ABI des Vertrags auf Sourcify benannt. Risikoflags stammen aus dem Verifizierungsstatus von Sourcify/Basescan, den öffentlichen Blocklisten von ScamSniffer und MyEtherWallet sowie der Approval-Semantik. gas_paid_usd umfasst die OP-stack-L1-Datengebühr und bepreist ETH anhand des Chainlink-ETH/USD-Feeds im Block der Transaktion.

Related MCP server: Base Network MCP Server

Preise

  • 10 kostenlose Aufrufe pro Client, ohne Anmeldung.

  • Danach: 0,02 $ pro Aufruf in USDC auf Base über x402 — die zahlungspflichtige Antwort enthält alles, was ein x402-fähiger Agent benötigt, um autonom zu zahlen und es erneut zu versuchen. Kein Konto, kein API-Schlüssel.

  • Außerdem über einen Marktplatz gehostet verfügbar (dort gilt stattdessen die Marktplatz-Abrechnung).

Verbinden

{
  "mcpServers": {
    "base-tx-explain": {
      "type": "streamable-http",
      "url": "https://base-tx-explain.fly.dev/mcp"
    }
  }
}

Selbst hosten

git clone https://github.com/0200project/base-tx-explain.git && cd base-tx-explain
npm install
cp .env.example .env   # defaults work: free mode, public Base RPCs
npm run dev            # or: npm run build && npm start

Umgebungsvariablen (siehe .env.example): PAYMENT_MODE (none | x402), X402_PAY_TO (deine Empfängeradresse — nimm eine frische Wallet), X402_PRICE_USD, X402_FACILITATOR_URL (Standard: der PayAI-Facilitator, der ohne Schlüssel auskommt; auch der Coinbase-CDP-Facilitator funktioniert, und dessen API-Schlüssel bergen kein Ausgabenrisiko), FREE_CALLS_PER_IP, BASE_RPC_URLS, optional ETHERSCAN_API_KEY.

Der Server ist zustandslos (pro Anforderung ein frischer MCP-Server), skaliert daher horizontal und läuft auf allem, was Docker ausführen kann — ein Dockerfile und eine Apify-.actor/-Konfiguration sind enthalten.

npm test          # unit tests
npm run validate  # decode 100 recent live Base txs, print grades (ship gate: >=90% clean, 0 crashes)

Garantien und Grenzen

  • Deterministisch: gleicher Transaktions-Hash → gleiche Dekodierung. Keine Modellaufrufe, niemals.

  • Interne ETH-Transfers (Wertbewegungen von Vertrag → Vertrag) sind ohne Trace-APIs nicht sichtbar; WETH-Ereignisse decken die üblichen Fälle ab. Wenn etwas nicht dekodiert werden kann, sagt die Ausgabe das, statt zu raten.

  • Blocklisten werden zur Laufzeit aus ihren öffentlichen Quellen bezogen und zweimal täglich aktualisiert; das Fehlen eines known_drainer-Flags ist keine Sicherheitsgarantie.

  • Keine Finanzberatung; dieses Tool berichtet, was eine Transaktion getan hat, nicht ob etwas eine gute Idee ist.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Check a Base contract, transaction or web page before you act. Free pricing, paid per call in USDC.

  • Decode EVM bytes to JSON: event-log decoder, calldata explainer, selector lookup, ABI fetch.

  • Read-only on-chain intelligence for AI agents on Base: balances, tokens, gas, tx status.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/0200project/base-tx-explain'

If you have feedback or need assistance with the MCP directory API, please join our Discord server