Smstools
SMS and WhatsApp Business messaging via Smstools (Belgium, EU-hosted). Send SMS, approved WhatsApp templates, WhatsApp text and files, and check message status and credits. Bring your own Smstools account.
setup_integration or the Dashboard Vault — they're encrypted
with AES-256-GCM and never exposed.
Required Credentials
Get your API key at www.smstools.com →
Endpoints (11)
Send one SMS to one recipient. Use test: true to validate everything without sending or using credits. Returns a messageid for get-message.
| Field | Type | Required | Description |
|---|---|---|---|
to |
string | ✓ Yes | Recipient in international format without "+" or leading zeros, e.g. 31612345678. One number per call. |
sender |
string | ✓ Yes | Sender ID: a name of max 11 letters/digits (no spaces or special characters) or a number starting with "+" (max 14 characters). list-senders shows the sender IDs on the account. |
message |
string | ✓ Yes | Message text, max 612 characters (up to 4 SMS parts). The euro sign, square and curly brackets, backslash, caret, tilde and vertical bar count as 2 characters. |
date |
string | No | Optional send time "yyyy-MM-dd HH:mm" (Smstools local time). Omit to send now. |
reference |
string | No | Optional own reference, e.g. an order number (get-message returns it). |
test |
boolean | No | true = validate only: nothing is sent, no credits are used. |
subid |
integer | No | Optional Smstools subaccount ID to send from. |
Send an approved WhatsApp template to one recipient. This is the only WhatsApp message type allowed when the 24-hour customer-service window is closed. list-whatsapp-templates shows the template names. Fill template placeholders with variable1..variable10.
| Field | Type | Required | Description |
|---|---|---|---|
to |
string | ✓ Yes | Recipient in international format without "+" or leading zeros, e.g. 31612345678. One number per call. |
sender |
string | ✓ Yes | Your WhatsApp Business sender number as registered in Smstools, starting with "+". list-whatsapp-numbers shows the numbers on the account. |
template_name |
string | ✓ Yes | Name of an APPROVED WhatsApp template (see list-whatsapp-templates). |
variable1 |
string | No | Value for placeholder 1 in the template body. |
variable2 |
string | No | Value for placeholder 2 in the template body. |
variable3 |
string | No | Value for placeholder 3 in the template body. |
variable4 |
string | No | Value for placeholder 4 in the template body. |
variable5 |
string | No | Value for placeholder 5 in the template body. |
variable6 |
string | No | Value for placeholder 6 in the template body. |
variable7 |
string | No | Value for placeholder 7 in the template body. |
variable8 |
string | No | Value for placeholder 8 in the template body. |
variable9 |
string | No | Value for placeholder 9 in the template body. |
variable10 |
string | No | Value for placeholder 10 in the template body. |
button_variable1 |
string | No | Value for placeholder 1 of a dynamic button (templates with dynamic buttons only). |
button_variable2 |
string | No | Value for placeholder 2 of a dynamic button (templates with dynamic buttons only). |
image_url |
string | No | Public https URL of the header image. Only for templates with an image header. |
video_url |
string | No | Public https URL of the header video. Only for templates with a video header. |
document_url |
string | No | Public https URL of the header document (e.g. a PDF invoice; a pdf_document signed URL works while valid). Only for templates with a document header. |
date |
string | No | Optional send time "yyyy-MM-dd HH:mm" (Smstools local time). Omit to send now. |
reference |
string | No | Optional own reference, e.g. an order number (get-message returns it). |
test |
boolean | No | true = validate only: nothing is sent, no credits are used. |
subid |
integer | No | Optional Smstools subaccount ID to send from. |
Send free-form WhatsApp text to one recipient. Only works while the 24-hour customer-service window is open (the recipient messaged you in the last 24 hours); otherwise Smstools returns error 137 and you must use send-whatsapp-template. check-whatsapp-window tells you in advance.
| Field | Type | Required | Description |
|---|---|---|---|
to |
string | ✓ Yes | Recipient in international format without "+" or leading zeros, e.g. 31612345678. One number per call. |
sender |
string | ✓ Yes | Your WhatsApp Business sender number as registered in Smstools, starting with "+". list-whatsapp-numbers shows the numbers on the account. |
message |
string | ✓ Yes | Message text, max 4096 characters. |
date |
string | No | Optional send time "yyyy-MM-dd HH:mm" (Smstools local time). Omit to send now. |
reference |
string | No | Optional own reference, e.g. an order number (get-message returns it). |
test |
boolean | No | true = validate only: nothing is sent, no credits are used. |
subid |
integer | No | Optional Smstools subaccount ID to send from. |
Send a file, image, audio or video over WhatsApp to one recipient, with an optional caption. Smstools downloads the file from attachment_url, so it must be a public https URL at the moment of sending. Only inside the 24-hour customer-service window; outside it use send-whatsapp-template with document_url.
| Field | Type | Required | Description |
|---|---|---|---|
to |
string | ✓ Yes | Recipient in international format without "+" or leading zeros, e.g. 31612345678. One number per call. |
sender |
string | ✓ Yes | Your WhatsApp Business sender number as registered in Smstools, starting with "+". list-whatsapp-numbers shows the numbers on the account. |
attachment_url |
string | ✓ Yes | Public https URL of the file to send. |
attachment_type |
string | ✓ Yes | One of: file, image, audio, video. Use file for PDFs and other documents. |
message |
string | No | Optional caption sent with the file. |
date |
string | No | Optional send time "yyyy-MM-dd HH:mm" (Smstools local time). Omit to send now. |
reference |
string | No | Optional own reference, e.g. an order number (get-message returns it). |
test |
boolean | No | true = validate only: nothing is sent, no credits are used. |
subid |
integer | No | Optional Smstools subaccount ID to send from. |
Check whether the 24-hour WhatsApp customer-service window is open between your sender number and a recipient. Returns window_open (true/false) and the remaining time. When it is closed, only send-whatsapp-template is allowed.
| Field | Type | Required | Description |
|---|---|---|---|
to |
string | ✓ Yes | Recipient in international format without "+" or leading zeros, e.g. 31612345678. One number per call. |
sender |
string | ✓ Yes | Your WhatsApp Business sender number as registered in Smstools, starting with "+". list-whatsapp-numbers shows the numbers on the account. |
List the WhatsApp templates on the Smstools account: name, status (only APPROVED can be sent), category and language.
No input parameters required.
List the WhatsApp Business sender numbers on the Smstools account: verified name, display number and quality rating.
No input parameters required.
List the SMS sender IDs (names) registered on the Smstools account. Use one of these as sender in send-sms.
No input parameters required.
Look up one sent message by the messageid a send call returned: status (e.g. DELIVERED), cost, dates and your reference. Unknown IDs return 404.
| Field | Type | Required | Description |
|---|---|---|---|
message_id |
string | ✓ Yes | The messageid returned by a send call, or a public ID (lid_... or cnv_...). |
Convert a phone number as a customer typed it (e.g. "06-12345678" or "0490.123 /4.56") to the international format the send endpoints need. Returns a list with one entry per number: formattedNumber (e.g. 31612345678), isValidNumber, numberType (e.g. MOBILE) and error. In an order_events chain read it as {{steps.N.result.0.formattedNumber}}.
| Field | Type | Required | Description |
|---|---|---|---|
number |
string | ✓ Yes | The phone number in any notation; spaces, dashes, dots and a leading 0 or "+" are fine. |
countrycode |
string | ✓ Yes | Two-letter country code used for numbers without an international prefix, e.g. NL or BE. |
Remaining credits on the Smstools account. Also a quick way to check that the stored credential works.
No input parameters required.
MCP Tool Names
When using this integration through an AI assistant (Claude, ChatGPT, Cursor, etc.), the endpoints are available as MCP tools:
| Endpoint | MCP Tool Name |
|---|---|
| send-sms | smstools_send_sms |
| send-whatsapp-template | smstools_send_whatsapp_template |
| send-whatsapp-text | smstools_send_whatsapp_text |
| send-whatsapp-file | smstools_send_whatsapp_file |
| check-whatsapp-window | smstools_check_whatsapp_window |
| list-whatsapp-templates | smstools_list_whatsapp_templates |
| list-whatsapp-numbers | smstools_list_whatsapp_numbers |
| list-senders | smstools_list_senders |
| get-message | smstools_get_message |
| format-number | smstools_format_number |
| get-balance | smstools_get_balance |
Website