Инструменты MCP-коннектора
Коннектор https://mcp.alphasms.ua/mcp отдаёт ассистенту 11 инструментов. Инструменты чтения выполняются
сразу; инструменты отправки требуют confirm: true — без него коннектор отвечает отказом
и в API не обращается.
Каждый вызов — JSON-RPC методом POST, ключ в заголовке Authorization.
Коды, которые возвращает message_status, совпадают с обычным API — см.
Статусы сообщений.
Чтение
balance
Остаток на счету и валюта.
Параметры
Параметров нет.
Пример запроса
- JSON-RPC
- cURL
- Python
- Node.js
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "balance",
"arguments": {}
}
}
curl -X POST 'https://mcp.alphasms.ua/mcp' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ВАШ_API_КЛЮЧ' \
--data-raw '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "balance",
"arguments": {}
}
}'
import requests
response = requests.post(
"https://mcp.alphasms.ua/mcp",
headers={"Authorization": "Bearer ВАШ_API_КЛЮЧ"},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "balance",
"arguments": {}
}
},
timeout=30,
)
print(response.json())
const response = await fetch("https://mcp.alphasms.ua/mcp", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer ВАШ_API_КЛЮЧ",
},
body: JSON.stringify({
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "balance",
"arguments": {}
}
}),
});
console.log(await response.json());
senders_list
Зарегистрированные имена отправителя со статусом каждого. Отправлять можно только с активного имени.
Параметры
Параметров нет.
Пример запроса
- JSON-RPC
- cURL
- Python
- Node.js
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "senders_list",
"arguments": {}
}
}
curl -X POST 'https://mcp.alphasms.ua/mcp' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ВАШ_API_КЛЮЧ' \
--data-raw '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "senders_list",
"arguments": {}
}
}'
import requests
response = requests.post(
"https://mcp.alphasms.ua/mcp",
headers={"Authorization": "Bearer ВАШ_API_КЛЮЧ"},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "senders_list",
"arguments": {}
}
},
timeout=30,
)
print(response.json())
const response = await fetch("https://mcp.alphasms.ua/mcp", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer ВАШ_API_КЛЮЧ",
},
body: JSON.stringify({
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "senders_list",
"arguments": {}
}
}),
});
console.log(await response.json());
message_status
Статус отправленного сообщения. Возвращает числовой код и расшифровку.
Пример запроса
- JSON-RPC
- cURL
- Python
- Node.js
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "message_status",
"arguments": {
"id": 1730112045
}
}
}
curl -X POST 'https://mcp.alphasms.ua/mcp' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ВАШ_API_КЛЮЧ' \
--data-raw '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "message_status",
"arguments": {
"id": 1730112045
}
}
}'
import requests
response = requests.post(
"https://mcp.alphasms.ua/mcp",
headers={"Authorization": "Bearer ВАШ_API_КЛЮЧ"},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "message_status",
"arguments": {
"id": 1730112045
}
}
},
timeout=30,
)
print(response.json())
const response = await fetch("https://mcp.alphasms.ua/mcp", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer ВАШ_API_КЛЮЧ",
},
body: JSON.stringify({
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "message_status",
"arguments": {
"id": 1730112045
}
}
}),
});
console.log(await response.json());
hlr_lookup
HLR-запрос: существует ли номер, в какой он сети, не перенесён ли к другому оператору. Услуга платная — один запрос на номер.
Пример запроса
- JSON-RPC
- cURL
- Python
- Node.js
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hlr_lookup",
"arguments": {
"phone": 380671234567
}
}
}
curl -X POST 'https://mcp.alphasms.ua/mcp' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ВАШ_API_КЛЮЧ' \
--data-raw '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hlr_lookup",
"arguments": {
"phone": 380671234567
}
}
}'
import requests
response = requests.post(
"https://mcp.alphasms.ua/mcp",
headers={"Authorization": "Bearer ВАШ_API_КЛЮЧ"},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hlr_lookup",
"arguments": {
"phone": 380671234567
}
}
},
timeout=30,
)
print(response.json())
const response = await fetch("https://mcp.alphasms.ua/mcp", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer ВАШ_API_КЛЮЧ",
},
body: JSON.stringify({
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hlr_lookup",
"arguments": {
"phone": 380671234567
}
}
}),
});
console.log(await response.json());
Отправка
Общее для всех отправок
confirm: true обязателен. Один вызов — один номер, массовых рассылок нет. phone — только цифры в международном формате, имя отправителя должно быть зарегистрировано и активно. В ответе приходит идентификатор, а не факт доставки: статус спрашивайте через message_status.
send_sms
Одно SMS на один номер. 160 символов латиницей или 70 кириллицей в первом сообщении, дальше делится на части, каждая тарифицируется отдельно.
Параметры
Пример запроса
- JSON-RPC
- cURL
- Python
- Node.js
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_sms",
"arguments": {
"phone": "380671234567",
"signature": "ALPHASMS",
"message": "Ваш код 1234",
"confirm": true
}
}
}
curl -X POST 'https://mcp.alphasms.ua/mcp' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ВАШ_API_КЛЮЧ' \
--data-raw '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_sms",
"arguments": {
"phone": "380671234567",
"signature": "ALPHASMS",
"message": "Ваш код 1234",
"confirm": true
}
}
}'
import requests
response = requests.post(
"https://mcp.alphasms.ua/mcp",
headers={"Authorization": "Bearer ВАШ_API_КЛЮЧ"},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_sms",
"arguments": {
"phone": "380671234567",
"signature": "ALPHASMS",
"message": "Ваш код 1234",
"confirm": true
}
}
},
timeout=30,
)
print(response.json())
const response = await fetch("https://mcp.alphasms.ua/mcp", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer ВАШ_API_КЛЮЧ",
},
body: JSON.stringify({
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_sms",
"arguments": {
"phone": "380671234567",
"signature": "ALPHASMS",
"message": "Ваш код 1234",
"confirm": true
}
}
}),
});
console.log(await response.json());
send_viber
Одно сообщение в Viber. Тип коннектор собирает сам по переданным полям: текст, текст с картинкой или текст с картинкой и кнопкой.
Параметры
Пример запроса
- JSON-RPC
- cURL
- Python
- Node.js
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_viber",
"arguments": {
"phone": "380671234567",
"signature": "AlphaSMS",
"message": "Ваш заказ отправлен",
"image": "https://example.com/promo.jpg",
"link": "https://example.com/order/42",
"button": "Отследить",
"confirm": true
}
}
}
curl -X POST 'https://mcp.alphasms.ua/mcp' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ВАШ_API_КЛЮЧ' \
--data-raw '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_viber",
"arguments": {
"phone": "380671234567",
"signature": "AlphaSMS",
"message": "Ваш заказ отправлен",
"image": "https://example.com/promo.jpg",
"link": "https://example.com/order/42",
"button": "Отследить",
"confirm": true
}
}
}'
import requests
response = requests.post(
"https://mcp.alphasms.ua/mcp",
headers={"Authorization": "Bearer ВАШ_API_КЛЮЧ"},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_viber",
"arguments": {
"phone": "380671234567",
"signature": "AlphaSMS",
"message": "Ваш заказ отправлен",
"image": "https://example.com/promo.jpg",
"link": "https://example.com/order/42",
"button": "Отследить",
"confirm": true
}
}
},
timeout=30,
)
print(response.json())
const response = await fetch("https://mcp.alphasms.ua/mcp", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer ВАШ_API_КЛЮЧ",
},
body: JSON.stringify({
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_viber",
"arguments": {
"phone": "380671234567",
"signature": "AlphaSMS",
"message": "Ваш заказ отправлен",
"image": "https://example.com/promo.jpg",
"link": "https://example.com/order/42",
"button": "Отследить",
"confirm": true
}
}
}),
});
console.log(await response.json());
send_viber_with_sms_fallback
Каскад: сначала Viber, если он не доставлен — SMS. Списывается за то, что реально ушло, поэтому недоставленный Viber с досылкой стоит дороже одиночного SMS. Тексты задаются отдельно — в SMS обычно нужен более короткий.
Параметры
Пример запроса
- JSON-RPC
- cURL
- Python
- Node.js
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_viber_with_sms_fallback",
"arguments": {
"phone": "380671234567",
"viber_signature": "AlphaSMS",
"viber_message": "Ваш заказ отправлен, отследить: https://example.com/order/42",
"sms_signature": "ALPHASMS",
"sms_message": "Заказ отправлен",
"confirm": true
}
}
}
curl -X POST 'https://mcp.alphasms.ua/mcp' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ВАШ_API_КЛЮЧ' \
--data-raw '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_viber_with_sms_fallback",
"arguments": {
"phone": "380671234567",
"viber_signature": "AlphaSMS",
"viber_message": "Ваш заказ отправлен, отследить: https://example.com/order/42",
"sms_signature": "ALPHASMS",
"sms_message": "Заказ отправлен",
"confirm": true
}
}
}'
import requests
response = requests.post(
"https://mcp.alphasms.ua/mcp",
headers={"Authorization": "Bearer ВАШ_API_КЛЮЧ"},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_viber_with_sms_fallback",
"arguments": {
"phone": "380671234567",
"viber_signature": "AlphaSMS",
"viber_message": "Ваш заказ отправлен, отследить: https://example.com/order/42",
"sms_signature": "ALPHASMS",
"sms_message": "Заказ отправлен",
"confirm": true
}
}
},
timeout=30,
)
print(response.json())
const response = await fetch("https://mcp.alphasms.ua/mcp", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer ВАШ_API_КЛЮЧ",
},
body: JSON.stringify({
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_viber_with_sms_fallback",
"arguments": {
"phone": "380671234567",
"viber_signature": "AlphaSMS",
"viber_message": "Ваш заказ отправлен, отследить: https://example.com/order/42",
"sms_signature": "ALPHASMS",
"sms_message": "Заказ отправлен",
"confirm": true
}
}
}),
});
console.log(await response.json());
send_rcs
Одно сообщение RCS. Доходит только на устройства с поддержкой RCS — для остальных нужен отдельный запасной канал.
Параметры
Пример запроса
- JSON-RPC
- cURL
- Python
- Node.js
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_rcs",
"arguments": {
"phone": "380671234567",
"signature": "AlphaSMS",
"message": "Ваш код 1234",
"confirm": true
}
}
}
curl -X POST 'https://mcp.alphasms.ua/mcp' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ВАШ_API_КЛЮЧ' \
--data-raw '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_rcs",
"arguments": {
"phone": "380671234567",
"signature": "AlphaSMS",
"message": "Ваш код 1234",
"confirm": true
}
}
}'
import requests
response = requests.post(
"https://mcp.alphasms.ua/mcp",
headers={"Authorization": "Bearer ВАШ_API_КЛЮЧ"},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_rcs",
"arguments": {
"phone": "380671234567",
"signature": "AlphaSMS",
"message": "Ваш код 1234",
"confirm": true
}
}
},
timeout=30,
)
print(response.json())
const response = await fetch("https://mcp.alphasms.ua/mcp", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer ВАШ_API_КЛЮЧ",
},
body: JSON.stringify({
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_rcs",
"arguments": {
"phone": "380671234567",
"signature": "AlphaSMS",
"message": "Ваш код 1234",
"confirm": true
}
}
}),
});
console.log(await response.json());
send_voice
Синтезированный голосовой вызов с зачитыванием текста.
Параметры
Пример запроса
- JSON-RPC
- cURL
- Python
- Node.js
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_voice",
"arguments": {
"phone": "380671234567",
"message": "Ваш код подтверждения: 1 2 3 4",
"language": "uk-UA",
"confirm": true
}
}
}
curl -X POST 'https://mcp.alphasms.ua/mcp' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ВАШ_API_КЛЮЧ' \
--data-raw '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_voice",
"arguments": {
"phone": "380671234567",
"message": "Ваш код подтверждения: 1 2 3 4",
"language": "uk-UA",
"confirm": true
}
}
}'
import requests
response = requests.post(
"https://mcp.alphasms.ua/mcp",
headers={"Authorization": "Bearer ВАШ_API_КЛЮЧ"},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_voice",
"arguments": {
"phone": "380671234567",
"message": "Ваш код подтверждения: 1 2 3 4",
"language": "uk-UA",
"confirm": true
}
}
},
timeout=30,
)
print(response.json())
const response = await fetch("https://mcp.alphasms.ua/mcp", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer ВАШ_API_КЛЮЧ",
},
body: JSON.stringify({
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_voice",
"arguments": {
"phone": "380671234567",
"message": "Ваш код подтверждения: 1 2 3 4",
"language": "uk-UA",
"confirm": true
}
}
}),
});
console.log(await response.json());
send_whatsapp
Собственного типа сообщения у WhatsApp нет. Коннектор отправляет запрос типа pipeline с этапом whatsapp — см. Отправка OTP кода (WhatsApp). Отправка возможна только по маршруту, заведённому под этот набор этапов: без него платформа отвечает No route и ничего не списывает. Дойдёт, только если получатель ранее написал первым или дал согласие, а имя отправителя зарегистрировано в WhatsApp Business.
Параметры
Пример запроса
- JSON-RPC
- cURL
- Python
- Node.js
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_whatsapp",
"arguments": {
"phone": "380671234567",
"signature": "AlphaSMS",
"message": "Ваш заказ готов к выдаче",
"confirm": true
}
}
}
curl -X POST 'https://mcp.alphasms.ua/mcp' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ВАШ_API_КЛЮЧ' \
--data-raw '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_whatsapp",
"arguments": {
"phone": "380671234567",
"signature": "AlphaSMS",
"message": "Ваш заказ готов к выдаче",
"confirm": true
}
}
}'
import requests
response = requests.post(
"https://mcp.alphasms.ua/mcp",
headers={"Authorization": "Bearer ВАШ_API_КЛЮЧ"},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_whatsapp",
"arguments": {
"phone": "380671234567",
"signature": "AlphaSMS",
"message": "Ваш заказ готов к выдаче",
"confirm": true
}
}
},
timeout=30,
)
print(response.json())
const response = await fetch("https://mcp.alphasms.ua/mcp", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer ВАШ_API_КЛЮЧ",
},
body: JSON.stringify({
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_whatsapp",
"arguments": {
"phone": "380671234567",
"signature": "AlphaSMS",
"message": "Ваш заказ готов к выдаче",
"confirm": true
}
}
}),
});
console.log(await response.json());
sms_signature и sms_message задаются парой: с одним из них коннектор отвечает отказом ещё до обращения в API. Вместе они превращают запрос в пайплайн whatsapp → sms, а под него нужен отдельный маршрут.
message_status не найдёт сообщение pipeline — ваш id платформа для него не сохраняет. Коннектор возвращает id и состав этапов, чтобы было видно, что именно ушло в очередь.
send_verification_code
Отправляет одноразовый код и сам его генерирует. У операции отдельный адрес и свой набор полей: возвращается verify_id, по которому код потом сверяется.
Параметры
Пример запроса
- JSON-RPC
- cURL
- Python
- Node.js
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_verification_code",
"arguments": {
"phone": "380671234567",
"signature": "AlphaSMS",
"channel": "sms",
"confirm": true
}
}
}
curl -X POST 'https://mcp.alphasms.ua/mcp' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ВАШ_API_КЛЮЧ' \
--data-raw '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_verification_code",
"arguments": {
"phone": "380671234567",
"signature": "AlphaSMS",
"channel": "sms",
"confirm": true
}
}
}'
import requests
response = requests.post(
"https://mcp.alphasms.ua/mcp",
headers={"Authorization": "Bearer ВАШ_API_КЛЮЧ"},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_verification_code",
"arguments": {
"phone": "380671234567",
"signature": "AlphaSMS",
"channel": "sms",
"confirm": true
}
}
},
timeout=30,
)
print(response.json())
const response = await fetch("https://mcp.alphasms.ua/mcp", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer ВАШ_API_КЛЮЧ",
},
body: JSON.stringify({
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_verification_code",
"arguments": {
"phone": "380671234567",
"signature": "AlphaSMS",
"channel": "sms",
"confirm": true
}
}
}),
});
console.log(await response.json());
Ошибки
Коннектор передаёт ошибки API как есть, без переформулирования. Частые случаи: