WALoops

WhatsApp OTP and WhatsApp Business automation tools for AI assistants

Should I use this

Quality & Safety

A
Description quality
98%
Schema completeness
67%
Naming quality
99%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'get_dashboard_stats' description lacks action verbin get_dashboard_stats

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,123Tokens (tool definitions)
~834 BTypical response size
Moderate attention impact (1.66% of 128k context)

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-http

What it can do

Tool inventory

Tools (20)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded20 tools