Connect your AI agent to your own WhatsApp

A WhatsApp MCP server for Claude, Cursor and Codex. Link the number you already use, and your agent picks up new messages and answers them the way you would, using the notes you give it.

Invite only. Your own number, no server to run, and your phone keeps the power to unlink.

Claude Codewhatzmcp connected
From now on you answer the WhatsApp on workshop days. The notes say which bikes are ready for pickup. Custom builds and their prices go to me first, not to the customer.
Waited for new messages1 from Marcus, 10:41
Replied to Marcus from your number10:42
Waiting for the next message
Works with
  • Claude Code
  • Cursor
  • Codex
  • OpenClaw

Claude desktop too, and any other MCP client that can send a header over Streamable HTTP.

Set it up once

One line in your agent, one QR scan on your phone, one instruction in plain words. There is no server of your own to run.

Claude CodeCodexCursorOpenClaw
# the address and the key come with your invite
claude mcp add --transport http whatzmcp <address> \
  --header "X-API-Key: $WHATZMCP_API_KEY"

> link my WhatsApp
Opened a page with a QR code. On your phone: Linked devices, Link a device, scan it.
Linked. The number ending in 44 is connected.

> From now on you answer the WhatsApp on workshop days. The notes say which bikes are ready for pickup. Custom builds and their prices go to me first, not to the customer.
Understood. Waiting for new messages.  Friday 09:58

Codex: codex mcp add with a bearer token variable. Cursor: url and headers in mcp.json. Claude desktop: the mcp-remote bridge in its config file, or a custom connector. OpenClaw: Settings, MCP, or the config file, 2026.5.12 or later. Full steps are in the docs that come with the invite.

1

Add whatzmcp to your agent

One line in Claude Code or Codex, two in Cursor's mcp.json, a config file entry or a custom connector in Claude desktop, a settings screen in OpenClaw. The address and the key come with your invite.

2

Link the number you already use

Ask your agent to link your WhatsApp. It opens a page with a QR code; on your phone go to Linked devices, Link a device, and scan. An eight character code works instead. Chats stay on your phone.

3

Tell it what to do, in plain words

Brief it the way you would brief a person: what to answer from, what to leave to you. Your agent decides what to say; whatzmcp never writes or sends a message on its own.

Six things it does from your number

Reply from your own numberText plus one photo, video, audio file or document, to a phone number or a contact it already knows.
Pick up every new message as it arrivesThe agent waits for messages and gets them the moment they land. No server, no webhook needed for this.
Read earlier messages so replies fitBoth directions, newest first, so the answer continues the conversation.
Check whether a reply was delivered or readSent, delivered, read, or failed with the reason, such as a number not on WhatsApp.
Know its limits before it hits themSends and new people left for today, per account, so it can plan instead of being refused.
Tell your other tools what happenedSigned webhook events, from a message received to a limit reached. Optional.

From the tool list and the webhooks page in the docs that come with the invite.

The limits are part of the product

They run on the server and no setting turns them off. They keep a linked number within what one person with a phone would do.

Answering people who wrote first is what it is forThose replies are not held back by the limit on new people.
New conversations are rationedA number can open a small number of chats a day with people who never wrote, and the agent can see how many are left before it writes.
A freshly linked number starts slowlyNo new conversations on its first days, then a little more each day up to the ration.
There is a ceiling on sends per day, replies includedThe agent knows where it stands before it writes, so it plans instead of being refused.
It does not nagAfter a few messages to someone who has not answered, it waits for their reply.
The same opener to a handful of strangers pauses the accountSending stays paused until someone has looked at it.
Claude CodeSaturday 16:40
Tried to message a number that never wroterefused
Today's ration of new people is used up. Try again in 7 h 20 min. Replies to people who wrote first still go out.

The exact figures are on the limits page of the docs that come with the invite. Daily counts reset once a day, and a refusal says when to try again.

By invite, for people who already run an agent

Solo founders, small teams and agency operators. One email when your spot opens; the address and the key come with it.

Invite only. Your own number, no server to run, and your phone keeps the power to unlink.

whatzmcpto YaraToday, 09:12
Your whatzmcp invite

Hi Yara, your spot is open. Everything you need is below; keep this email.

Address••••••••••••••••••••Copy
Key••••••••••••••••••••Show
DocsSetup for every client, and the limits page
QuestionsReply in this thread
Not in it: a price, because prices are not published yet, or a new phone number. It is the one you have.
Claude CodeFriday 11:23
From now on you answer the WhatsApp on workshop days. The notes say which bikes are ready for pickup. Custom builds and their prices go to me first, not to the customer.
Waited for new messages1 from Kofi, 11:20
Kofi asks what a custom gravel build on his own steel frame would cost. Your brief says custom builds and prices go to you first. What should I tell him?
tell him I will call after 2
Replied to Kofi from your number11:23
Read by Kofi11:24
Waiting for the next message

You decide how far it goes

Your agent follows the brief you gave it. Ask it to check with you first, let it run, or unlink the number from your phone.

