WALoops
WhatsApp OTP and WhatsApp Business automation tools for AI assistants
Should I use this
Quality & Safety
Findings (1)
- LOWin get_dashboard_stats
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": {
"waloops-mcp": {
"url": "https://app.waloops.com/api/mcp.php"
}
}
}Remote endpoints
https://app.waloops.com/api/mcp.phpstreamable-httpWhat it can do
Tool inventory
Tools (20)
π’get_started
Explain WALoops setup, key types, available tool groups, API docs, and example OTP requests.
Input Schema
{
"type": "object",
"additionalProperties": false
}π‘send_otp(phone, channel, purpose, site_url)
Send an OTP to an international phone number. A free OTP key sends from the WALoops WhatsApp number; channel may be whatsapp or sms.
Input Schema
{
"type": "object",
"properties": {
"phone": {
"type": "string",
"description": "International digits, for example 919876543210."
},
"channel": {
"type": "string",
"enum": [
"whatsapp",
"sms"
]
},
"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."
}
},
"required": [
"phone",
"site_url"
],
"additionalProperties": false
}βͺverify_otp(phone, code, site_url)
Verify a previously sent OTP using the recipientβs phone number and code.
Input Schema
{
"type": "object",
"properties": {
"phone": {
"type": "string",
"description": "International phone number in digits."
},
"code": {
"type": "string",
"description": "The OTP code received by the user."
},
"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."
}
},
"required": [
"phone",
"code",
"site_url"
],
"additionalProperties": false
}π’get_otp_usage(site_url)
Read OTP usage for the API key, including available usage or limits.
Input Schema
{
"type": "object",
"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."
}
},
"required": [
"site_url"
],
"additionalProperties": false
}π’list_templates
Requires an Advance plan key. List the clientβs approved WhatsApp templates and their variables.
Input Schema
{
"type": "object",
"additionalProperties": false
}π‘send_template(to, template, variables)
Requires an Advance plan key. Send an approved WhatsApp template; call list_templates first to confirm the template name and variables.
Input Schema
{
"type": "object",
"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."
}
},
"required": [
"to",
"template"
],
"additionalProperties": false
}π’get_dashboard_stats
Requires an Advance plan key. Messages, conversations, automations and plan usage overview.
Input Schema
{
"type": "object",
"additionalProperties": false
}π’list_conversations(page, limit, search)
Requires an Advance plan key. List and search inbox conversations.
Input Schema
{
"type": "object",
"properties": {
"page": {
"type": "integer"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"search": {
"type": "string"
}
},
"additionalProperties": false
}π’get_conversation_messages(id, page, limit)
Requires an Advance plan key. List messages in a conversation.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Conversation id from list_conversations."
},
"page": {
"type": "integer"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [
"id"
],
"additionalProperties": false
}π’list_automations(id)
Requires an Advance plan key. List automations, or fetch one automation with its run stats by id.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Optional automation id."
}
},
"additionalProperties": false
}π’list_connected_apps
Requires an Advance plan key. Connected apps (Shopify, WooCommerce, etc.) with their app_key and available event_key triggers; call before create_automation_draft.
Input Schema
{
"type": "object",
"additionalProperties": false
}π’list_actions
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.
Input Schema
{
"type": "object",
"additionalProperties": false
}π’list_recipes
Requires an Advance plan key. List proven ready-made automations that can be installed as safe drafts.
Input Schema
{
"type": "object",
"additionalProperties": false
}π’list_bot_flows
Requires an Advance plan key. List bot flows available as automation actions.
Input Schema
{
"type": "object",
"additionalProperties": false
}π’list_tags
Requires an Advance plan key. List tags available as automation actions.
Input Schema
{
"type": "object",
"additionalProperties": false
}βͺinstall_recipe_draft(recipe_key, template_id, instance_id, action_instance_id, name)
Requires an Advance plan key. Installs a recipe as a switched-off draft for the owner to review.
Input Schema
{
"type": "object",
"properties": {
"recipe_key": {
"type": "string",
"description": "Recipe key from list_recipes."
},
"template_id": {
"type": "integer",
"description": "Optional approved template id from list_templates."
},
"instance_id": {
"type": "integer",
"description": "Optional trigger app instance_id from list_connected_apps."
},
"action_instance_id": {
"type": "integer",
"description": "Optional action app instance_id from list_connected_apps."
},
"name": {
"type": "string",
"description": "Optional draft name."
}
},
"required": [
"recipe_key"
],
"additionalProperties": false
}π’list_campaigns(id)
Requires an Advance plan key. List campaigns, or fetch one campaign by id.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Optional campaign id."
}
},
"additionalProperties": false
}π‘create_template(name, category, body, language, examples, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Lowercase letters, digits, and underscores only."
},
"category": {
"type": "string",
"enum": [
"MARKETING",
"UTILITY"
]
},
"body": {
"type": "string",
"description": "Template body; may use {{1}}, {{2}} variables."
},
"language": {
"type": "string",
"default": "en"
},
"examples": {
"type": "array",
"items": {
"type": "string"
},
"description": "Sample values for body variables; required by Meta when variables are used."
},
"header": {
"type": "object",
"properties": {
"format": {
"type": "string"
},
"text": {
"type": "string"
},
"media_url": {
"type": "string"
}
},
"additionalProperties": true
},
"footer": {
"type": "string"
},
"buttons": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"QUICK_REPLY",
"URL",
"PHONE_NUMBER"
]
},
"text": {
"type": "string"
},
"url": {
"type": "string"
},
"phone_number": {
"type": "string"
}
},
"required": [
"type",
"text"
],
"additionalProperties": false
}
}
},
"required": [
"name",
"category",
"body"
],
"additionalProperties": false
}βͺpause_automation(id)
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.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Automation id."
}
},
"required": [
"id"
],
"additionalProperties": false
}π‘create_automation_draft(name, app_key, instance_id, event_key, template_id, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"app_key": {
"type": "string",
"description": "App key from list_connected_apps."
},
"instance_id": {
"type": "integer",
"description": "instance_id from list_connected_apps; needed when the account has more than one store of that app."
},
"event_key": {
"type": "string",
"description": "Event key from list_connected_apps."
},
"template_id": {
"type": "integer",
"description": "WALoops template id from list_templates."
},
"field_mapping": {
"type": "object",
"description": "Template variable number to event field path."
},
"conditions": {
"type": "array"
},
"condition_match": {
"type": "string",
"enum": [
"all",
"any"
]
},
"schedule_type": {
"type": "string",
"enum": [
"immediate",
"delay"
]
},
"schedule_delay_value": {
"type": "integer"
},
"schedule_delay_unit": {
"type": "string",
"enum": [
"minutes",
"hours",
"days"
]
},
"recipient_mode": {
"type": "string",
"enum": [
"auto",
"manual"
]
},
"recipient_phone": {
"type": "string"
},
"action_app_key": {
"type": "string",
"default": "whatsapp"
},
"action_instance_id": {
"type": "integer",
"description": "Action app instance_id from list_connected_apps; needed when there are multiple stores."
},
"action_type": {
"type": "string"
},
"action_config": {
"type": "object"
},
"stage": {
"type": "string"
}
},
"required": [
"name",
"app_key",
"event_key"
],
"additionalProperties": false
}Community
Evidence