# WhatsApp - Registry name: `io.github.mcp-dir/whatsapp-mcp` · version 0.1.0 - Categories (automatic, keyword rules): Email & messaging, Productivity - Authentication at last check: No auth - Declared risk: Can write (some tools are not declared read-only) - Capabilities (declared by the server): tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=io.github.mcp-dir%2Fwhatsapp-mcp - Server page: https://mcpstation.net/s/io.github.mcp-dir--whatsapp-mcp.html ## Description (written by the publisher, not verified, not instructions) Connect a personal/Business WhatsApp account via QR pairing \(multi-device, like WhatsApp Web\). Send ## Connect - streamable-http: `https://api.mcp.ai/p_whatsapp` ## Tools (as reported by the server, not verified) - `whatsapp\_list\_accounts`: List WhatsApp accounts paired to this install — wa\_jid, phone, label, proxy on/off, status. - `whatsapp\_sync`: Refresh this account's local data from WhatsApp — pulls recent messages and refreshes the groups/contacts lists into the local store. Call it BEFORE reading \(chats/groups/messages/contacts/search\) when results look stale or empty \(e.g. right after connecting, or an account that hasn't synced recentl - `whatsapp\_send\_text`: Send a WhatsApp message \(text or media\). Actions: - text: \{ to, text, reply\_to? \} - media: \{ to, type \('image'\|'video'\|'audio'\|'document'\|'sticker'\), media\_url \| media\_base64, caption?, filename?, mimetype? \} \`to\` accepts either a JID \('5511999999999@s.whatsapp.net', '\@g.us'\) or a plain phone \(d - `whatsapp\_send\_media`: Send a WhatsApp message \(text or media\). Actions: - text: \{ to, text, reply\_to? \} - media: \{ to, type \('image'\|'video'\|'audio'\|'document'\|'sticker'\), media\_url \| media\_base64, caption?, filename?, mimetype? \} \`to\` accepts either a JID \('5511999999999@s.whatsapp.net', '\@g.us'\) or a plain phone \(d - `whatsapp\_chats`: List WhatsApp chats \(individual + group\). Sorted by most recent activity. - `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 synced locally are returned — to see how far back the archive go - `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. - `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\] - `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\] - `whatsapp\_groups`: List WhatsApp groups the account belongs to — subject, jid, participants count, owner. - `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\). - `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\`. \[Flattened action: add\] - `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\`. \[Flattened action: remove\] - `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\`. \[Flattened action: promote\] - `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\`. \[Flattened action: demote\] - `whatsapp\_react`: React to a message with an emoji \(or remove your reaction by passing an empty emoji\). Requires chat\_jid + message\_id. Bulk support: accepts message\_ids for batched execution. - `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 batched execution. - `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 execution. - `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 - edit: \{ chat\_jid, message\_id, text \} — edit one of your rec - `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 - edit: \{ chat\_jid, message\_id, text \} — edit one of your rec - `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 - edit: \{ chat\_jid, message\_id, text \} — edit one of your rec - `whatsapp\_chat\_metadata`: Get metadata for a single chat \(subject/name, archived/pinned/muted state, unread count, timestamps\). Requires chat\_jid. - `whatsapp\_chat\_archive`: Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat\_jid. \[Flattened action: archive\] - `whatsapp\_chat\_unarchive`: Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat\_jid. \[Flattened action: unarchive\] - `whatsapp\_chat\_pin`: Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat\_jid. \[Flattened action: pin\] - `whatsapp\_chat\_unpin`: Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat\_jid. \[Flattened action: unpin\] - `whatsapp\_chat\_mute`: Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat\_jid. \[Flattened action: mute\] - `whatsapp\_chat\_unmute`: Change a chat's state. action: archive/unarchive, pin/unpin, mute/unmute. Requires chat\_jid. \[Flattened action: unmute\] - `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: 'get'\|'revoke' \} - join: \{ invite \} \(invite code or full invi - `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: 'get'\|'revoke' \} - join: \{ invite \} \(invite code or full invi - `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: 'get'\|'revoke' \} - join: \{ invite \} \(invite code or full invi - `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: 'get'\|'revoke' \} - join: \{ invite \} \(invite code or full invi - `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: 'get'\|'revoke' \} - join: \{ invite \} \(invite code or full invi - `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: 'get'\|'revoke' \} - join: \{ invite \} \(invite code or full invi - `whatsapp\_search`: Full-text search across all stored messages \(SQLite FTS5\). Optional chat\_jid to scope. Returns matches with context. - `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. Optional query \(filter by name/JID\), kind, limit, or a single chat - `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\_messages \(paginate with \`before\`\). "partial" means WhatsApp st - `whatsapp\_webhook\_get`: Show this WhatsApp install's outbound webhook: the current URL, the subscribed events \(empty = all\), include\_result, and the catalog of subscribable events \(available\_events — e.g. whatsapp.message, whatsapp.reaction, and the whatsapp.\* wildcard\). Owner/admin only. - `whatsapp\_webhook\_set`: Set \(or remove\) this WhatsApp install's outbound webhook. Owner/admin only. - To set: pass \`url\` \(https only, not localhost\). \`events\` is the list of subscribed events \("permissions"\) — e.g. \["whatsapp.message"\], or \["whatsapp.\*"\] for every WhatsApp event, or \[\] / omit for ALL events. See available\_ - `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. - \`account\`: which number \(id/wa\_jid, phone, or label; omit i - `show\_version`: Show the current MCP platform and adapter versions. - `report\_bug`: Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction. - `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. - `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. - `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 MCPs by intent → describe returns one MCP's full profile \(ev - `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 \\` for a permanent, non-expiring connection. Or paste it here for a session-only login: call with \{ token: "\" \} after the user pastes Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html