Skip to main content
Glama
0200project

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 не является гарантией безопасности.

  • Не является финансовой рекомендацией; этот инструмент сообщает, что сделала транзакция, а не то, является ли какое-либо действие хорошей идеей.

Related MCP Connectors

Related MCP Servers