Send SMS/WhatsApp and verify OTP codes in Morocco (+212) and worldwide. Direct carrier routing.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Create a balance top-up checkout link (Stripe card or crypto USDC) for the authenticated account.
SMS top-up pack ID (e.g. 'sms-300' for 300 MAD, 'sms-1000' for 1000 MAD, 'sms-5000' for 5000 MAD). Optional if amount_mad is provided.
Payment presentation currency for card checkout ('mad' or 'eur'). Default 'mad'.
Custom recharge amount in MAD (minimum 300 MAD). Optional if pack_id is provided.
Payment method ('stripe' for card or 'crypto' for USDC). Default 'stripe'.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Tool list last changed Oct 25, 2026.
Create a balance top-up checkout link (Stripe card or crypto USDC) for the authenticated account.
| Argument | Type | Description |
|---|---|---|
| pack_id | string | SMS top-up pack ID (e.g. 'sms-300' for 300 MAD, 'sms-1000' for 1000 MAD, 'sms-5000' for 5000 MAD). Optional if amount_mad is provided. |
| currency | string | Payment presentation currency for card checkout ('mad' or 'eur'). Default 'mad'. |
| amount_mad | number | Custom recharge amount in MAD (minimum 300 MAD). Optional if pack_id is provided. |
| payment_method | string | Payment method ('stripe' for card or 'crypto' for USDC). Default 'stripe'. |
{
"type": "object",
"properties": {
"pack_id": {
"type": "string",
"description": "SMS top-up pack ID (e.g. 'sms-300' for 300 MAD, 'sms-1000' for 1000 MAD, 'sms-5000' for 5000 MAD). Optional if amount_mad is provided."
},
"currency": {
"enum": [
"mad",
"eur"
],
"type": "string",
"description": "Payment presentation currency for card checkout ('mad' or 'eur'). Default 'mad'."
},
"amount_mad": {
"type": "number",
"description": "Custom recharge amount in MAD (minimum 300 MAD). Optional if pack_id is provided."
},
"payment_method": {
"enum": [
"stripe",
"crypto"
],
"type": "string",
"description": "Payment method ('stripe' for card or 'crypto' for USDC). Default 'stripe'."
}
}
}Get SMS & WhatsApp message delivery metrics, success rates, and volume statistics.
| Argument | Type | Description |
|---|---|---|
| days | number | Lookback window in days (1-365, default 30) |
{
"type": "object",
"properties": {
"days": {
"type": "number",
"description": "Lookback window in days (1-365, default 30)"
}
}
}Check remaining SMS credit balance in MAD and account status.
No arguments.
{
"type": "object",
"properties": {}
}Check the real-time delivery status, segments, and cost of a sent message by ID.
| Argument | Type | Description |
|---|---|---|
| message_id* | string | Message ID returned by send_sms |
{
"type": "object",
"required": [
"message_id"
],
"properties": {
"message_id": {
"type": "string",
"description": "Message ID returned by send_sms"
}
}
}Get EnvoiSMS pricing. Pass `to` (a phone number in E.164, e.g. +2348012345678) for that destination's per-SMS rate; omit it for Moroccan rates and credit packs. Public — no authentication required.
| Argument | Type | Description |
|---|---|---|
| to | string | Destination phone number in E.164 format, e.g. +2348012345678. Optional. |
{
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "Destination phone number in E.164 format, e.g. +2348012345678. Optional."
}
}
}List SMS marketing campaigns created on the account.
| Argument | Type | Description |
|---|---|---|
| limit | number | Number of campaigns to retrieve (1-50, default 20) |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Number of campaigns to retrieve (1-50, default 20)"
}
}
}List saved contacts or search contacts by name, phone, or email.
| Argument | Type | Description |
|---|---|---|
| q | string | Search query matching phone, name, or email |
| limit | number | Number of contacts to retrieve (1-100, default 20) |
| list_id | string | Filter contacts by contact list ID |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Search query matching phone, name, or email"
},
"limit": {
"type": "number",
"description": "Number of contacts to retrieve (1-100, default 20)"
},
"list_id": {
"type": "string",
"description": "Filter contacts by contact list ID"
}
}
}List recent outbound messages for the authenticated account with optional filters.
| Argument | Type | Description |
|---|---|---|
| limit | number | Number of messages to retrieve (1-50, default 20) |
| status | string | Filter by delivery status |
| channel | string | Filter by communication channel |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Number of messages to retrieve (1-50, default 20)"
},
"status": {
"enum": [
"queued",
"sent",
"delivered",
"failed",
"undeliverable"
],
"type": "string",
"description": "Filter by delivery status"
},
"channel": {
"enum": [
"sms",
"whatsapp"
],
"type": "string",
"description": "Filter by communication channel"
}
}
}Consultation des noms d'expéditeurs alphanumériques validés par l'ANRT. List approved and pending custom alphanumeric Sender IDs registered on the authenticated account.
| Argument | Type | Description |
|---|---|---|
| status | string | Filter sender IDs by status (approved, pending, rejected, all). Defaults to all. |
{
"type": "object",
"properties": {
"status": {
"enum": [
"approved",
"pending",
"rejected",
"all"
],
"type": "string",
"description": "Filter sender IDs by status (approved, pending, rejected, all). Defaults to all."
}
}
}Inspect a phone number: validate format, identify Moroccan operator (IAM / Maroc Telecom, Orange, Inwi) or international country, and view applicable rate. Public — no authentication required.
| Argument | Type | Description |
|---|---|---|
| to* | string | Phone number to lookup in national (06...) or E.164 (+212...) format. |
{
"type": "object",
"required": [
"to"
],
"properties": {
"to": {
"type": "string",
"description": "Phone number to lookup in national (06...) or E.164 (+212...) format."
}
}
}Admin only. Current operational state: open ops alerts by severity, upstream gateway balance, and known issues that need attention right now.
No arguments.
{
"type": "object",
"properties": {}
}Admin only. Business health snapshot: margin, cash collected, customer float (liability), solvency ratio, active accounts, and money stuck in the refund-review queue.
| Argument | Type | Description |
|---|---|---|
| days | number | Lookback window in days (1-365). Default 30. |
{
"type": "object",
"properties": {
"days": {
"type": "number",
"description": "Lookback window in days (1-365). Default 30."
}
}
}Admin only. Delivery quality per carrier/provider/channel, failure codes, DLR plausibility (whether delivery reports can be trusted), and ported-number routing hints. The data behind any provider-routing decision.
| Argument | Type | Description |
|---|---|---|
| days | number | Lookback window in days (1-365). Default 30. |
{
"type": "object",
"properties": {
"days": {
"type": "number",
"description": "Lookback window in days (1-365). Default 30."
}
}
}Send an SMS message to multiple recipients in E.164 format at once (up to 100 recipients).
| Argument | Type | Description |
|---|---|---|
| message* | string | Text content of the SMS |
| sender_id | string | Optional approved custom Sender ID |
| recipients* | array | Array of recipient phone numbers in E.164 format (+212600000000) |
{
"type": "object",
"required": [
"recipients",
"message"
],
"properties": {
"message": {
"type": "string",
"description": "Text content of the SMS"
},
"sender_id": {
"type": "string",
"description": "Optional approved custom Sender ID"
},
"recipients": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of recipient phone numbers in E.164 format (+212600000000)"
}
}
}Send a 6-digit OTP verification code via SMS or WhatsApp.
| Argument | Type | Description |
|---|---|---|
| to* | string | Recipient phone number in E.164 format |
| brand | string | Brand name shown in the OTP message |
{
"type": "object",
"required": [
"to"
],
"properties": {
"to": {
"type": "string",
"description": "Recipient phone number in E.164 format"
},
"brand": {
"type": "string",
"description": "Brand name shown in the OTP message"
}
}
}Send a single SMS message to a phone number in E.164 format (+212600000000).
| Argument | Type | Description |
|---|---|---|
| to* | string | Recipient phone number in E.164 format (+212600000000) |
| message* | string | Text content of the SMS |
| sender_id | string | Optional approved custom Sender ID |
{
"type": "object",
"required": [
"to",
"message"
],
"properties": {
"to": {
"type": "string",
"description": "Recipient phone number in E.164 format (+212600000000)"
},
"message": {
"type": "string",
"description": "Text content of the SMS"
},
"sender_id": {
"type": "string",
"description": "Optional approved custom Sender ID"
}
}
}Send a direct freeform text message to a recipient on WhatsApp within an active 24-hour customer service window.
| Argument | Type | Description |
|---|---|---|
| to* | string | Recipient phone number in E.164 format (+212600000000) |
| message* | string | Text content of the WhatsApp message |
| phone_number_id | string | Optional: which connected WhatsApp number sends (defaults to the account's default number) |
{
"type": "object",
"required": [
"to",
"message"
],
"properties": {
"to": {
"type": "string",
"description": "Recipient phone number in E.164 format (+212600000000)"
},
"message": {
"type": "string",
"description": "Text content of the WhatsApp message"
},
"phone_number_id": {
"type": "string",
"description": "Optional: which connected WhatsApp number sends (defaults to the account's default number)"
}
}
}Send an approved WhatsApp template message from the account's connected WhatsApp Business number. Templates may open a conversation at any time (no 24-hour window). Billed like the same send on POST /v1/messages.
| Argument | Type | Description |
|---|---|---|
| to* | string | Recipient phone number in E.164 format (+212600000000) |
| language | string | Template language code (e.g. fr, en_US, ar). Defaults to the template's own language. |
| variables | array | Values for the template body placeholders {{1}}, {{2}}, … in order |
| template_name* | string | Name of an approved WhatsApp template on the account |
| phone_number_id | string | Optional: which connected WhatsApp number sends (defaults to the account's default number) |
{
"type": "object",
"required": [
"to",
"template_name"
],
"properties": {
"to": {
"type": "string",
"description": "Recipient phone number in E.164 format (+212600000000)"
},
"language": {
"type": "string",
"description": "Template language code (e.g. fr, en_US, ar). Defaults to the template's own language."
},
"variables": {
"type": "array",
"items": {
"type": "string"
},
"description": "Values for the template body placeholders {{1}}, {{2}}, … in order"
},
"template_name": {
"type": "string",
"description": "Name of an approved WhatsApp template on the account"
},
"phone_number_id": {
"type": "string",
"description": "Optional: which connected WhatsApp number sends (defaults to the account's default number)"
}
}
}Verify an OTP passcode against a previously sent code.
| Argument | Type | Description |
|---|---|---|
| code* | string | 6-digit OTP code to verify |
| session_id* | string | Session ID from send_otp |
{
"type": "object",
"required": [
"session_id",
"code"
],
"properties": {
"code": {
"type": "string",
"description": "6-digit OTP code to verify"
},
"session_id": {
"type": "string",
"description": "Session ID from send_otp"
}
}
}