base-tx-explain
base-tx-explain
Один MCP-инструмент: explain_transaction(tx_hash) → строгое JSON-объяснение любой транзакции Base mainnet.
Передайте ему хеш транзакции. В ответ вы получите описание произошедшего простым языком, а также структурированные факты: что перемещалось, кто участвовал, на что обратить внимание и сколько это стоило. Детерминированная ончейн-расшифровка — никакого LLM на пути формирования ответа, поэтому один и тот же вход всегда даёт один и тот же результат, галлюцинировать нечему, а JSON-контракт достаточно стабилен, чтобы парсить его вслепую.
Только Base mainnet (chain id 8453).
Ссылки: Рабочий endpoint · Документация · OpenAPI · MCP-реестр: io.github.0200project/base-tx-explain · Сайт
Для агентов
// tools/call → explain_transaction
{ "tx_hash": "0x0c84b951051f779903b57af9225ca570c77cd5531195968dd78106a69d6c4d8c" }возвращает (и как structuredContent, и как строковый JSON в 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
}Контракт полей
action_type— одно из: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— одно из:unverified_contract,first_time_counterparty,approval_for_all,unlimited_approval,known_drainer,nonstandard_token_symbol,impersonated_token,transaction_reverted. Наличие флага всегда означает, что найдено подтверждающее свидетельство; неудачный поиск никогда не создаёт флаг.status—successилиreverted. Транзакции со статусомrevertedклассифицируются по намерению (что пытались сделать) и несут флаг рискаtransaction_reverted.partial: true— полный смысл транзакции установить не удалось;summaryточно указывает, что известно, а что нет. При ошибках инструмент возвращаетisError: trueс{ "error": "...", "code": "invalid_hash" | "not_found" | "pending" | "upstream_error" }.Суммы — это десятичные строки (не числа с плавающей запятой). Адреса указаны в исходном ончейн-виде; сравнивайте их без учёта регистра.
provenance.untrusted_fields— перечисляет поля, строковое содержимое которых поступает из источников, контролируемых атакующим (символы токенов, названия контрактов/коллекций, имена событий/функций): на сегодня этоsummary,assets_moved[].tokenиcounterparties[].label. Если вы передаёте этот вывод LLM, относитесь к этим полям как к данным, а не как к инструкциям. Токен, называющий себя текстом, похожим на инструкцию или рекламу, — это сигнал скама, а не команда. Символы нормализуются (управляющие символы, разделители строк, эмодзи и гомоглифы удаляются), а токен, чей заявленный им самим символ не является правдоподобным тикером, отображается по адресу своего контракта, а не по выбранному имени — поэтому враждебное имя не может выдать себя за настоящее или протащить текст в контекст агента.
Как выполняется декодирование
Сырая транзакция + receipt из Base RPC → встроенные декодеры для ~40 форматов событий (ERC-20/721/1155, Uniswap V2/V3/V4, Aerodrome/Solidly, Seaport, Aave V3, Compound V3, OP-stack bridges, ERC-4337 EntryPoint, EAS, Basenames, WETH, LP position managers) → детерминированная классификация по упорядоченным правилам → метки из проверенной таблицы основных контрактов Base. События, специфичные для приложения, получают названия через подтверждённый ABI контракта на Sourcify, когда он доступен. Флаги риска формируются на основе статуса верификации Sourcify/Basescan, публичных блок-листов ScamSniffer и MyEtherWallet и семантики approval. gas_paid_usd включает комиссию за данные L1 в OP-stack, а цена ETH берётся из фида Chainlink ETH/USD в блоке транзакции.
Related MCP server: Base Network MCP Server
Цены
10 бесплатных вызовов на клиента, без регистрации.
Далее: $0.02 за вызов в USDC на Base через x402 — ответ с требованием оплаты содержит всё, что нужно x402-совместимому агенту, чтобы оплатить и повторить запрос автономно. Без аккаунта и API-ключа.
Также доступна версия, размещённая на маркетплейсе (в этом случае действует биллинг маркетплейса).
Подключение
{
"mcpServers": {
"base-tx-explain": {
"type": "streamable-http",
"url": "https://base-tx-explain.fly.dev/mcp"
}
}
}Самостоятельный хостинг
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Переменные окружения (см. .env.example): PAYMENT_MODE (none | x402), X402_PAY_TO (ваш адрес для получения средств — используйте новый кошелёк), X402_PRICE_USD, X402_FACILITATOR_URL (по умолчанию — бесключевой фасилитатор PayAI; фасилитатор Coinbase CDP также работает, и его API-ключи не несут риска расходования средств), FREE_CALLS_PER_IP, BASE_RPC_URLS, опциональный ETHERSCAN_API_KEY.
Сервер не хранит состояние (на каждый запрос создаётся новый MCP-сервер), поэтому он горизонтально масштабируется и работает на всём, что поддерживает Docker, — в комплект входят Dockerfile и конфигурация Apify .actor/.
npm test # unit tests
npm run validate # decode 100 recent live Base txs, print grades (ship gate: >=90% clean, 0 crashes)Гарантии и ограничения
Детерминированность: один и тот же хеш транзакции → одна и та же расшифровка. Никаких вызовов моделей, никогда.
Внутренние ETH-переводы (перемещение ценности между контрактами) не видны без trace API; типичные случаи покрываются событиями WETH. Когда что-то не удаётся декодировать, вывод сообщает об этом, а не догадывается.
Блок-листы загружаются во время выполнения из публичных источников и обновляются дважды в день; отсутствие флага
known_drainerне является гарантией безопасности.Не является финансовой рекомендацией; этот инструмент сообщает, что сделала транзакция, а не то, является ли какое-либо действие хорошей идеей.
This server cannot be deployed
Maintenance
Related MCP Connectors
Base on-chain address labels (eth-labels 104k category tags), tx explainer, clusters, CCTP USDC.
Check a Base contract, transaction or web page before you act. Free pricing, paid per call in USDC.
Base token risk (honeypot sim), prices, balances, Basenames, tx data. Pay-per-call in USDC via x402.
13 free Base tools: address labels, tx explain, balances, receipts, gas, logs, bytecode.
Related MCP Servers
- AlicenseAqualityCmaintenanceSmart contract security scanner for Base. Detect honeypots, rug pulls, hidden mints, proxy dangers, and generate audit reports.825 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables querying Base Network blockchain data including blocks, transactions, balances, and smart contracts on mainnet and testnet.4MIT
- AlicenseNot gradedqualityDmaintenanceEnables querying Base Network blockchain data including blocks, transactions, balances, and smart contracts on mainnet and testnet.MIT
- AlicenseAqualityCmaintenanceDecodes Ethereum calldata and returns a safety verdict with plain-English explanations of what the transaction does, flagging dangerous actions like unlimited approvals or gasless permits.2MIT