WhatsApp is a remote MCP server that gives an AI agent 47 tools, among them authenticate, connect, marketplace. It answers at https://api.mcp.ai/p_whatsapp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 11 September 2026; the last check, on 22 October 2026, succeeded.
Connect a personal/Business WhatsApp account via QR pairing (multi-device, like WhatsApp Web). Send
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
authenticate | MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header `Authorization: Bearer <token>` for a permanent, non-expiring connection. Or paste it here for a session-on Inputs: token |
connect | Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns connect_url for the toolkit and per-install URLs. |
marketplace | The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like "find an MCP that does X", "consulta um CPF", "is there a tool for Y". Core flow: action=search discovers Inputs: action, query, mcp_id, limit, tier_slug, immediate |
report_bug | Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction. Inputs: message, context, conversation |
show_version | Show the current MCP platform and adapter versions. |
toolkit_info | Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes. |
whatsapp_chat_archive | Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: archive] Inputs: chat_jid, duration_secs, account |
whatsapp_chat_metadata | Get metadata for a single chat (subject/name, archived/pinned/muted state, unread count, timestamps). Requires chat_jid. Inputs: chat_jid, account |
whatsapp_chat_mute | Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: mute] Inputs: chat_jid, duration_secs, account |
whatsapp_chat_pin | Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: pin] Inputs: chat_jid, duration_secs, account |
whatsapp_chat_unarchive | Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: unarchive] Inputs: chat_jid, duration_secs, account |
whatsapp_chat_unmute | Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: unmute] Inputs: chat_jid, duration_secs, account |
whatsapp_chat_unpin | Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat_jid. [Flattened action: unpin] Inputs: chat_jid, duration_secs, account |
whatsapp_chats | List WhatsApp chats (individual + group). Sorted by most recent activity. Inputs: limit, archived, account |
whatsapp_config_get | Show this install's editable-after-connect settings per connected number — currently the proxy (proxy_url): whether it's set and a masked preview (the raw value is never returned). Owner/admin or the connection owner. |
whatsapp_config_set | Change an editable-after-connect setting on a connected number WITHOUT re-pairing. Today the only field is `proxy_url` — the SOCKS5/HTTPS proxy WhatsApp connects through (recommended to avoid IP bans). Owner/admin or the connection owner. - Inputs: account, values |
whatsapp_contacts_get | Read WhatsApp contacts. Actions: - list: search across contacts (query optional — substring on name/phone). Default limit 50. - get: full contact info by JID. [Flattened action: get] Inputs: query, limit, jid, account |
whatsapp_contacts_list | Read WhatsApp contacts. Actions: - list: search across contacts (query optional — substring on name/phone). Default limit 50. - get: full contact info by JID. [Flattened action: list] Inputs: query, limit, jid, account |
whatsapp_group_manage_create | Group lifecycle/admin (the connected account must be a group admin for most actions). Actions: - create: { name, participants[] } - leave: { group_jid } - update: { group_jid, name?, description? } - invite_link: { group_jid, link_action: ' Inputs: group_jid, name, description, participants, link_action, invite |
whatsapp_group_manage_invite_link | Group lifecycle/admin (the connected account must be a group admin for most actions). Actions: - create: { name, participants[] } - leave: { group_jid } - update: { group_jid, name?, description? } - invite_link: { group_jid, link_action: ' Inputs: group_jid, name, description, participants, link_action, invite |
whatsapp_group_manage_join | Group lifecycle/admin (the connected account must be a group admin for most actions). Actions: - create: { name, participants[] } - leave: { group_jid } - update: { group_jid, name?, description? } - invite_link: { group_jid, link_action: ' Inputs: group_jid, name, description, participants, link_action, invite |
whatsapp_group_manage_leave | Group lifecycle/admin (the connected account must be a group admin for most actions). Actions: - create: { name, participants[] } - leave: { group_jid } - update: { group_jid, name?, description? } - invite_link: { group_jid, link_action: ' Inputs: group_jid, name, description, participants, link_action, invite |
whatsapp_group_manage_requests | Group lifecycle/admin (the connected account must be a group admin for most actions). Actions: - create: { name, participants[] } - leave: { group_jid } - update: { group_jid, name?, description? } - invite_link: { group_jid, link_action: ' Inputs: group_jid, name, description, participants, link_action, invite |
whatsapp_group_manage_update | Group lifecycle/admin (the connected account must be a group admin for most actions). Actions: - create: { name, participants[] } - leave: { group_jid } - update: { group_jid, name?, description? } - invite_link: { group_jid, link_action: ' Inputs: group_jid, name, description, participants, link_action, invite |
whatsapp_group_members | List the members of a WhatsApp group (live). Returns each participant's JID, phone, and admin/super-admin flag. Requires group_jid (…@g.us, from whatsapp_groups). Inputs: group_jid, account |
whatsapp_group_participants_add | Manage participants of a WhatsApp group (the connected account must be a group admin). action: 'remove' kicks members, 'promote' makes them admin, 'demote' removes admin, 'add' invites. Pass 1–50 phone numbers (+E164) or JIDs in `users`. [F Inputs: group_jid, users, account |
whatsapp_group_participants_demote | Manage participants of a WhatsApp group (the connected account must be a group admin). action: 'remove' kicks members, 'promote' makes them admin, 'demote' removes admin, 'add' invites. Pass 1–50 phone numbers (+E164) or JIDs in `users`. [F Inputs: group_jid, users, account |
whatsapp_group_participants_promote | Manage participants of a WhatsApp group (the connected account must be a group admin). action: 'remove' kicks members, 'promote' makes them admin, 'demote' removes admin, 'add' invites. Pass 1–50 phone numbers (+E164) or JIDs in `users`. [F Inputs: group_jid, users, account |
whatsapp_group_participants_remove | Manage participants of a WhatsApp group (the connected account must be a group admin). action: 'remove' kicks members, 'promote' makes them admin, 'demote' removes admin, 'add' invites. Pass 1–50 phone numbers (+E164) or JIDs in `users`. [F Inputs: group_jid, users, account |
whatsapp_groups | List WhatsApp groups the account belongs to — subject, jid, participants count, owner. Inputs: account |
whatsapp_history_backfill | Request OLDER messages for a chat from your phone (on-demand history sync), extending what whatsapp_messages can read. Returns { status, messages_added }: - "done"/"partial": it pulled messages_added new messages — read them via whatsapp_me Inputs: chat_jid, count, requests, account |
whatsapp_history_coverage | Show how far back the LOCAL message archive reaches per chat (oldest_ts, newest_ts, message_count, status). Use it to find pagination boundaries for whatsapp_messages and to decide whether to pull more with whatsapp_history_backfill. Option Inputs: query, kind, limit, chat_jid, account |
whatsapp_list_accounts | List WhatsApp accounts paired to this install — wa_jid, phone, label, proxy on/off, status. Inputs: account |
whatsapp_message_delete | Manage a message you can act on. Actions: - delete: { chat_jid, message_id, for_everyone? (default true) } — delete for everyone (your msg) or just for you - forward: { chat_jid, message_id, to } — forward a stored message to another chat - Inputs: chat_jid, message_id, for_everyone, to, text, account |
whatsapp_message_edit | Manage a message you can act on. Actions: - delete: { chat_jid, message_id, for_everyone? (default true) } — delete for everyone (your msg) or just for you - forward: { chat_jid, message_id, to } — forward a stored message to another chat - Inputs: chat_jid, message_id, for_everyone, to, text, account |
whatsapp_message_forward | Manage a message you can act on. Actions: - delete: { chat_jid, message_id, for_everyone? (default true) } — delete for everyone (your msg) or just for you - forward: { chat_jid, message_id, to } — forward a stored message to another chat - Inputs: chat_jid, message_id, for_everyone, to, text, account |
whatsapp_messages | List messages in a chat from LOCAL history. Requires chat_jid (from whatsapp_chats). Paginate backwards by passing the oldest message's timestamp as `before` (ISO 8601); `after` pages forward; `order` sorts. NOTE: only messages already sync Inputs: chat_jid, before, after, since, order, limit |
whatsapp_messages_write | Mark messages as read in a chat. Requires chat_jid. Optional message_id (marks up to this message; omit to mark all unread). Bulk support: accepts message_ids for batched execution. Inputs: chat_jid, message_id, account, message_ids |
whatsapp_poll_create | Send a poll or vote on one. Actions: - create: { to, name, options[] (2–12), selectable_count? } - vote: { chat_jid, message_id, options[] (the option texts to select) } [Flattened action: create] Bulk support: accepts message_ids for batch Inputs: to, name, chat_jid, message_id, options, selectable_count |
whatsapp_poll_vote | Send a poll or vote on one. Actions: - create: { to, name, options[] (2–12), selectable_count? } - vote: { chat_jid, message_id, options[] (the option texts to select) } [Flattened action: vote] Bulk support: accepts message_ids for batched Inputs: to, name, chat_jid, message_id, options, selectable_count |
whatsapp_react, whatsapp_search, whatsapp_send_media, whatsapp_send_text, whatsapp_sync, whatsapp_webhook_get, whatsapp_webhook_set
Every block below points at https://api.mcp.ai/p_whatsapp. Pick your client and copy.
claude mcp add --transport http whatsapp https://api.mcp.ai/p_whatsapp
{
"mcpServers": {
"whatsapp": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.mcp.ai/p_whatsapp"]
}
}
}{
"mcpServers": {
"whatsapp": {
"url": "https://api.mcp.ai/p_whatsapp"
}
}
}{
"servers": {
"whatsapp": {
"type": "http",
"url": "https://api.mcp.ai/p_whatsapp"
}
}
}{
"context_servers": {
"whatsapp": {
"url": "https://api.mcp.ai/p_whatsapp"
}
}
}{
"mcpServers": {
"whatsapp": {
"serverUrl": "https://api.mcp.ai/p_whatsapp"
}
}
}{
"mcpServers": {
"whatsapp": {
"url": "https://api.mcp.ai/p_whatsapp"
}
}
}name: WhatsApp
version: 0.0.1
schema: v1
mcpServers:
- name: WhatsApp
type: streamable-http
url: https://api.mcp.ai/p_whatsapp{
"mcpServers": {
"whatsapp": {
"httpUrl": "https://api.mcp.ai/p_whatsapp"
}
}
}{
"mcpServers": {
"whatsapp": {
"type": "http",
"url": "https://api.mcp.ai/p_whatsapp"
}
}
}{
"mcpServers": {
"whatsapp": {
"url": "https://api.mcp.ai/p_whatsapp"
}
}
}goose://extension?url=https%3A%2F%2Fapi.mcp.ai%2Fp_whatsapp&type=streamable_http&id=whatsapp&name=WhatsApp
It answered our last check on 22 October 2026 in 464 ms. Over 6 checks since 11 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.
47, as returned by the server's own tools/list on 17 September 2026: authenticate, connect, marketplace, report_bug, show_version, toolkit_info, whatsapp_chat_archive, whatsapp_chat_metadata, and 39 more.
It answered our last check on 22 October 2026 in 464 ms. Over 6 checks since 11 September 2026 it answered 6.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://api.mcp.ai/p_whatsapp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: io.github.mcp-dir. Endpoint host: api.mcp.ai. ARD identifier: urn:air:io.github.mcp-dir:mcp:whatsapp-mcp.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.