Управляйте recv из AI-агентов (Claude Desktop, Cursor) через MCP-сервер recv.
MCP / AI-агенты
recv поставляет сервер Model Context Protocol (MCP), который предоставляет платежный шлюз AI-агентам в виде инструментов и ресурсов. Любой MCP-совместимый клиент — Claude Desktop, Cursor и другие — может использовать его для создания счетов, проверки статуса платежей, верификации вебхуков и получения списка поддерживаемых сетей на естественном языке.
Сервер называется recv-agent-mcp и работает локально через stdio. Под капотом он вызывает тот же API recv, что описан в остальной документации. Он также умеет создать новый workspace для агента, выписать checkout на подписку recv и после оплаты выпустить API credentials.
Конфигурация
Сервер читает эти переменные окружения:
| Переменная | Обязательна | По умолчанию | Назначение |
|---|---|---|---|
RECV_ACCESS_TOKEN | Для self-service инструментов | — | Bearer token консоли recv. Если у агента его еще нет, вызовите bootstrap_agent_workspace и сохраните возвращенный token/access_token. |
RECV_API_KEY | Да (для инструментов счетов) | — | Ваш API-ключ recv. На этапе разработки рекомендуется ключ test_. |
RECV_WEBHOOK_SECRET | Для verify_webhook | — | Секрет подписи вебхуков для проверки подписей. |
RECV_APP_URL | Нет | выводится из RECV_API_URL | Базовый origin для console endpoints, например https://recv.money. |
RECV_API_URL | Нет | https://recv.money/v1 | Базовый URL REST API. |
RECV_DOCS_URL | Нет | https://recv.money/en/docs | Базовый URL для загрузки raw-документации для ресурсов. |
Claude Desktop
Добавьте сервер в claude_desktop_config.json (пакет опубликован в npm как recv-mcp; чтобы запускать из исходников, соберите его через cd mcp-server && npm install и укажите node /path/to/recv/mcp-server/dist/index.js):
{
"mcpServers": {
"recv": {
"command": "npx",
"args": ["-y", "recv-mcp"],
"env": {
"RECV_ACCESS_TOKEN": "your_console_token_here",
"RECV_API_KEY": "test_your_key_here",
"RECV_WEBHOOK_SECRET": "whsec_your_secret_here"
}
}
}
}
Cursor
Добавьте тот же блок mcpServers в настройки MCP в Cursor (Settings → MCP) и перезагрузите. Инструменты recv появятся у агента автоматически.
Локальная разработка
cd mcp-server
npm install # also compiles dist/ via the prepare script
npm run dev # or: npm start
Инструменты
Агент может вызывать эти инструменты.
bootstrap_agent_workspace
Создать trial workspace для полностью автономного агента. Инструмент возвращает обычный результат авторизации recv; сохраните token или access_token как RECV_ACCESS_TOKEN перед вызовом self-service инструментов.
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
workspace_name | string | Нет | Короткая метка для сгенерированного workspace slug. |
contact_email | string | Нет | Контактный email для чеков и поддержки. |
get_account
Вернуть текущий workspace, активный тариф и доступные платные тарифы. Требует RECV_ACCESS_TOKEN.
create_subscription_checkout
Создать billing checkout recv для текущего workspace. Требует RECV_ACCESS_TOKEN.
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
plan_code | string | Да | Одно из: merchant, developer, business. Для агента с API-ключами и вебхуками используйте developer или business. |
payable_network | string | Да | Сеть оплаты подписки recv. Одно из: TON, TRON, SOLANA, BASE, ARBITRUM, BSC. Используйте payable_asset или payment_options, чтобы выбрать активы вроде TON/GRAM или TON/USDT. |
get_checkout_invoice
Прочитать публичный checkout invoice по public_id. Используйте для polling подписочного checkout до status: paid.
create_api_key
Создать developer API key после активации тарифа с API. Требует RECV_ACCESS_TOKEN.
create_webhook_endpoint
Зарегистрировать webhook endpoint после активации тарифа с вебхуками. Требует RECV_ACCESS_TOKEN.
create_invoice
Создать новый платежный счет.
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
title | string | Да | Человекочитаемое название, отображаемое плательщику (например, "Order #1290"). |
base_amount_usd | string | Да | Сумма в долларах США (USD) в виде десятичной строки (например, "10.50"). |
payable_network | string | Да | Сеть оплаты покупателя. Одно из: TON, TRON, SOLANA, BASE, ARBITRUM, BSC. Используйте payable_asset или payment_options, чтобы выбрать активы вроде TON/GRAM или TON/USDT. |
expires_in_minutes | number | Нет | Опциональное время жизни счета в минутах (по умолчанию 30). |
Инструмент отправляет аргументы напрямую методом POST на /v1/invoices. Окружение созданного счета зависит от переданного API-ключа (test_ → test). См. Инвойсы.
get_invoice
Получить статус и детали счета.
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
id | string | Да | ID счета. |
Вызывает GET /v1/invoices/{id}.
list_invoices
Список недавних счетов с пагинацией.
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
page | number | Нет | Номер страницы (по умолчанию 1). |
page_size | number | Нет | Размер страницы (по умолчанию 20, макс. 100). |
Вызывает GET /v1/invoices?page=&page_size=.
simulate_payment
Пометить тестовый счет оплаченным без перевода on-chain.
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
id | string | Да | ID счета. |
Вызывает POST /v1/test/invoices/{id}/simulate-payment. Требует ключ test_.
verify_webhook
Проверить подпись вебхука локально, используя RECV_WEBHOOK_SECRET. Инструмент в точности воспроизводит продакшен-схему подписи: он вычисляет v1= + HMAC-SHA256 от <timestamp>.<raw_body> и сравнивает результат с переданной подписью за постоянное время.
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
raw_body | string | Да | Сырое, неразобранное тело запроса ровно в том виде, в каком оно получено — не сериализуйте его повторно. |
timestamp | string | Да | Значение заголовка X-recv-Timestamp. |
signature | string | Да | Значение заголовка X-recv-Signature (например, v1=abc...). |
Передавайте байты тела дословно. Повторное кодирование JSON (которое может изменить порядок ключей или пробелы) меняет хеш, и проверка не пройдет. Если RECV_WEBHOOK_SECRET не задан, инструмент возвращает ошибку. См. Webhooks для полной схемы подписи.
list_supported_networks
Список поддерживаемых вариантов оплаты. Не принимает параметров и возвращает статичную сводку пар сеть/актив (TON/GRAM, TON/USDT, TRON/USDT, SOLANA/SOL, SOLANA/USDT, SOLANA/USDC, BASE/USDT, BASE/USDC, ARBITRUM/USDT, ARBITRUM/USDC, BSC/BNB, BSC/USDT). См. Поддерживаемые сети для авторитетного списка.
Ресурсы
Сервер также предоставляет документацию как MCP-ресурсы, которые агент может читать для контекста. Каждый загружается из ${RECV_DOCS_URL}/raw/<slug>:
| URI | Описание |
|---|---|
recv://docs/auth | Руководство по аутентификации. |
recv://docs/invoices | Руководство по API счетов. |
recv://docs/webhooks | Руководство по интеграции вебхуков. |
recv://docs/errors | Обработка ошибок и лимиты. |
recv://docs/mcp | MCP и onboarding агентов. |
Сценарий: AI-агент принимает крипто-платеж
Для нового автономного агента:
- Вызовите
bootstrap_agent_workspaceи сохраните возвращенный access token какRECV_ACCESS_TOKEN. - Вызовите
create_subscription_checkoutсplan_code: "developer". - Откройте или верните checkout URL, затем опрашивайте
get_checkout_invoice, пока subscription invoice не станетpaid. - Вызовите
create_api_keyи сохраните возвращенныйsecretкакRECV_API_KEY. - Опционально вызовите
create_webhook_endpointи сохраните webhook secret какRECV_WEBHOOK_SECRET.
С сервером, настроенным на ключ test_ или live_, весь customer payment flow можно вести в диалоге:
- Вы: «Создай счет на $25 USDT в TRON для заказа #5512.»
Агент вызывает
create_invoiceи зачитываетpublic_id,destination_addressиcheckout_url. - Вы: «Он уже оплачен?»
Агент вызывает
get_invoiceс полученнымidи сообщаетstatus: awaiting_payment. - Вы: «Симулируй оплату, чтобы я протестировал выполнение заказа.»
Агент вызывает
simulate_payment; счет переходит вpaid, и отправляется вебхук. - Вы: «Проверь этот вебхук — вот сырое тело, timestamp и заголовок с подписью.»
Агент вызывает
verify_webhookсraw_body,timestampиsignatureи сообщает, действительна ли подпись. - Вы: «В каких сетях я могу принимать оплату?»
Агент вызывает
list_supported_networks.
Поскольку каждый инструмент в итоге обращается к тому же API /v1, действия агента подчиняются тем же scopes, лимитам и правилам идемпотентности, что и любая другая интеграция.
Готовы принимать криптоплатежи?