EnvoiSMS
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Send SMS/WhatsApp and verify OTP codes in Morocco (+212) and worldwide. Direct carrier routing.
| Author | ma.envoisms |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 5904 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"EnvoiSMS": {
"url": "https://api.envoisms.ma/v1/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (19)
send_smsSend a single SMS message to a phone number in E.164 format (+212600000000).
Parameters:
to(required) — string — Recipient phone number in E.164 format (+212600000000)message(required) — string — Text content of the SMSsender_id— string — Optional approved custom Sender ID
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
send_bulk_smsSend an SMS message to multiple recipients in E.164 format at once (up to 100 recipients).
Parameters:
recipients(required) — array — Array of recipient phone numbers in E.164 format (+212600000000)message(required) — string — Text content of the SMSsender_id— string — Optional approved custom Sender ID
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
send_whatsapp_templateSend 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.
Parameters:
to(required) — string — Recipient phone number in E.164 format (+212600000000)template_name(required) — string — Name of an approved WhatsApp template on the accountlanguage— 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 orderphone_number_id— string — Optional: which connected WhatsApp number sends (defaults to the account's default number)
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
send_whatsapp_messageSend a direct freeform text message to a recipient on WhatsApp within an active 24-hour customer service window.
Parameters:
to(required) — string — Recipient phone number in E.164 format (+212600000000)message(required) — string — Text content of the WhatsApp messagephone_number_id— string — Optional: which connected WhatsApp number sends (defaults to the account's default number)
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_message_statusCheck the real-time delivery status, segments, and cost of a sent message by ID.
Parameters:
message_id(required) — string — Message ID returned by send_sms
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_messagesList recent outbound messages for the authenticated account with optional filters.
Parameters:
limit— number — Number of messages to retrieve (1-50, default 20)status— string — Filter by delivery statuschannel— string — Filter by communication channel
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_balanceCheck remaining SMS credit balance in MAD and account status.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
create_topupCreate a balance top-up checkout link (Stripe card or crypto USDC) for the authenticated account.
Parameters:
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'.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
send_otpSend a 6-digit OTP verification code via SMS or WhatsApp.
Parameters:
to(required) — string — Recipient phone number in E.164 formatbrand— string — Brand name shown in the OTP message
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
verify_otpVerify an OTP passcode against a previously sent code.
Parameters:
session_id(required) — string — Session ID from send_otpcode(required) — string — 6-digit OTP code to verify
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_campaignsList SMS marketing campaigns created on the account.
Parameters:
limit— number — Number of campaigns to retrieve (1-50, default 20)
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_contactsList saved contacts or search contacts by name, phone, or email.
Parameters:
q— string — Search query matching phone, name, or emaillimit— number — Number of contacts to retrieve (1-100, default 20)list_id— string — Filter contacts by contact list ID
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_analyticsGet SMS & WhatsApp message delivery metrics, success rates, and volume statistics.
Parameters:
days— number — Lookback window in days (1-365, default 30)
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
ops_pulseAdmin only. Business health snapshot: margin, cash collected, customer float (liability), solvency ratio, active accounts, and money stuck in the refund-review queue.
Parameters:
days— number — Lookback window in days (1-365). Default 30.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
ops_route_qualityAdmin 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.
Parameters:
days— number — Lookback window in days (1-365). Default 30.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
ops_monitoringAdmin only. Current operational state: open ops alerts by severity, upstream gateway balance, and known issues that need attention right now.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
lookup_numberInspect a phone number: validate format, identify Moroccan operator (IAM / Maroc Telecom, Orange, Inwi) or international country, and view applicable rate. Public — no authentication required.
Parameters:
to(required) — string — Phone number to lookup in national (06...) or E.164 (+212...) format.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_sender_idsConsultation 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.
Parameters:
status— string — Filter sender IDs by status (approved, pending, rejected, all). Defaults to all.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_pricingGet 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.
Parameters:
to— string — Destination phone number in E.164 format, e.g. +2348012345678. Optional.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.