EnvoiSMS
Send SMS/WhatsApp and verify OTP codes in Morocco (+212) and worldwide. Direct carrier routing.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"envoisms": {
"url": "https://api.envoisms.ma/v1/mcp"
}
}
}Remote endpoints
https://api.envoisms.ma/v1/mcpstreamable-httpWhat it can do
Tool inventory
Tools (18)
π‘send_sms(to, message, sender_id)
Send a single SMS message to a phone number in E.164 format (+212600000000).
Input Schema
{
"type": "object",
"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"
}
},
"required": [
"to",
"message"
]
}π‘send_bulk_sms(recipients, message, sender_id)
Send an SMS message to multiple recipients in E.164 format at once (up to 100 recipients).
Input Schema
{
"type": "object",
"properties": {
"recipients": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of recipient phone numbers in E.164 format (+212600000000)"
},
"message": {
"type": "string",
"description": "Text content of the SMS"
},
"sender_id": {
"type": "string",
"description": "Optional approved custom Sender ID"
}
},
"required": [
"recipients",
"message"
]
}π‘send_whatsapp_template(to, template_name, language, variables, phone_number_id)
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.
Input Schema
{
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "Recipient phone number in E.164 format (+212600000000)"
},
"template_name": {
"type": "string",
"description": "Name of an approved WhatsApp template on the account"
},
"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"
},
"phone_number_id": {
"type": "string",
"description": "Optional: which connected WhatsApp number sends (defaults to the account's default number)"
}
},
"required": [
"to",
"template_name"
]
}π’get_message_status(message_id)
Check the real-time delivery status, segments, and cost of a sent message by ID.
Input Schema
{
"type": "object",
"properties": {
"message_id": {
"type": "string",
"description": "Message ID returned by send_sms"
}
},
"required": [
"message_id"
]
}π’list_messages(limit, status, channel)
List recent outbound messages for the authenticated account with optional filters.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Number of messages to retrieve (1-50, default 20)"
},
"status": {
"type": "string",
"enum": [
"queued",
"sent",
"delivered",
"failed",
"undeliverable"
],
"description": "Filter by delivery status"
},
"channel": {
"type": "string",
"enum": [
"sms",
"whatsapp"
],
"description": "Filter by communication channel"
}
}
}π’get_balance
Check remaining SMS credit balance in MAD and account status.
Input Schema
{
"type": "object",
"properties": {}
}π‘create_topup(pack_id, amount_mad, currency, payment_method)
Create a balance top-up checkout link (Stripe card or crypto USDC) for the authenticated account.
Input Schema
{
"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."
},
"amount_mad": {
"type": "number",
"description": "Custom recharge amount in MAD (minimum 300 MAD). Optional if pack_id is provided."
},
"currency": {
"type": "string",
"enum": [
"mad",
"eur"
],
"description": "Payment presentation currency for card checkout ('mad' or 'eur'). Default 'mad'."
},
"payment_method": {
"type": "string",
"enum": [
"stripe",
"crypto"
],
"description": "Payment method ('stripe' for card or 'crypto' for USDC). Default 'stripe'."
}
}
}π‘send_otp(to, brand)
Send a 6-digit OTP verification code via SMS or WhatsApp.
Input Schema
{
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "Recipient phone number in E.164 format"
},
"brand": {
"type": "string",
"description": "Brand name shown in the OTP message"
}
},
"required": [
"to"
]
}βͺverify_otp(session_id, code)
Verify an OTP passcode against a previously sent code.
Input Schema
{
"type": "object",
"properties": {
"session_id": {
"type": "string",
"description": "Session ID from send_otp"
},
"code": {
"type": "string",
"description": "6-digit OTP code to verify"
}
},
"required": [
"session_id",
"code"
]
}π’list_campaigns(limit)
List SMS marketing campaigns created on the account.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Number of campaigns to retrieve (1-50, default 20)"
}
}
}π’list_contacts(limit, q, list_id)
List saved contacts or search contacts by name, phone, or email.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Number of contacts to retrieve (1-100, default 20)"
},
"q": {
"type": "string",
"description": "Search query matching phone, name, or email"
},
"list_id": {
"type": "string",
"description": "Filter contacts by contact list ID"
}
}
}π’get_analytics(days)
Get SMS & WhatsApp message delivery metrics, success rates, and volume statistics.
Input Schema
{
"type": "object",
"properties": {
"days": {
"type": "number",
"description": "Lookback window in days (1-365, default 30)"
}
}
}βͺops_pulse(days)
Admin only. Business health snapshot: margin, cash collected, customer float (liability), solvency ratio, active accounts, and money stuck in the refund-review queue.
Input Schema
{
"type": "object",
"properties": {
"days": {
"type": "number",
"description": "Lookback window in days (1-365). Default 30."
}
}
}βͺops_route_quality(days)
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.
Input Schema
{
"type": "object",
"properties": {
"days": {
"type": "number",
"description": "Lookback window in days (1-365). Default 30."
}
}
}βͺops_monitoring
Admin only. Current operational state: open ops alerts by severity, upstream gateway balance, and known issues that need attention right now.
Input Schema
{
"type": "object",
"properties": {}
}π’lookup_number(to)
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.
Input Schema
{
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "Phone number to lookup in national (06...) or E.164 (+212...) format."
}
},
"required": [
"to"
]
}π’list_sender_ids(status)
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.
Input Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"approved",
"pending",
"rejected",
"all"
],
"description": "Filter sender IDs by status (approved, pending, rejected, all). Defaults to all."
}
}
}π’get_pricing(to)
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.
Input Schema
{
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "Destination phone number in E.164 format, e.g. +2348012345678. Optional."
}
}
}Recommended Prompts
get_message_statusget_message_statuslist_messageslist_messageslist_messagesget_message_statusCommunity
Evidence