Для ИИ-агентов
Номер телефона, который агент действительно может прочитать
Агент, который работает в вашем же аккаунте, спотыкается там же, где и человек: о шестизначный код из SMS. Cleat даёт ему настоящую мобильную линию США и MCP-сервер, чтобы её читать. Код попадает в контекст агента, а не на чей-то телефон.
Подключите клиент
Сервер работает по Model Context Protocol поверх HTTP. Его можно добавить в любой MCP-клиент, который умеет отправлять заголовок Authorization. API-ключ создаётся в настройках рабочего пространства и показывается только один раз.
{
"mcpServers": {
"cleat": {
"type": "http",
"url": "https://cleat.so/api/mcp",
"headers": { "Authorization": "Bearer clt_your_api_key" }
}
}
}Ключ определяет, что доступно агенту. Без ограничений это линии его рабочего пространства, и больше ничего. Ограничьте ключ при создании — до конкретных линий и до даты, когда он перестанет работать, — и агент доберётся только до нужной линии: всё остальное ответит 404, а после этой даты ключ ответит 401 с code key_expired. Отзовите ключ, и при следующем вызове агент потеряет доступ. Пароли и сессии это не затрагивает.
Четыре инструмента
| Инструмент | Что делает |
|---|---|
list_lines | Номера рабочего пространства, от новых к старым. С него и начинайте: остальные инструменты принимают lineId из его ответа. |
list_messages | SMS, которые пришли на линию, от новых к старым. limit — от 1 до 200, по умолчанию 20. |
latest_code | Последний код подтверждения на линии или found: false, если кодов ещё не было. Необязательные from и service сужают до одного отправителя. |
wait_for_code | Ждёт *следующий* код и возвращает его. До 55 секунд, по умолчанию 30. Принимает те же необязательные from и service и продолжает ждать, если код не подошёл. |
Ждать лучше, чем опрашивать
wait_for_code учитывает только SMS, пришедшие после начала вызова, поэтому код от прошлого входа не спутают с новым. Вызовите его прямо перед шагом, после которого придёт SMS, и только потом отправьте форму. Инструмент уже ждёт.
curl https://cleat.so/api/mcp \
-H "Authorization: Bearer $CLEAT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "wait_for_code",
"arguments": { "lineId": "8f14e45f-ceea-4b6b-9d3c-2a1f0e7c5b10", "timeoutSeconds": 45 }
}
}'{
"jsonrpc": "2.0",
"id": 1,
"result": {
"structuredContent": {
"found": true,
"id": "c9a7e0d2-5b1f-4e8a-9f3c-6d2b1a0e4f77",
"line": { "id": "8f14e45f-ceea-4b6b-9d3c-2a1f0e7c5b10", "phone": "13055550100", "label": "Agent line" },
"from": "55512",
"body": "Your verification code is 704 118",
"code": "704118",
"receivedAt": "2026-09-11T10:02:41.000Z",
"service": null,
"contact": null,
"label": null
},
"content": [{ "type": "text", "text": "…the same JSON again, for the model to read" }]
}
}Если за отведённое время ничего не пришло, он возвращает found: false с timedOut: true. Это не ошибка, а обычный результат: агент может просто повторить попытку.
Почему номер должен пережить регистрацию
Большинство номеров, которые продают для агентов, арендуют поминутно или понедельно, а потом возвращают в общий пул. Для одной регистрации это годится, для аккаунта, который агент ведёт дальше, — нет. Это признают даже те, кто продаёт одноразовые: “If your agent creates an account and keeps operating it, a one-time number is a problem, because platforms periodically re-verify, and if the number is gone the account locks out.” «Если ваш агент создаёт аккаунт и продолжает им пользоваться, одноразовый номер — проблема: платформы периодически запрашивают подтверждение заново, и, если номера больше нет, аккаунт блокируется». И далее: “A dedicated number stays assigned to that agent's account, holds its verification history, and receives the new code whenever a platform re-checks” «Выделенный номер остаётся закреплён за аккаунтом этого агента, хранит историю его подтверждений и получает новый код каждый раз, когда платформа проверяет заново» (GeeLark, 16 сентября 2026 года).
Линия Cleat по устройству относится к долговечным. Один номер на подписке, без арендного таймера, и никакой ручки, которая его подменит. Повторная проверка через три месяца придёт на ту же линию, а подписанный веб-хук разбудит процесс, который в этот момент не запущен. Чего Cleat не продаёт — это вторую половину той же рекламы: пулы свежих номеров для массовой регистрации аккаунтов. Одна линия на подписку, один проверенный владелец, для аккаунтов, на которые этот владелец имеет право.
Что это такое, а что нет
- Только приём. Cleat Line принимает SMS. Отправлять их она не может, и инструмента для отправки нет. Звонить или отвечать на звонки она тоже не может.
- Код, продиктованный по телефону, тоже доходит. Когда сервис диктует код автоматическим звонком, звонок расшифровывается. Расшифровка приходит как обычное сообщение: код уже извлечён, номер звонившего указан в
from. Поля, которое помечало бы сообщение как звонок, нет. - Один номер на подписку. Каждая линия стоит 24,99 $ в месяц. Cleat — не пул одноразовых номеров, и эндпоинта для их ротации нет.
- Каждой линией владеет человек, подтвердивший личность. Личность проверяется один раз на аккаунт, ещё до выдачи любого номера. Агент не может зарегистрироваться сам.
- 120 запросов в минуту на ключ. Пока
wait_for_codeждёт, запросы не расходуются. - Линию на удержании прочитать нельзя. Если подписка прервётся, номер удерживается, а его SMS остаются заблокированными, пока подписка не возобновится.
Если MCP вам не подходит
Те же данные доступны через обычный REST API с подписанными вебхуками. Он лучше подходит для долго работающего сервиса, чем для сессии агента: см. Cleat для разработчиков. Чтобы делиться кодами с людьми, а не с программами, используйте входящие, которые видит вся команда. Настоящая мобильная линия получает коды, которые интернет-номер не получит никогда: см. не-VoIP номера и Google Voice и коды подтверждения.
Вопросы
Какие клиенты подходят?
Любой MCP-клиент, который может обратиться к HTTP-серверу и задать заголовок Authorization. Сервер принимает JSON-RPC через POST и возвращает обычный JSON. Настраивать SSE не нужно.
Может ли агент отправить SMS?
Нет. Cleat Line работает только на приём, и ни один инструмент ничего не отправляет.
Что, если сервис диктует код по телефону, а не присылает SMS?
Код всё равно дойдёт. Звонок расшифровывается и сохраняется как SMS, поэтому latest_code и wait_for_code вернут его код, а list_messages покажет номер звонившего в from. Ответить на звонок или перезвонить агент не может.
Можно ли дать каждому агенту свой номер?
Да. Добавьте по линии на каждого агента в одном рабочем пространстве: у каждой своя подписка за 24,99 $ и свой ключ. Затем ограничьте каждый ключ этой одной линией: агент доберётся только до своей, а линия вне области действия ответит 404 — так же, как линия другого рабочего пространства. Ключ без ограничений действительно видит все линии своего пространства, поэтому те, что отдаёте, ограничивайте.
Что будет, если два агента ждут код на одной линии?
Оба получат следующий код. Линия — это общие входящие, а не очередь, поэтому агентам, которые не должны мешать друг другу, дайте отдельные линии.
Нужно ли агенту подтверждать личность?
Проверку проходит аккаунт, один раз, и проходит её человек. Агенты работают по ключу проверенного аккаунта и никогда не регистрируются сами.
Есть ли бесплатный тариф?
Нет. Одна линия стоит 24,99 $ в месяц, отменить можно в любой момент.
Источники
Сведения о других компаниях взяты с их собственных страниц и проверены: сентябрь 2026 г..
- GeeLark, how to give your AI agent a phone number https://www.geelark.com/blog/how-to-give-your-ai-agent-a-phone-number