WhatsApp MCP server on the official Cloud API

In short: ZapClaw publishes an MCP server so the AI agents your business builds can read and send WhatsApp messages on your own number. It runs on Meta's official Cloud API, every send passes the same guards as the REST API, and the number keeps working in the WhatsApp Business app on your phone.

Beta: the MCP server and AI agent keys are in beta and are not yet available to every account. Access opens gradually, soon.

Create your AI agent key in the dashboard, then add the server to the client your agent runs in.

Create account See the install steps

What your agents can do

These are your own agents, working for your own customers on your own number.

Your number keeps working in the app

ZapClaw connects the number through WhatsApp Coexistence, so your team keeps answering in the WhatsApp Business app while your agents use the same number through the official API. When someone from your team replies from the app, an autonomous key stops sending to that contact for 24 hours by default, so the agent does not talk over a person.

What you need to connect a number.

Install it in your client

First create an AI agent key (see Creating an AI agent key). The package is @zapclaw/whatsapp-mcp, the remote endpoint is https://mcp.zapclaw.app/mcp and the registry name is app.zapclaw/whatsapp. Keep the key out of shared files: use an environment variable, a key file or a prompt, as in the blocks below.

Claude Code (stdio)

claude mcp add zapclaw --env ZAPCLAW_API_KEY_FILE=/path/to/zapclaw.key -- npx -y @zapclaw/whatsapp-mcp@1

For a project you share, use .mcp.json with an expansion, so the key never lands in the repository.

{
  "mcpServers": {
    "zapclaw": {
      "command": "npx",
      "args": [
        "-y",
        "@zapclaw/whatsapp-mcp@1"
      ],
      "env": {
        "ZAPCLAW_API_KEY": "${ZAPCLAW_API_KEY}"
      }
    }
  }
}

On native Windows the command is cmd and the arguments are ["/c", "npx", "-y", "@zapclaw/whatsapp-mcp@1"].

Claude Code (remote)

claude mcp add --transport http zapclaw https://mcp.zapclaw.app/mcp --header "X-API-Key: ${ZAPCLAW_API_KEY}"

Claude Desktop

Download zapclaw-whatsapp.mcpb from the GitHub releases and open it. Claude Desktop asks for the key as a sensitive field and keeps it. The JSON configuration is the alternative:

{
  "mcpServers": {
    "zapclaw": {
      "command": "npx",
      "args": [
        "-y",
        "@zapclaw/whatsapp-mcp@1"
      ],
      "env": {
        "ZAPCLAW_API_KEY": "${ZAPCLAW_API_KEY}"
      }
    }
  }
}

Cursor

In ~/.cursor/mcp.json, either the local server:

{
  "mcpServers": {
    "zapclaw": {
      "command": "npx",
      "args": [
        "-y",
        "@zapclaw/whatsapp-mcp@1"
      ],
      "env": {
        "ZAPCLAW_API_KEY": "${env:ZAPCLAW_API_KEY}"
      }
    }
  }
}

Or, in .cursor/mcp.json, the remote one:

{
  "mcpServers": {
    "zapclaw": {
      "url": "https://mcp.zapclaw.app/mcp",
      "headers": {
        "X-API-Key": "${env:ZAPCLAW_API_KEY}"
      }
    }
  }
}

VS Code

In .vscode/mcp.json, with a password prompt instead of a stored key:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "zapclaw-key",
      "description": "ZapClaw AI agent key",
      "password": true
    }
  ],
  "servers": {
    "zapclaw": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@zapclaw/whatsapp-mcp@1"
      ],
      "env": {
        "ZAPCLAW_API_KEY": "${input:zapclaw-key}"
      }
    }
  }
}

Codex

In ~/.codex/config.toml:

[mcp_servers.zapclaw]
command = "npx"
args = ["-y", "@zapclaw/whatsapp-mcp@1"]

[mcp_servers.zapclaw.env]
ZAPCLAW_API_KEY_FILE = "/path/to/zapclaw.key"

n8n

Use the MCP Client Tool node with these settings:

The contact's message already reaches your flow through the ZapClaw webhook, so the agent can reply without the conversation tools. The n8n flow, ready to import.

OpenAI Responses API

{
  "type": "mcp",
  "server_label": "zapclaw",
  "server_url": "https://mcp.zapclaw.app/mcp",
  "authorization": "<agent key>",
  "require_approval": "always"
}

