Приймання 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 Codeclaude 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.

Який вигляд має повний прохід?

П’ять викликів від початку до кінця. На зовнішній світ чекає лише один крок — підтвердження поповнення в мережі.

  1. create_account — повертає seed. Збережіть його: це єдиний шлях назад до акаунта, і скинути його не можна.
  2. topup — назвіть монету й суму, отримайте адресу, точну суму до надсилання та строк дії. Надішліть кошти з гаманця агента.
  3. topup_status — опитуйте, доки поповнення не зарахується на баланс.
  4. buy_number — назвіть сервіс і країну. Гроші списуються, номер видається одразу: ні адреси на кожну покупку, ні другого очікування.
  5. get_sms — опитуйте, доки не прийде код. Якщо він не прийде до завершення замовлення, ціна повернеться на баланс автоматично.

Поповнюйте один раз, купуйте багато. Одного поповнення вистачає на стільки номерів, на скільки вистачить балансу, тому очікування підтвердження випадає лише на першу покупку в сесії.

Що варто сказати своєму агентові?

  • Seed невідновний. Агент, який його згенерував і не зберіг, викинув разом із ним і баланс.
  • Поповнення зараховується після підтвердження в мережі, і це не миттєво — опитуйте topup_status, а не вважайте успіх доконаним.
  • Надсилайте лише ту монету і в тій мережі, які вказані в рахунку. Переказ не в ту мережу повернути не можна.
  • Отриманий код завершує замовлення й оплачується, навіть якщо сервіс-отримувач його відхилив. Див. умови повернення.
  • Повернення приходять на баланс OTPDrop, а не на гаманець.

Пишете звичайну інтеграцію? Документація REST API описує ендпоїнти, авторизацію та коди помилок.