WSAPI WhatsApp MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Server port | 3000 |
| NODE_ENV | No | Environment (development, production, test) | development |
| LOG_LEVEL | No | Logging level (error, warn, info, debug) | info |
| WSAPI_API_KEY | Yes | Your WSAPI API key | |
| WSAPI_TIMEOUT | No | Request timeout in milliseconds | 30000 |
| WSAPI_BASE_URL | No | WSAPI base URL | https://api.wsapi.chat |
| WSAPI_INSTANCE_ID | Yes | Your WSAPI instance ID | |
| WSAPI_RETRY_DELAY | No | Delay between retries in milliseconds | 1000 |
| WSAPI_RETRY_ATTEMPTS | No | Number of retry attempts | 3 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| whatsapp_send_textB | Send a text message to a WhatsApp contact or group. Supports mentions, replies, and ephemeral expiration. |
| whatsapp_send_imageB | Send an image message. Provide either data (base64) or url. |
| whatsapp_send_videoB | Send a video message. Provide either data (base64) or url. |
| whatsapp_send_linkC | Send a link message with optional preview. |
| whatsapp_send_reactionA | Send a reaction (emoji) to a message. Send empty string to remove reaction. |
| whatsapp_edit_messageB | Edit a previously sent text message. |
| whatsapp_delete_messageC | Delete a message for all participants. |
| whatsapp_delete_message_for_meB | Delete a message only for yourself. |
| whatsapp_mark_message_readB | Mark a message as read. |
| whatsapp_star_messageB | Star or unstar a message. |
| whatsapp_pin_messageB | Pin or unpin a message in a chat. |
| whatsapp_send_audioC | Send an audio file message. Provide either data (base64) or url. |
| whatsapp_send_voiceC | Send a voice message (PTT). Provide either data (base64) or url. |
| whatsapp_send_documentA | Send a document file. Provide either data (base64) or url. Filename is required. |
| whatsapp_send_stickerB | Send a sticker message (WebP format). Provide either data (base64) or url. |
| whatsapp_send_locationC | Send a location message. |
| whatsapp_send_contactC | Send a contact (vCard) message. Provide either displayName or vcard. |
| whatsapp_get_contactsA | Get list of all WhatsApp contacts. |
| whatsapp_get_contactC | Get information about a specific WhatsApp contact. |
| whatsapp_create_contactB | Create or update a WhatsApp contact. |
| whatsapp_sync_contactsA | Trigger a full contact sync from the WhatsApp server. |
| whatsapp_get_blocklistA | Get the list of all blocked contacts. |
| whatsapp_block_contactC | Block a contact. |
| whatsapp_unblock_contactB | Unblock a contact. |
| whatsapp_get_groupsB | Get list of all WhatsApp groups. |
| whatsapp_create_groupC | Create a new WhatsApp group. |
| whatsapp_get_groupB | Get information about a specific group. |
| whatsapp_update_group_nameB | Update group name. |
| whatsapp_update_group_descriptionC | Update group description. |
| whatsapp_set_group_pictureB | Set group profile picture. |
| whatsapp_leave_groupB | Leave a group. |
| whatsapp_get_group_participantsC | Get group participants. |
| whatsapp_update_group_participantsB | Add, remove, promote, or demote group participants. |
| whatsapp_get_group_invite_linkB | Get group invite link. |
| whatsapp_reset_group_invite_linkC | Reset group invite link. |
| whatsapp_set_group_announceB | Set group announce mode (only admins can send messages). |
| whatsapp_set_group_lockedB | Set group locked mode (only admins can edit info). |
| whatsapp_set_group_join_approvalA | Set group join approval mode (new members require admin approval). |
| whatsapp_set_group_member_add_modeB | Control whether only admins can add members. |
| whatsapp_join_group_with_linkB | Join a group via invite link code. |
| whatsapp_join_group_with_inviteA | Accept a group invite received via direct message. |
| whatsapp_get_group_info_from_linkA | Preview group information from an invite code without joining. |
| whatsapp_get_group_requestsB | Get pending join requests for a group. |
| whatsapp_update_group_requestsB | Approve or reject pending join requests. |
| whatsapp_get_chatsA | Get list of all WhatsApp chats. |
| whatsapp_get_chatC | Get information about a specific chat. |
| whatsapp_delete_chatC | Delete a chat. |
| whatsapp_get_chat_pictureC | Get chat profile picture. |
| whatsapp_get_chat_business_profileC | Get business profile for a chat. |
| whatsapp_set_chat_presenceB | Set presence status in a chat (typing, recording, paused). |
| whatsapp_subscribe_chat_presenceC | Subscribe to presence updates for a chat. |
| whatsapp_set_chat_ephemeralB | Set disappearing messages timer for a chat. |
| whatsapp_mute_chatB | Mute or unmute a chat. |
| whatsapp_archive_chatB | Archive or unarchive a chat. |
| whatsapp_pin_chatB | Pin or unpin a chat. |
| whatsapp_mark_chat_as_readC | Mark a chat as read or unread. |
| whatsapp_request_chat_messagesC | Request on-demand message history for a chat. Results arrive asynchronously. |
| whatsapp_clear_chatB | Clear all messages from a chat. |
| whatsapp_get_session_statusA | Get current WhatsApp session status. |
| whatsapp_get_qr_codeA | Get QR code text string for WhatsApp login. |
| whatsapp_get_qr_code_imageB | Get QR code PNG image for WhatsApp login. |
| whatsapp_get_pair_codeC | Get pairing code for WhatsApp login. |
| whatsapp_logoutA | Logout from WhatsApp. |
| whatsapp_flush_historyA | Flush cached history sync messages. Returns 202 Accepted, then asynchronously publishes cached history sync messages as events. |
| whatsapp_get_my_profileA | Get own WhatsApp profile info. |
| whatsapp_update_my_profileA | Update own WhatsApp profile. All fields are optional. |
| whatsapp_set_presenceB | Set account presence state (available or unavailable). |
| whatsapp_get_privacy_settingsA | Get current privacy settings. |
| whatsapp_set_privacy_settingC | Update a single privacy setting. |
| whatsapp_check_userB | Check if a phone number is registered on WhatsApp. |
| whatsapp_bulk_check_usersB | Check multiple phone numbers at once to see if they are registered on WhatsApp. |
| whatsapp_get_user_profileA | Get profile info for a specific user by phone number. |
| whatsapp_list_communitiesA | List all joined communities. |
| whatsapp_create_communityC | Create a new WhatsApp community. |
| whatsapp_get_communityB | Get community info. |
| whatsapp_leave_communityB | Leave a community. |
| whatsapp_set_community_nameC | Set community name. |
| whatsapp_set_community_descriptionC | Set community description. |
| whatsapp_set_community_pictureB | Set community profile picture. |
| whatsapp_set_community_lockedB | Set community locked mode (only admins can edit info). |
| whatsapp_get_community_participantsC | Get community participants. |
| whatsapp_update_community_participantsB | Add, remove, promote, or demote community participants. |
| whatsapp_get_community_invite_linkC | Get community invite link. |
| whatsapp_reset_community_invite_linkD | Reset community invite link. |
| whatsapp_get_community_sub_groupsB | Get community sub-groups. |
| whatsapp_create_community_groupB | Create a new sub-group inside a community. |
| whatsapp_link_group_to_communityC | Link an existing group to a community. |
| whatsapp_unlink_community_groupB | Unlink a group from a community. |
| whatsapp_list_newslettersB | List all subscribed newsletters. |
| whatsapp_create_newsletterC | Create a new newsletter/channel. |
| whatsapp_get_newsletter_by_inviteB | Get newsletter info by invite code. |
| whatsapp_get_newsletterB | Get newsletter info by JID. |
| whatsapp_set_newsletter_subscriptionB | Subscribe or unsubscribe from a newsletter. |
| whatsapp_mute_newsletterB | Mute or unmute a newsletter. |
| whatsapp_get_status_privacyA | Get status broadcast privacy settings. |
| whatsapp_post_text_statusB | Post a text status update (story). |
| whatsapp_post_image_statusB | Post an image status update. Provide either data (base64) or url. |
| whatsapp_post_video_statusB | Post a video status update. Provide either data (base64) or url. |
| whatsapp_delete_statusB | Delete a previously posted status update. |
| whatsapp_reject_callC | Reject an incoming call. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 101 tools
Most tools have clear purposes, especially the media-send variants, but several are easy to confuse: get_contact vs get_user_profile vs get_chat, mark_message_as_read vs mark_chat_as_read, and send_audio vs send_voice. Fine-grained distinctions between chat-level and message-level actions require careful attention.
The whatsapp_* prefix and verb_noun pattern are used consistently across nearly all tools. Minor inconsistencies exist, such as update_group_name vs set_group_picture, post_* vs send_*, and some verbs like 'get' vs 'list' being used interchangeably.
101 tools is an extremely large surface for an MCP server. Even though WhatsApp has many features, the sheer number makes the toolset overwhelming and hard to navigate, far exceeding the 'too many' threshold.
The server covers a broad range of WhatsApp capabilities: messages, chats, groups, communities, newsletters, status, contacts, and privacy settings. However, notable gaps exist, such as no delete-for-everyone message operation Pouet no direct message retrieval by ID, and some basic messaging operations are only partially covered.