Skip to main content
Glama
wuapidev

wuapi MCP server

Official
by wuapidev

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
WUAPI_API_KEYYesYour wuapi API key, e.g. wu_live_... Required for authentication.
WUAPI_PROJECTNoAct inside one project: its id or ext:<externalId>. Sent as Wuapi-Project.
WUAPI_BASE_URLNoAPI base URL. Must be https (or http on localhost).https://api.wuapi.dev
WUAPI_MCP_READ_ONLYNoSet to true to register only read-only tools.false

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

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_current_keyA

The organization, API key (name and last 4 characters, never the key) and project this server acts as. Call it first when you are unsure whether the key is an organization key or a project key.

list_accountsA

List the linked WhatsApp numbers (accounts), newest first, with their status: ready can send; qr_ready waits for a QR scan; disconnected or failed need attention.

get_accountA

One account: status, linked phone number, profile name, proxy location, disconnect reason and last error. hasQrCode says a QR code is waiting to be scanned (get it with get_account_qr_code).

get_account_qr_codeA

The QR code to scan in WhatsApp (Settings > Linked devices > Link a device), as an image. Waits a few seconds for one when the account is still starting. QR codes rotate about every 20 seconds: call again if it expired. Returns the status instead when the account is already linked, and the pairing code when it links by phone number.

create_accountA

Start linking a new WhatsApp number. Pick proxyLocation with list_proxy_locations (near where the phone is). Then show the QR code with get_account_qr_code, or pass pairingPhone to link with an 8-character pairing code instead. A linked number is billable; a new organization links its first number with no card. To let someone else link their own number, use create_invitation.

request_pairing_codeA

Link by phone number instead of QR code: returns an 8-character code the owner types in WhatsApp. It lives about 160 seconds. Fails with already_linked when the account is ready.

reconnect_accountA

Restart the account's session. Use it when an account is disconnected; when the link is no longer valid it produces a fresh QR code.

list_proxy_locationsA

Countries and cities a new number's proxy can exit from, for create_account and create_invitation. Search with q (sao finds Sao Paulo) or filter by country.

send_textA

Send a text message from a linked number to a contact, group or channel. The message is queued and sent at the account's pace; the result has its id and queued status. Send only to people who expect it.

send_mediaA

Send a file from a public URL: an image, video, audio, voice note (ogg/opus), document or sticker, with an optional caption. wuapi downloads the URL itself.

send_locationB

Send a map pin, with an optional place name and address.

send_contactA

Send one contact card, or up to 20 in one message.

send_pollA

Send a poll with 2 to 12 options. Votes arrive as poll.voted webhooks and in the message's poll tally (get_message).

reply_to_messageA

Reply with text to a message, quoting it, in the same chat and from the same account. Works for messages in direct chats and groups.

react_to_messageA

React to a message with an emoji, as the account that received or sent it. An empty string removes the reaction.

get_messageA

One message with its status (queued, sent, delivered, read, failed, or received for inbound), content, and error when it failed.

list_messagesA

Messages wuapi stored, newest first: sent and received. Filter by account, chat and direction to read a conversation. There is no endpoint that lists chats; recent messages show who wrote.

edit_messageA

Change the text of an outbound text message, within WhatsApp's edit window (about 15 minutes). A message still queued is sent with the new text.

delete_messageA

Delete an outbound message for everyone (or only on the linked devices with forEveryone: false). A message still queued is cancelled instead and never sent. This cannot be undone.

cancel_messageA

Stop a message that is still queued from being sent. It ends failed with error code cancelled. Fails with not_queued when the message already left; use delete_message for those.

mark_chat_readA

Clear (or set, with unread: true) the chat's unread badge on the linked devices. Sends no read receipts; use send_read_receipts for blue ticks.

send_read_receiptsA

Send read receipts (blue ticks) for inbound messages in a chat: the given ids, or every unread inbound message wuapi stores for it.

archive_chatB

Archive a chat on the linked devices, or unarchive it with archived: false.

pin_chatA

Pin a chat to the top on the linked devices, or unpin it with pinned: false.

mute_chatA

Mute a chat's notifications for a while or until unmuted, or unmute it with muted: false.

check_numbersA

Which of these phone numbers have WhatsApp, with their contact id, business name and username when known. Check before sending to a new number.

lookup_contactsA

About text, WhatsApp username, business name and device count of 1 to 50 contacts. Usernames cannot be searched: WhatsApp does not let a linked device resolve an @username, so look contacts up by number or lid: id.

