WhatsApp Use

MCP tools

Reference for WhatsApp tools exposed by the remote MCP server.

The WhatsApp MCP server exposes a compact set of agent-facing tools. Older low-level tools may still be callable for compatibility, but agents should follow the tools below.

Every MCP grant includes mcp:whatsapp for the selected connection. Read grants add whatsapp:read for inbox, message, contact, group, and media tools. Write grants add whatsapp:write for send, reaction, edit, delete, mark-read, group, and participant-update tools.

Read tools return compact records by default: IDs, names, conversation titles, counts, timestamps, and short previews. Use opt-in fields such as include_details, include_participants, or include_message_body only when the task needs full participant lists or full message text. Detailed responses are still sanitized; raw media keys, hashes, direct paths, and transport URLs are not exposed through MCP read tools.

Golden path for agents

Use these tools first:

User intentStart withThen use
Check setup, pairing, scopes, or sync readinesswhatsapp_get_startedFollow recommended_next_tools.
Triage unread chats or answer "what needs my attention?"whatsapp_inbox_overviewwhatsapp_get_thread_context, whatsapp_list_messages, or whatsapp_mark_conversation_read.
The user names a person, phone number, group, or chat for reading or sendingwhatsapp_resolve_conversationwhatsapp_get_conversation, whatsapp_list_messages, whatsapp_send_message, or whatsapp_send_image.
The user asks for a person's phone number, direct chats, or shared groupswhatsapp_resolve_personwhatsapp_query, whatsapp_resolve_conversation, or whatsapp_list_messages.
Understand a specific messagewhatsapp_get_thread_contextwhatsapp_reply_to_message, whatsapp_react_to_message, or whatsapp_mark_conversation_read if the user asks.
Send an imagewhatsapp_resolve_conversationwhatsapp_send_image with the resolved conversation_id or contact_id.
Search message textwhatsapp_search_messageswhatsapp_get_thread_context for any matching message that needs context.
Ask counts, rankings, or exploratory questionswhatsapp_queryUse compact filters such as participant_query, sort_by, fields, from_me, or direction.

Use write tools only when the user clearly asks for the action.

Setup

ToolRequired scopeDescription
whatsapp_get_startedmcp:whatsappFirst-call tool for setup, pairing, scope, and sync readiness. Returns recommended next tools.

WhatsApp pairing and account management happen in the dashboard, not through normal agent tools.

Inbox and conversation discovery

ToolRequired scopeRequired argumentsDescription
whatsapp_inbox_overviewwhatsapp:readNoneFirst triage tool for unread counts, actionable chats, unread mentions, sync state, and recommended follow-ups.
whatsapp_resolve_conversationwhatsapp:readqueryResolve a name, phone number, group title, chat name, contact, or JID into ranked compact conversation/contact targets, including contact-only targets that do not have an existing conversation yet, such as Pally Test.
whatsapp_resolve_personwhatsapp:readqueryResolve a person, contact, phone number, or JID into compact identity candidates, known phone/LID identifiers, direct chats, and shared groups. Use for questions like "what is their phone number?" or "what groups am I in with them?"
whatsapp_querywhatsapp:readentityCanonical read-only query tool for counts, rankings, contact lookup, retained message search, and exploratory questions over synced state. Compact by default. It is not SQL.
whatsapp_list_conversationswhatsapp:readNoneCanonical list/filter tool for browsing compact conversations by unread, archived, direct/group, mute, search, and sort state.
whatsapp_get_conversationwhatsapp:readconversation_id or chat_jidGet one compact conversation with unread state and latest-message preview. Use include_participants or include_details only when needed.

Messages and context

ToolRequired scopeRequired argumentsDescription
whatsapp_list_messageswhatsapp:readconversation_idList compact message previews in a known conversation. Use whatsapp_resolve_conversation first for named chats.
whatsapp_search_messageswhatsapp:readquerySearch message contents by text, sender, conversation, and time range. Returns compact hits by default.
whatsapp_get_thread_contextwhatsapp:readmessage_id or wa_message_idCanonical context tool for a specific message. Includes compact nearby messages and reply-chain context.
whatsapp_list_mentionswhatsapp:readNoneList messages that mention the paired user, or a specific mentioned JID.
whatsapp_list_shared_itemswhatsapp:readNoneList compact files, images, locations, contact cards, polls, events, calls, and pinned/kept-message events.
whatsapp_list_important_messageswhatsapp:readNoneList compact starred, pinned-in-chat, and kept-in-chat messages.
whatsapp_get_group_infowhatsapp:readconversation_id or chat_jidGet compact group metadata. Use include_participants or include_details only when needed.
whatsapp_download_mediawhatsapp:readmessage_idDownload small media as base64 plus MIME metadata. Larger files should be streamed from GET /v1/whatsapp/media/{message_id}.

Open-ended read-only queries

Use whatsapp_query when the user asks analytical or exploratory questions over synced WhatsApp state and there is no single named chat target yet.

Examples:

{ "entity": "conversations", "kind": "group", "aggregate": "count" }
{ "entity": "conversations", "kind": "group", "participant_query": "Haz" }
{ "entity": "conversations", "kind": "group", "sort_by": "participant_count", "fields": ["title", "participant_count"], "limit": 10 }
{ "entity": "messages", "conversation_id": "conv_...", "from_me": true, "aggregate": "count" }
{ "entity": "contacts", "query": "Haz", "named_only": true }

Use whatsapp_resolve_conversation instead when the agent needs a target for reading, sending, or media actions.

Messages

ToolRequired scopeRequired argumentsDescription
whatsapp_send_messagewhatsapp:writetext plus conversation_id or contact_idSend a WhatsApp text message. Resolve ambiguous recipients first with whatsapp_resolve_conversation.
whatsapp_reply_to_messagewhatsapp:writemessage_id, text, plus conversation_id or toReply to a specific WhatsApp message.
whatsapp_send_imagewhatsapp:writeimage_base64, mime_type, plus conversation_id, contact_id, or toSend a WhatsApp image with an optional caption.
whatsapp_react_to_messagewhatsapp:writemessage_id plus conversation_id or toReact to a message. Empty emoji clears the reaction.
whatsapp_edit_messagewhatsapp:writemessage_id, text, plus conversation_id or toEdit a sent message.
whatsapp_delete_messagewhatsapp:writemessage_id plus conversation_id or toDelete or revoke a sent message.
whatsapp_mark_conversation_readwhatsapp:writeconversation_id or chat_jidMark all unread messages in a conversation as read.

Groups

ToolRequired scopeRequired argumentsDescription
whatsapp_create_groupwhatsapp:writename, participantsCreate a WhatsApp group. Optional announce and locked.
whatsapp_update_group_participantswhatsapp:writegroup_jid, participants, actionAdd, remove, promote, or demote group participants.

Example tool request

{
  "name": "whatsapp_send_message",
  "arguments": {
    "contact_id": "14155550123@s.whatsapp.net",
    "text": "Hello from an MCP client"
  }
}

Tool availability depends on the OAuth grant scopes and the selected connection.

On this page