WhatsApp OTP and WhatsApp Business automation tools for AI assistants
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
WALoops API key
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.
Requires an Advance plan key. Creates an automation as a DRAFT: saved switched OFF and named "[AI draft] ...". Nothing is sent until the account owner reviews it and turns it on in the WALoops app (Automations page). Tell the user this.
App key from list_connected_apps.
Event key from list_connected_apps.
instance_id from list_connected_apps; needed when the account has more than one store of that app.
WALoops template id from list_templates.
Template variable number to event field path.
Action app instance_id from list_connected_apps; needed when there are multiple stores.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http waloops-mcp https://app.waloops.com/api/mcp.php
Headers
X-API-Key (optional, not in the config above): WALoops API keyRequires an Advance plan key. Creates an automation as a DRAFT: saved switched OFF and named "[AI draft] ...". Nothing is sent until the account owner reviews it and turns it on in the WALoops app (Automations page). Tell the user this.
| Argument | Type | Description |
|---|---|---|
| name* | string | |
| stage | string | |
| app_key* | string | App key from list_connected_apps. |
| event_key* | string | Event key from list_connected_apps. |
| conditions | array | |
| action_type | string | |
| instance_id | integer | instance_id from list_connected_apps; needed when the account has more than one store of that app. |
| template_id | integer | WALoops template id from list_templates. |
| action_config | object | |
| field_mapping | object | Template variable number to event field path. |
| schedule_type | string | |
| action_app_key | string | |
| recipient_mode | string | |
| condition_match | string | |
| recipient_phone | string | |
| action_instance_id | integer | Action app instance_id from list_connected_apps; needed when there are multiple stores. |
| schedule_delay_unit | string | |
| schedule_delay_value | integer |
{
"type": "object",
"required": [
"name",
"app_key",
"event_key"
],
"properties": {
"name": {
"type": "string"
},
"stage": {
"type": "string"
},
"app_key": {
"type": "string",
"description": "App key from list_connected_apps."
},
"event_key": {
"type": "string",
"description": "Event key from list_connected_apps."
},
"conditions": {
"type": "array"
},
"action_type": {
"type": "string"
},
"instance_id": {
"type": "integer",
"description": "instance_id from list_connected_apps; needed when the account has more than one store of that app."
},
"template_id": {
"type": "integer",
"description": "WALoops template id from list_templates."
},
"action_config": {
"type": "object"
},
"field_mapping": {
"type": "object",
"description": "Template variable number to event field path."
},
"schedule_type": {
"enum": [
"immediate",
"delay"
],
"type": "string"
},
"action_app_key": {
"type": "string",
"default": "whatsapp"
},
"recipient_mode": {
"enum": [
"auto",
"manual"
],
"type": "string"
},
"condition_match": {
"enum": [
"all",
"any"
],
"type": "string"
},
"recipient_phone": {
"type": "string"
},
"action_instance_id": {
"type": "integer",
"description": "Action app instance_id from list_connected_apps; needed when there are multiple stores."
},
"schedule_delay_unit": {
"enum": [
"minutes",
"hours",
"days"
],
"type": "string"
},
"schedule_delay_value": {
"type": "integer"
}
},
"additionalProperties": false
}Requires an Advance plan key. Creates a WhatsApp template and submits it to Meta for approval (usually minutes to a few hours). Check status later with list_templates.
| Argument | Type | Description |
|---|---|---|
| body* | string | Template body; may use {{1}}, {{2}} variables. |
| name* | string | Lowercase letters, digits, and underscores only. |
| footer | string | |
| header | object | |
| buttons | array | |
| category* | string | |
| examples | array | Sample values for body variables; required by Meta when variables are used. |
| language | string |
{
"type": "object",
"required": [
"name",
"category",
"body"
],
"properties": {
"body": {
"type": "string",
"description": "Template body; may use {{1}}, {{2}} variables."
},
"name": {
"type": "string",
"description": "Lowercase letters, digits, and underscores only."
},
"footer": {
"type": "string"
},
"header": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"format": {
"type": "string"
},
"media_url": {
"type": "string"
}
},
"additionalProperties": true
},
"buttons": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"text"
],
"properties": {
"url": {
"type": "string"
},
"text": {
"type": "string"
},
"type": {
"enum": [
"QUICK_REPLY",
"URL",
"PHONE_NUMBER"
],
"type": "string"
},
"phone_number": {
"type": "string"
}
},
"additionalProperties": false
}
},
"category": {
"enum": [
"MARKETING",
"UTILITY"
],
"type": "string"
},
"examples": {
"type": "array",
"items": {
"type": "string"
},
"description": "Sample values for body variables; required by Meta when variables are used."
},
"language": {
"type": "string",
"default": "en"
}
},
"additionalProperties": false
}Requires an Advance plan key. List messages in a conversation.
| Argument | Type | Description |
|---|---|---|
| id* | integer | Conversation id from list_conversations. |
| page | integer | |
| limit | integer |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"description": "Conversation id from list_conversations."
},
"page": {
"type": "integer"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1
}
},
"additionalProperties": false
}Requires an Advance plan key. Messages, conversations, automations and plan usage overview.
No arguments.
{
"type": "object",
"additionalProperties": false
}Read OTP usage for the API key, including available usage or limits.
| Argument | Type | Description |
|---|---|---|
| site_url* | string | URL of the app or site this OTP is for, e.g. https://myapp.com. Required by the OTP API so every key has a known site. |
{
"type": "object",
"required": [
"site_url"
],
"properties": {
"site_url": {
"type": "string",
"description": "URL of the app or site this OTP is for, e.g. https://myapp.com. Required by the OTP API so every key has a known site."
}
},
"additionalProperties": false
}Explain WALoops setup, key types, available tool groups, API docs, and example OTP requests.
No arguments.
{
"type": "object",
"additionalProperties": false
}Requires an Advance plan key. Installs a recipe as a switched-off draft for the owner to review.
| Argument | Type | Description |
|---|---|---|
| name | string | Optional draft name. |
| recipe_key* | string | Recipe key from list_recipes. |
| instance_id | integer | Optional trigger app instance_id from list_connected_apps. |
| template_id | integer | Optional approved template id from list_templates. |
| action_instance_id | integer | Optional action app instance_id from list_connected_apps. |
{
"type": "object",
"required": [
"recipe_key"
],
"properties": {
"name": {
"type": "string",
"description": "Optional draft name."
},
"recipe_key": {
"type": "string",
"description": "Recipe key from list_recipes."
},
"instance_id": {
"type": "integer",
"description": "Optional trigger app instance_id from list_connected_apps."
},
"template_id": {
"type": "integer",
"description": "Optional approved template id from list_templates."
},
"action_instance_id": {
"type": "integer",
"description": "Optional action app instance_id from list_connected_apps."
}
},
"additionalProperties": false
}Every action an automation can run (WhatsApp, Shopify, WooCommerce, webhook to any external tool, bot flows, tags) with the action_config each needs. Combine any trigger from list_connected_apps with any action.
No arguments.
{
"type": "object",
"additionalProperties": false
}Requires an Advance plan key. List automations, or fetch one automation with its run stats by id.
| Argument | Type | Description |
|---|---|---|
| id | integer | Optional automation id. |
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Optional automation id."
}
},
"additionalProperties": false
}Requires an Advance plan key. List bot flows available as automation actions.
No arguments.
{
"type": "object",
"additionalProperties": false
}Requires an Advance plan key. List campaigns, or fetch one campaign by id.
| Argument | Type | Description |
|---|---|---|
| id | integer | Optional campaign id. |
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Optional campaign id."
}
},
"additionalProperties": false
}Requires an Advance plan key. Connected apps (Shopify, WooCommerce, etc.) with their app_key and available event_key triggers; call before create_automation_draft.
No arguments.
{
"type": "object",
"additionalProperties": false
}Requires an Advance plan key. List and search inbox conversations.
| Argument | Type | Description |
|---|---|---|
| page | integer | |
| limit | integer | |
| search | string |
{
"type": "object",
"properties": {
"page": {
"type": "integer"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1
},
"search": {
"type": "string"
}
},
"additionalProperties": false
}Requires an Advance plan key. List proven ready-made automations that can be installed as safe drafts.
No arguments.
{
"type": "object",
"additionalProperties": false
}Requires an Advance plan key. List tags available as automation actions.
No arguments.
{
"type": "object",
"additionalProperties": false
}Requires an Advance plan key. List the client’s approved WhatsApp templates and their variables.
No arguments.
{
"type": "object",
"additionalProperties": false
}Requires an Advance plan key. Switches an automation OFF. For safety, automations can only be turned ON by the account owner inside the WALoops app.
| Argument | Type | Description |
|---|---|---|
| id* | integer | Automation id. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"description": "Automation id."
}
},
"additionalProperties": false
}Send an OTP to an international phone number. A free OTP key sends from the WALoops WhatsApp number; channel may be whatsapp or sms.
| Argument | Type | Description |
|---|---|---|
| phone* | string | International digits, for example 919876543210. |
| channel | string | |
| purpose | string | OTP purpose; defaults to login. |
| site_url* | string | URL of the app or site this OTP is for, e.g. https://myapp.com. Required by the OTP API so every key has a known site. |
{
"type": "object",
"required": [
"phone",
"site_url"
],
"properties": {
"phone": {
"type": "string",
"description": "International digits, for example 919876543210."
},
"channel": {
"enum": [
"whatsapp",
"sms"
],
"type": "string"
},
"purpose": {
"type": "string",
"default": "login",
"description": "OTP purpose; defaults to login."
},
"site_url": {
"type": "string",
"description": "URL of the app or site this OTP is for, e.g. https://myapp.com. Required by the OTP API so every key has a known site."
}
},
"additionalProperties": false
}Requires an Advance plan key. Send an approved WhatsApp template; call list_templates first to confirm the template name and variables.
| Argument | Type | Description |
|---|---|---|
| to* | string | Recipient phone number in digits. |
| template* | string | Name of an approved template. |
| variables | any | Template variables as an object or an array of strings. |
{
"type": "object",
"required": [
"to",
"template"
],
"properties": {
"to": {
"type": "string",
"description": "Recipient phone number in digits."
},
"template": {
"type": "string",
"description": "Name of an approved template."
},
"variables": {
"oneOf": [
{
"type": "object",
"additionalProperties": {
"type": "string"
}
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "Template variables as an object or an array of strings."
}
},
"additionalProperties": false
}Verify a previously sent OTP using the recipient’s phone number and code.
| Argument | Type | Description |
|---|---|---|
| code* | string | The OTP code received by the user. |
| phone* | string | International phone number in digits. |
| site_url* | string | URL of the app or site this OTP is for, e.g. https://myapp.com. Required by the OTP API so every key has a known site. |
{
"type": "object",
"required": [
"phone",
"code",
"site_url"
],
"properties": {
"code": {
"type": "string",
"description": "The OTP code received by the user."
},
"phone": {
"type": "string",
"description": "International phone number in digits."
},
"site_url": {
"type": "string",
"description": "URL of the app or site this OTP is for, e.g. https://myapp.com. Required by the OTP API so every key has a known site."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 1, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.