send_template_message
Sends an approved template to one contact with a confirmed opt-in by WhatsApp, also outside the 24-hour window. Fills the template variables from the contact and from variables.
| Tool name | send_template_message |
| Permission | sends:create |
readOnlyHint | false |
destructiveHint | false |
idempotentHint | true |
openWorldHint | true |
| REST call | POST /v1/sends |
#What it does
- Sends WhatsApp messages to contacts.
- Safe to repeat with the same idempotency_key.
#Input
The tool takes one flat object. Path, query and body fields of the REST call are merged into it.
| Name | Type | Required | Description |
|---|---|---|---|
type | string | yes | Always template for a template message. always template |
contact_id | string | yes | Contact ID from search_contacts. |
template_id | string | yes | Template ID from list_templates. The template must be approved by WhatsApp. |
variables | object | no | Values for the template variables, as { name: value }. Name, email and phone always come from the contact. |
Arguments added by the MCP server (see Special arguments)
| Name | Type | Required | Description |
|---|---|---|---|
idempotency_key | string | yes | Required. Unique key for this action, for example a UUID. Same key and arguments within 24 hours: first result, nothing done again. up to 255 characters |
#Result
The result has the same content as the REST answer. Lists have at most 50 items per page (default 20); use cursor for the next page.
Errors come back as a tool result with isError: true. The error codes are the ones in Errors.