Приём SMS для ИИ-агентов
Агент может купить номер и прочитать код без участия человека.
Личность предъявлять некому
Аккаунт — это seed-фраза, которую агент генерирует и хранит сам. Нечего подтверждать, нечего отдавать, некем быть.
Карта не нужна
Пополнение криптовалютой. Агент с кошельком платит за себя сам — ни номера карты, ни платёжного адреса, ни человека, утверждающего оплату.
Читать страницы не нужно
Каталог, цены, покупка и доставка — всё это вызовы инструментов. Ничему здесь не нужен ни браузер, ни скриншот.
Как подключить MCP-сервер?
Один эндпоинт, JSON-RPC 2.0 поверх streamable HTTP. Ключ API запрашивать не нужно, ставить нечего: инструменты каталога работают ещё до появления аккаунта, а seed нужен только тем, которые тратят деньги.
https://otpdrop.com/mcp
Claude Code
claude mcp add --transport http otpdrop https://otpdrop.com/mcp
Cursor, Windsurf, VS Code и большинство остальных
Клиенты, которые умеют HTTP сами, принимают этот же блок. Cursor и Windsurf называют ключ
mcpServers; VS Code — servers.
{
"mcpServers": {
"otpdrop": {
"type": "http",
"url": "https://otpdrop.com/mcp"
}
}
}
| Клиент | Где лежит конфигурация |
|---|---|
| Claude Code | claude mcp add или .mcp.json в проекте |
| Claude Desktop | Настройки → Коннекторы → Добавить свой коннектор |
| Cursor | ~/.cursor/mcp.json или .cursor/mcp.json для проекта |
| VS Code | .vscode/mcp.json, в разделе servers |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
MCP-клиенты меняются быстро, и эти пути тоже. Если что-то не совпадает с тем, что видите вы, посмотрите документацию самого клиента — от нас здесь только адрес и транспорт.
А если клиент умеет только stdio?
Некоторые клиенты не открывают HTTP-сервер MCP напрямую. Пробросьте его локально:
{
"mcpServers": {
"otpdrop": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://otpdrop.com/mcp"]
}
}
}
А если MCP-клиента нет вовсе?
Сервер — обычный HTTP-эндпоинт, поэтому обратиться к нему может любой язык. Так выглядит список инструментов:
curl -s -X POST https://otpdrop.com/mcp \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Для инструментов, которым нужен аккаунт, добавьте Authorization: Bearer <seed>.
Если говорить на JSON-RPC не хочется, те же операции доступны обычными REST-эндпоинтами в
справочнике API.
Что агент может делать в OTPDrop?
| Инструмент | Что делает | Нужен seed |
|---|---|---|
list_services | Все сервисы с кодом и категорией | нет |
list_countries | Все страны с телефонным кодом | нет |
list_catalog | Полный каталог с матрицей цен | нет |
quote | Цена для одной пары «сервис — страна» | нет |
agent_help | Инструкции по работе с этим сервером прямо в контексте | нет |
create_account | Создать аккаунт и получить его seed | нет |
topup | Получить адрес и сумму пополнения для монеты | да |
topup_status | Проверить, зачислено ли пополнение | да |
buy_number | Купить номер со списанием с баланса | да |
get_order | Детали заказа и текущий статус | да |
get_sms | Код подтверждения, как только он придёт | да |
Для клиентов, которым так удобнее, каталог продублирован тремя ресурсами только для чтения:
catalog://services, catalog://countries и catalog://pairs.
Как выглядит полный проход?
Пять вызовов от начала до конца. Внешнего мира ждёт только один шаг — подтверждение пополнения в сети.
- create_account — возвращает seed. Сохраните его: это единственный путь обратно в аккаунт, и сбросить его нельзя.
- topup — назовите монету и сумму, получите адрес, точную сумму к отправке и срок действия. Отправьте средства с кошелька агента.
- topup_status — опрашивайте, пока пополнение не зачислится на баланс.
- buy_number — назовите сервис и страну. Деньги списываются, номер выдаётся сразу: ни адреса на каждую покупку, ни второго ожидания.
- get_sms — опрашивайте, пока не придёт код. Если он не придёт до истечения заказа, цена вернётся на баланс автоматически.
Пополняйте один раз, покупайте много. Одного пополнения хватает на столько номеров, на сколько хватит баланса, поэтому ожидание подтверждения выпадает только на первую покупку в сессии.
Обнаружение
Всё нужное для интеграции машиночитаемо и отдаётся без авторизации.
Что стоит сказать своему агенту?
- Seed невосстановим. Агент, который его сгенерировал и не сохранил, выбросил вместе с ним и баланс.
- Пополнение зачисляется после подтверждения в сети, и это не мгновенно — опрашивайте
topup_status, а не считайте успех состоявшимся. - Отправляйте только ту монету и в той сети, которые указаны в счёте. Перевод не в ту сеть вернуть нельзя.
- Пришедший код завершает заказ и оплачивается, даже если сервис-получатель его отклонил. См. условия возврата.
- Возвраты приходят на баланс OTPDrop, а не на кошелёк.
Пишете обычную интеграцию? Документация REST API описывает эндпоинты, авторизацию и коды ошибок.