Check firstTell it which replies to run past you. It asks in its own session, you answer, it sends. Kofi got his answer at 11:23 that way.
Unlink any timeRemove the device under Linked devices on your phone, or ask your agent to disconnect. Chats stay on your phone.
Stop means stopA person who replies STOP gets no further messages from your number through whatzmcp.
Nothing on its ownwhatzmcp never writes or sends a message on its own. No message leaves without your agent asking for it.

What people ask before they link a number

Every answer comes from the help docs. If yours is missing, ask in your invite thread.

What is a WhatsApp MCP server?

An MCP server is how an AI client such as Claude, Cursor, Codex or OpenClaw gets tools. whatzmcp gives your agent WhatsApp tools: see the linked number, wait for new messages, send a reply with text and one photo, file or document, check whether it was delivered or read, and see what is left of today's limits. Your agent decides what to say; whatzmcp never writes or sends a message on its own.

How do I connect Claude to WhatsApp?

Scan one QR code on your phone under Linked devices, then add whatzmcp to Claude desktop through its config file with the mcp-remote bridge, or as a custom connector with a request header if your account has that option. The address and the key come with your invite. Claude Code takes one command in the terminal. There is nothing to host.

Can Claude Code send and read WhatsApp messages?

Yes. Once added, Claude Code sees the whatzmcp tools: it can wait for new messages, read them, reply from your number with text plus one attachment, and check delivery. It acts on the instructions you give it, nothing else.

How do I connect OpenClaw to WhatsApp?

In the OpenClaw control UI open Settings, then MCP, and add whatzmcp with the address and the key from your invite, or add it in the config file. Use OpenClaw 2026.5.12 or later. A probe command then checks the connection.

Will my WhatsApp number get banned if an AI agent uses it?

Nobody can promise an account will never be restricted. whatzmcp links your number the way WhatsApp Web does, which is not the official WhatsApp Business API, and WhatsApp can disconnect or ban a number used for unsolicited messages. That is why every account has limits that run on the server: a ceiling on sends per day, a small ration of new people per day, a slow start for a freshly linked number, a wait after a few unanswered messages to one person, and a pause of the whole account when the same opener goes to a handful of strangers in a short time. The exact figures are in the docs that come with the invite. Reply to people who write to you and the risk stays low.

Does it work with ChatGPT or Cursor?

Cursor works: add the address and the key to its MCP settings. Codex and Claude Code work from the terminal, Claude desktop through a connector, and so does any other MCP client that can send a header over Streamable HTTP. ChatGPT does not work yet: its connectors cannot send a key, and a sign in for them is planned.

Do I need a server or webhooks to receive messages?

No. Your agent asks whatzmcp to wait for new messages; the request stays open for a short while and returns the moment something arrives, with a cursor so nothing is missed while the agent was closed. Signed webhooks exist for people who want them, but they are optional.

Can my agent message people who never wrote to me?

A few a day. Each account can start a small number of conversations with people who never wrote, a freshly linked number gets none on its first days and then a little more each day, and the agent can see how many are left before it writes. Replies to people who wrote first are not limited by this. Cold messages to bought or scraped lists are not allowed. The figures are in the docs that come with the invite.

Claude Code
> /mcp
whatzmcp  connected  Streamable HTTP, key in a header
accountslink a number by QR code or an eight character code, see its status and what is left of today's limits, unlink messageswait for new messages (the request stays open, returns the moment one lands, with a cursor so none are missed), send text plus one photo, video, audio file or document, check whether a message was sent, delivered, read or failed usagesends and new people left today, and the day of the slow start webhooksadd, test, check health, pause after repeated failures, enable again; signed events for a message received, sent, delivered, read or failed, and for a number connected, disconnected, restricted or at its limit restthe same operations plus message history, newest first; OpenAPI document included
# every answer starts with the HTTP status, then the JSON body
# a daily refusal says how long to wait before trying again

What /mcp shows once the server is added. The names of the tools, the request and response shapes and the OpenAPI document are in the docs that come with the invite.

The plumbing, in one screen

For whoever sets it up: one transport, a key in a header, the same operations over REST, signed webhooks for anyone who wants them.

  • TransportStreamable HTTP only. No SSE, no stdio. Clients that cannot send a header use the mcp-remote bridge.
  • AuthX-API-Key header or Authorization: Bearer. Keys in the URL are refused.
  • ToolsOne per operation: accounts, waiting for messages, sending, delivery, usage, webhooks. The full list comes with the invite.
  • RESTThe same operations plus message history, newest first. OpenAPI document included. A refusal carries the reason and, for daily limits, when to retry.
  • WebhooksSigned events for messages and account changes, a test send, health, auto pause after repeated failures, enable again.
  • DashboardLink WhatsApp, create and revoke keys, add and test webhooks, see messages and usage.

From the tool list, the transport and the webhooks pages in the docs that come with the invite.

An agent behind your WhatsApp number

Invite only. Your own number, no server to run, and your phone keeps the power to unlink.

Great, I will come by at 510:42
See you at 5, Marcus.10:42
10:42sent by your agent, from your number