The key travels with each request through OpenAI, so use a key limited to the numbers and permissions the agent needs.

Pin the version

Every block above follows the major version, @zapclaw/whatsapp-mcp@1. If you want no automatic updates, use the exact form, @zapclaw/whatsapp-mcp@1.0.0.

Sign in with OAuth (claude.ai, ChatGPT and others)

Clients that sign you in instead of holding a key connect to the same address, https://mcp.zapclaw.app/mcp. You sign in to ZapClaw, approve the connection, choose the numbers and permissions it gets, and can revoke it at any time under Connected apps in the dashboard. No key is copied anywhere.

An access token is issued for one resource only, https://mcp.zapclaw.app/mcp, and is refused anywhere else. A connection lasts at most 90 days, after which you sign in again.

A client that registers itself may use redirect addresses that are https URLs, or http URLs on localhost or 127.0.0.1 for apps that run on your computer. Any other address is refused, so a sign-in can only return to the app you approved.

The eleven tools

Each tool needs one permission on the key: reading account details, reading conversations or sending messages.

Tool What it does Permission
zapclaw_whoamiShows which account the key connects to, with its mode and permissions.account:read
whatsapp_list_numbersLists the WhatsApp numbers the key may use.account:read
whatsapp_list_templatesLists the approved templates, with the length limit of each variable.account:read
whatsapp_check_contactChecks a contact before sending: whether the 24-hour window is open and whether the contact stopped marketing messages.account:read
whatsapp_list_conversationsLists the recent conversations.conversations:read
whatsapp_read_conversationReads one conversation.conversations:read
whatsapp_send_textSends a text message inside the 24-hour window.messages:send
whatsapp_send_templateSends an approved template, also outside the window.messages:send
whatsapp_send_mediaSends an image, a document or another file by https link, inside the window.messages:send
whatsapp_mark_readMarks a received message as read.messages:send
whatsapp_get_send_statusChecks whether a send was delivered, read or failed.account:read

Built so an agent cannot burn your number

The rules below run on the ZapClaw server for every send, from any client, including a plain curl. A client can also ask a person to confirm each send, but nothing depends on it.

How approvals work

When a rule asks for a person, the message is not sent. The tool answers that the send is held and gives an approval link and a short code. Open the approval page in the dashboard, read the whole message, the recipient, the number and the reasons, and choose Approve and send or Reject.

Approval page of a held send, with the code, the sending number, the recipient, the reasons, the full message and the Approve and send and Reject buttons Approval page of a held send, with the code, the sending number, the recipient, the reasons, the full message and the Approve and send and Reject buttons

Creating an AI agent key

  1. In the dashboard, open API keys and choose Create AI agent key.
  2. Name the key and pick its mode: Assistant for an AI assistant such as Claude, ChatGPT, Cursor or Codex with a person in the loop, or Autonomous for an automation such as n8n that runs with nobody watching.
  3. Choose what the key can do (read account details, read conversations, send messages) and which numbers it may use. Autonomous keys start without conversation reading.
  4. Copy the key, which is shown once, into an environment variable or a key file.

The guard protects the sends made through ZapClaw; an agent that can read conversations and also browse the web or run commands can carry what it read elsewhere, so give reading only to the agents that need it.

Questions

How is this different from Meta's own WhatsApp MCP server?

Meta's server is in beta, needs admin access to your Meta app and is described by Meta as meant for development and testing. ZapClaw's is built for the agents you run in production: guards on every send, approval in the dashboard, and the number kept in the WhatsApp Business app.

And the unofficial WhatsApp MCP servers?

Those servers drive WhatsApp Web, which goes against WhatsApp's terms and puts the number at risk of being banned. ZapClaw uses Meta's official Cloud API.

Does the MCP server have its own price?

No. Sends are billed like any other API send, and Meta bills its WhatsApp message fees to you directly. Every plan and price.

Which plans include it?

All of them, once access reaches your account: the server is in beta and opens to accounts gradually. Messages sent by an agent count toward your plan's message allowance, like any API send.

Can I offer a general-purpose AI assistant to the public with it?

No. The server is for the agents a business builds for its own customers. Since January 15, 2026, Meta lets providers of general-purpose AI assistants offer them on WhatsApp only where Meta is legally required to permit it, while other businesses keep the existing pricing.

Connect your agents to your WhatsApp number

Connect your number, create an AI agent key and add the server to your client.

Create account Read the documentation