Agent Wormhole — MCP-сервер для Claude Code: проверка x402-платежей
Проверяет, совпадает ли платёж, который агент собирается подписать, с тем, что было в счёте. Работает офлайн, без обращения к сети.
claude mcp add --env WORMHOLE_API_KEY=<WORMHOLE_API_KEY> --env WORMHOLE_VERIFY_URL=<WORMHOLE_VERIFY_URL> --env WORMHOLE_ADDRESS_LEDGER=<WORMHOLE_ADDRESS_LEDGER> --transport stdio x402-guard -- npx -y wormhole-x402Что делает Agent Wormhole
Агент получил счёт и уже готов подписать транзакцию. Agent Wormhole сравнивает получателя, актив и сумму с тем, что было в исходном счёте, и выдаёт один вердикт: allow, refuse или abstain. Смысл в том, что платёж на адрес атакующего симулируется идеально — балансы сходятся, ошибок нет, транзакция валидна. Просто это не та транзакция, которую запрашивали.
Внутри — функция verify(), которая сама определяет сеть по строке network и сначала сканирует текст счёта: если в описании от мерчанта спрятана инструкция, её отклонят раньше, чем её числа примут за достоверные. Есть отдельные точки входа: guardedPay() и guardedFetch() ставятся перед sign(), verifyReceipt() и replayMatches() проверяют квитанцию офлайн, createVerifyHandler() позволяет поднять проверяющий сервер у себя. Время передаётся аргументом, а не берётся с часов, поэтому вердикт воспроизводится один в один при повторе.
Вердикт, полученный по сети, — это утверждение, а не ответ. Поэтому guardedPay и guardedFetch требуют опцию integrity без значения по умолчанию: подставлять что-то своё здесь означало бы тихо ослабить проверку. При mode: "required" решающий вердикт проходит только если квитанция есть, её подпись сходится с вашим ключом и решение в квитанции совпадает с решением в конверте. Всё остальное становится abstain.
Какие задачи решает
- поймать подмену адреса получателя до подписи
- сверить сумму платежа с той, что была в счёте
- заметить скрытый Approve, дающий доступ к тратам по счёту
- отличить «не смог проверить» от «всё в порядке»
- проверить квитанцию о платеже без обращения к сети
Примеры запросов агенту
- Проверь этот x402-платёж через wormhole-x402 перед подписью
- Сравни получателя и сумму в транзакции с тем, что было в счёте
- Проверь квитанцию по этому запросу офлайн
Как установить Agent Wormhole
Командой платформы
claude mcp add --env WORMHOLE_API_KEY=<WORMHOLE_API_KEY> --env WORMHOLE_VERIFY_URL=<WORMHOLE_VERIFY_URL> --env WORMHOLE_ADDRESS_LEDGER=<WORMHOLE_ADDRESS_LEDGER> --transport stdio x402-guard -- npx -y wormhole-x402Вместо <…> подставьте свои значения
Командой платформы
codex mcp add x402-guard --env WORMHOLE_API_KEY=<WORMHOLE_API_KEY> --env WORMHOLE_VERIFY_URL=<WORMHOLE_VERIFY_URL> --env WORMHOLE_ADDRESS_LEDGER=<WORMHOLE_ADDRESS_LEDGER> -- npx -y wormhole-x402Вместо <…> подставьте свои значения
Файл настроек
{
"mcpServers": {
"x402-guard": {
"command": "npx",
"args": [
"-y",
"wormhole-x402"
],
"env": {
"WORMHOLE_API_KEY": "<WORMHOLE_API_KEY>",
"WORMHOLE_VERIFY_URL": "<WORMHOLE_VERIFY_URL>",
"WORMHOLE_ADDRESS_LEDGER": "<WORMHOLE_ADDRESS_LEDGER>"
}
}
}
}Вместо <…> подставьте свои значения
Файл настроек
{
"servers": {
"x402-guard": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"wormhole-x402"
],
"env": {
"WORMHOLE_API_KEY": "<WORMHOLE_API_KEY>",
"WORMHOLE_VERIFY_URL": "<WORMHOLE_VERIFY_URL>",
"WORMHOLE_ADDRESS_LEDGER": "<WORMHOLE_ADDRESS_LEDGER>"
}
}
}
}Вместо <…> подставьте свои значения
Командой платформы
gemini mcp add -e WORMHOLE_API_KEY=<WORMHOLE_API_KEY> -e WORMHOLE_VERIFY_URL=<WORMHOLE_VERIFY_URL> -e WORMHOLE_ADDRESS_LEDGER=<WORMHOLE_ADDRESS_LEDGER> x402-guard npx -y wormhole-x402Вместо <…> подставьте свои значения
По шагам, с командами для каждой платформы: Как подключить MCP-сервер: Claude Code, Codex, Cursor, VS Code, Gemini CLI и другие
Вопросы о Agent Wormhole
Как установить Agent Wormhole в Claude Code?
Добавьте сервер командой claude mcp add wormhole-x402 -e WORMHOLE_API_KEY=<WORMHOLE_API_KEY> -- npx -y wormhole-x402. Второй вариант — с проверяющим URL и реестром адресов: `claude mcp add --env WORMHOLE_API_KEY=<WORMHOLE_API_KEY> --env WORMHOLE_VERIFY_URL=<WORMHOLE_VERIFY_URL> --env WORMHOLE_ADDRESS_LEDGER=<WORMHOLE_ADDRESS_LEDGER> --transport stdio x402-guard -- npx -y wormhole-x402`.
Что делает Agent Wormhole?
Сверяет платёж, который агент собирается подписать, с полученным счётом: получателя, актив и сумму. Возвращает allow, refuse или abstain, причём abstain означает «проверить не удалось», а не «всё чисто».
Нужен ли ключ для работы сервера?
Да, в командах установки передаётся WORMHOLE_API_KEY. Для проверки hosted-вердиктов задайте WORMHOLE_VERIFY_PUBKEY — без него allow понижается до abstain.