by mcp.ai in Email & messaging
Connect a personal/Business WhatsApp account via QR pairing (multi-device, like WhatsApp Web). Send
https://api.mcp.ai/p_whatsapp
Last 30 days
- Uptime
- 100%
- Response time
- 186 ms typical, 186 ms slowest 5%
- Last check
- 6 h ago
- Next check
- any minute now
How to call it
Add it to any MCP client that supports remote servers.
{
"mcpServers": {
"whatsapp-4": {
"type": "http",
"url": "https://api.mcp.ai/p_whatsapp"
}
}
}47 tools
- 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 h
- 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 ('[email protected]',
- 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 ('[email protected]',
- 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
- 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
- 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
- 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
- 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:
- 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:
- 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:
- 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:
- 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:
- 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:
- 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, lim
- 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`). "partia
- 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 ev
- 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.
Security scan
- No findings. We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.
Recent checks
| When | Result | HTTP | Time |
|---|---|---|---|
| 6 h ago | Passed | 200 | 186 ms |