list_groupsA

Every group the account is in, read live from WhatsApp, with the participant count. Use get_group for the participants.

get_groupB

A group's name, description, settings and participants with their roles (member, admin, owner).

create_groupA

Create a WhatsApp group with the account as owner. Participants whose privacy settings refuse being added get an invite code instead (see the result).

add_group_participantsA

Add participants to a group the account administers. Each result says whether it worked; someone who cannot be added directly comes back with an invite code.

remove_group_participantsA

Remove participants from a group the account administers.

promote_group_participantsB

Make participants admins of a group the account administers.

demote_group_participantsA

Turn group admins back into regular members.

get_group_invite_linkA

The group's https://chat.whatsapp.com/... invite link. The account must be an admin.

reset_group_invite_linkA

Revoke the group's invite link and return a new one. Anyone holding the old link can no longer join with it.

leave_groupA

Make the account leave a group. To come back it has to be added or invited again.

post_storyA

Post a story from the account: text on a colored background, or an image or video from a public URL with an optional caption.

list_webhooksA

The webhook endpoints that receive events: URL, events and whether active. Signing secrets are never shown here.

create_webhookA

Register a public https URL to receive events as signed POST requests. The signing secret is not returned through this tool, to keep it out of the conversation: the user reveals it in the wuapi dashboard (Webhooks, rotate the endpoint's secret) and stores it with their server.

update_webhookA

Change a webhook endpoint's URL or events, or pause it (active: false) and resume it.

delete_webhookA

Delete a webhook endpoint. Its events stop at once, including deliveries still retrying.

list_projectsB

Projects: one per customer of a platform, each with its own numbers, keys, webhooks and usage. Organization keys only.

get_projectA

One project: name, external id, status, account limit and count. Organization keys only.

create_projectA

Create a project for one of your customers. Set externalId to your own customer id so you can address it as ext:<externalId>. Then invite the customer to link their number with create_invitation. Organization keys only.

create_invitationA

Create a branded page (url) where a customer links their own WhatsApp number to your project by QR code or pairing code, without an account on wuapi. Send them the url: it is returned only here. With inviteeEmail, wuapi can email it too.

list_invitationsB

Invitations and their status: pending, in_progress, completed (with the new accountId), failed, cancelled or expired.

get_invitationA

One invitation's status, and the linked accountId once completed.

cancel_invitationA

Cancel an invitation: its link stops working. Completed invitations cannot be cancelled.

get_usageA

The current month's bill so far: billable numbers, proxy traffic, and the total in cents (USD). Organization keys only.

get_usage_by_projectA

Numbers, proxy traffic and messages sent and received per project for a month, for rebilling your customers. With projectId, that project only. Organization keys only.

Prompts

Interactive templates invoked by user choice

NameDescription
send_messageSend a message to a number or group from one of your linked numbers.
setup_webhookRegister an https endpoint to receive incoming messages and delivery updates.
invite_customerCreate a project for a customer (if needed) and an invitation link they open to connect their own WhatsApp.

Resources

Contextual data attached and managed by the client

NameDescription
openapiEvery endpoint of the wuapi REST API with its parameters, bodies, responses and error codes.
docsThe complete wuapi docs as one Markdown file: conventions, every endpoint, webhook events and signature verification.
docs-indexA short index of the wuapi docs with links to each section.
webhook-eventsEvery event type a webhook endpoint can subscribe to.

TDQS

A3.7/5.0

Scored across 51 tools

Disambiguation5/5

Every tool targets a specific resource and action (send_*, get_*, list_*, create_*, etc.), with near-zero overlap in purpose. Even similar operations like cancel_message, delete_message, and edit_message are sharply distinguished by message state and intent.

Naming Consistency5/5

All tool names follow a strict verb_noun snake_case pattern with precise resource nouns (cancel_message, list_groups, send_read_receipts). There are no mixed conventions, vague verbs, or camelCase deviations.

Tool Count1/5

With 51 tools, this exceeds the 50+ threshold explicitly classified as an extreme mismatch for an MCP server. The domain is broad, but the sheer surface area is overwhelming for agents and likely exceeds what is needed in most interactions.

Completeness4/5

The surface covers the vast majority of WhatsApp API operations: messaging, media, accounts, groups, contacts, webhooks, projects, invitations, and usage. Minor gaps exist (no group rename/dissolve, no account unlink, no chat listing endpoint), but these are either acknowledged workarounds or uncommon operations.

Maintenance

ActivityNo data
ResponsivenessNo issues