MCP connector tools
The connector at https://mcp.interconnect.solutions/mcp exposes 11 tools. Read tools run straight away; sending tools
require confirm: true — without it the connector refuses and never touches the API.
Every call is JSON-RPC over POST with your key in the Authorization header.
Codes returned by message_status are the same as in the regular API — see
Message statuses.
Reading
balance
Account balance and currency.
Parameters
No parameters.
Request example
- JSON-RPC
- cURL
- Python
- Node.js
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "balance",
"arguments": {}
}
}
curl -X POST 'https://mcp.interconnect.solutions/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.interconnect.solutions/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.interconnect.solutions/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
Registered sender names with the status of each. You can only send from an active name.
Parameters
No parameters.
Request example
- JSON-RPC
- cURL
- Python
- Node.js
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "senders_list",
"arguments": {}
}
}
curl -X POST 'https://mcp.interconnect.solutions/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.interconnect.solutions/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.interconnect.solutions/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
Status of a sent message. Returns a numeric code and its decoding.
Request example
- 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.interconnect.solutions/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.interconnect.solutions/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.interconnect.solutions/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 request: whether the number exists, which network it is on, whether it has been ported. The service is paid — one request per number.
Request example
- JSON-RPC
- cURL
- Python
- Node.js
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hlr_lookup",
"arguments": {
"phone": 447700900789
}
}
}
curl -X POST 'https://mcp.interconnect.solutions/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": 447700900789
}
}
}'
import requests
response = requests.post(
"https://mcp.interconnect.solutions/mcp",
headers={"Authorization": "Bearer ВАШ_API_КЛЮЧ"},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hlr_lookup",
"arguments": {
"phone": 447700900789
}
}
},
timeout=30,
)
print(response.json())
const response = await fetch("https://mcp.interconnect.solutions/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": 447700900789
}
}
}),
});
console.log(await response.json());
Sending
Common rules for sending
confirm: true is mandatory. One call is one number — there are no bulk campaigns. phone is digits only, in international format, and the sender name must be registered and active. The response carries an identifier, not proof of delivery: ask message_status for the outcome.
send_sms
One SMS to one number. 160 Latin or 70 Cyrillic characters in the first message; beyond that it splits into parts, each charged separately.
Parameters
Request example
- JSON-RPC
- cURL
- Python
- Node.js
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_sms",
"arguments": {
"phone": "447700900789",
"signature": "DemoSender",
"message": "Your code is 1234",
"confirm": true
}
}
}
curl -X POST 'https://mcp.interconnect.solutions/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": "447700900789",
"signature": "DemoSender",
"message": "Your code is 1234",
"confirm": true
}
}
}'
import requests
response = requests.post(
"https://mcp.interconnect.solutions/mcp",
headers={"Authorization": "Bearer ВАШ_API_КЛЮЧ"},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_sms",
"arguments": {
"phone": "447700900789",
"signature": "DemoSender",
"message": "Your code is 1234",
"confirm": true
}
}
},
timeout=30,
)
print(response.json())
const response = await fetch("https://mcp.interconnect.solutions/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": "447700900789",
"signature": "DemoSender",
"message": "Your code is 1234",
"confirm": true
}
}
}),
});
console.log(await response.json());
send_viber
One Viber message. The connector picks the message type itself from the fields you supply: text, text with an image, or text with an image and a button.
Parameters
Request example
- JSON-RPC
- cURL
- Python
- Node.js
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_viber",
"arguments": {
"phone": "447700900789",
"signature": "DemoSender",
"message": "Your order has been dispatched",
"image": "https://example.com/promo.jpg",
"link": "https://example.com/order/42",
"button": "Track it",
"confirm": true
}
}
}
curl -X POST 'https://mcp.interconnect.solutions/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": "447700900789",
"signature": "DemoSender",
"message": "Your order has been dispatched",
"image": "https://example.com/promo.jpg",
"link": "https://example.com/order/42",
"button": "Track it",
"confirm": true
}
}
}'
import requests
response = requests.post(
"https://mcp.interconnect.solutions/mcp",
headers={"Authorization": "Bearer ВАШ_API_КЛЮЧ"},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_viber",
"arguments": {
"phone": "447700900789",
"signature": "DemoSender",
"message": "Your order has been dispatched",
"image": "https://example.com/promo.jpg",
"link": "https://example.com/order/42",
"button": "Track it",
"confirm": true
}
}
},
timeout=30,
)
print(response.json())
const response = await fetch("https://mcp.interconnect.solutions/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": "447700900789",
"signature": "DemoSender",
"message": "Your order has been dispatched",
"image": "https://example.com/promo.jpg",
"link": "https://example.com/order/42",
"button": "Track it",
"confirm": true
}
}
}),
});
console.log(await response.json());
send_viber_with_sms_fallback
A cascade: Viber first, then SMS if Viber is not delivered. You are charged for what actually went out, so an undelivered Viber with a fallback costs more than a plain SMS. The texts are set separately — the SMS one usually needs to be shorter.
Parameters
Request example
- JSON-RPC
- cURL
- Python
- Node.js
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_viber_with_sms_fallback",
"arguments": {
"phone": "447700900789",
"viber_signature": "DemoSender",
"viber_message": "Your order has been dispatched, track it: https://example.com/order/42",
"sms_signature": "DemoSender",
"sms_message": "Order dispatched",
"confirm": true
}
}
}
curl -X POST 'https://mcp.interconnect.solutions/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": "447700900789",
"viber_signature": "DemoSender",
"viber_message": "Your order has been dispatched, track it: https://example.com/order/42",
"sms_signature": "DemoSender",
"sms_message": "Order dispatched",
"confirm": true
}
}
}'
import requests
response = requests.post(
"https://mcp.interconnect.solutions/mcp",
headers={"Authorization": "Bearer ВАШ_API_КЛЮЧ"},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_viber_with_sms_fallback",
"arguments": {
"phone": "447700900789",
"viber_signature": "DemoSender",
"viber_message": "Your order has been dispatched, track it: https://example.com/order/42",
"sms_signature": "DemoSender",
"sms_message": "Order dispatched",
"confirm": true
}
}
},
timeout=30,
)
print(response.json())
const response = await fetch("https://mcp.interconnect.solutions/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": "447700900789",
"viber_signature": "DemoSender",
"viber_message": "Your order has been dispatched, track it: https://example.com/order/42",
"sms_signature": "DemoSender",
"sms_message": "Order dispatched",
"confirm": true
}
}
}),
});
console.log(await response.json());
send_rcs
One RCS message. Reaches only devices that support RCS — everyone else needs a separate fallback channel.
Parameters
Request example
- JSON-RPC
- cURL
- Python
- Node.js
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_rcs",
"arguments": {
"phone": "447700900789",
"signature": "DemoSender",
"message": "Your code is 1234",
"confirm": true
}
}
}
curl -X POST 'https://mcp.interconnect.solutions/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": "447700900789",
"signature": "DemoSender",
"message": "Your code is 1234",
"confirm": true
}
}
}'
import requests
response = requests.post(
"https://mcp.interconnect.solutions/mcp",
headers={"Authorization": "Bearer ВАШ_API_КЛЮЧ"},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_rcs",
"arguments": {
"phone": "447700900789",
"signature": "DemoSender",
"message": "Your code is 1234",
"confirm": true
}
}
},
timeout=30,
)
print(response.json())
const response = await fetch("https://mcp.interconnect.solutions/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": "447700900789",
"signature": "DemoSender",
"message": "Your code is 1234",
"confirm": true
}
}
}),
});
console.log(await response.json());
send_voice
A synthesised voice call that reads out your text.
Parameters
Request example
- JSON-RPC
- cURL
- Python
- Node.js
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_voice",
"arguments": {
"phone": "447700900789",
"message": "Your confirmation code is 1 2 3 4",
"language": "en-GB",
"confirm": true
}
}
}
curl -X POST 'https://mcp.interconnect.solutions/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": "447700900789",
"message": "Your confirmation code is 1 2 3 4",
"language": "en-GB",
"confirm": true
}
}
}'
import requests
response = requests.post(
"https://mcp.interconnect.solutions/mcp",
headers={"Authorization": "Bearer ВАШ_API_КЛЮЧ"},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_voice",
"arguments": {
"phone": "447700900789",
"message": "Your confirmation code is 1 2 3 4",
"language": "en-GB",
"confirm": true
}
}
},
timeout=30,
)
print(response.json())
const response = await fetch("https://mcp.interconnect.solutions/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": "447700900789",
"message": "Your confirmation code is 1 2 3 4",
"language": "en-GB",
"confirm": true
}
}
}),
});
console.log(await response.json());
send_whatsapp
WhatsApp has no message type of its own. The connector sends a pipeline request with whatsapp as its stage — see Send OTP Code (WhatsApp). Sending works only over a route registered for that set of stages: without it the platform answers No route and charges nothing. The message reaches the recipient only if they wrote first or gave consent, and the sender name is registered in WhatsApp Business.
Parameters
Request example
- JSON-RPC
- cURL
- Python
- Node.js
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_whatsapp",
"arguments": {
"phone": "447700900789",
"signature": "DemoSender",
"message": "Your order is ready for pickup",
"confirm": true
}
}
}
curl -X POST 'https://mcp.interconnect.solutions/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": "447700900789",
"signature": "DemoSender",
"message": "Your order is ready for pickup",
"confirm": true
}
}
}'
import requests
response = requests.post(
"https://mcp.interconnect.solutions/mcp",
headers={"Authorization": "Bearer ВАШ_API_КЛЮЧ"},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_whatsapp",
"arguments": {
"phone": "447700900789",
"signature": "DemoSender",
"message": "Your order is ready for pickup",
"confirm": true
}
}
},
timeout=30,
)
print(response.json())
const response = await fetch("https://mcp.interconnect.solutions/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": "447700900789",
"signature": "DemoSender",
"message": "Your order is ready for pickup",
"confirm": true
}
}
}),
});
console.log(await response.json());
sms_signature and sms_message are set as a pair: with only one of them the connector refuses before it calls the API. Together they turn the request into a whatsapp → sms pipeline, which needs a route of its own.
message_status will not find a pipeline message — the platform does not store your id for it. The connector answers with the id and the list of stages, so you can see what went into the queue.
send_verification_code
Sends a one-time code and generates it for you. This operation has its own address and its own field set: it returns a verify_id the code is later checked against.
Parameters
Request example
- JSON-RPC
- cURL
- Python
- Node.js
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_verification_code",
"arguments": {
"phone": "447700900789",
"signature": "DemoSender",
"channel": "sms",
"confirm": true
}
}
}
curl -X POST 'https://mcp.interconnect.solutions/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": "447700900789",
"signature": "DemoSender",
"channel": "sms",
"confirm": true
}
}
}'
import requests
response = requests.post(
"https://mcp.interconnect.solutions/mcp",
headers={"Authorization": "Bearer ВАШ_API_КЛЮЧ"},
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "send_verification_code",
"arguments": {
"phone": "447700900789",
"signature": "DemoSender",
"channel": "sms",
"confirm": true
}
}
},
timeout=30,
)
print(response.json())
const response = await fetch("https://mcp.interconnect.solutions/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": "447700900789",
"signature": "DemoSender",
"channel": "sms",
"confirm": true
}
}
}),
});
console.log(await response.json());
Errors
The connector passes API errors through as they are, without rewording. Common cases: