Skip to main content
Glama
razvangirgiz

wazap-mcp

by razvangirgiz

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
WAZAP_HOSTNoHTTP bind address.127.0.0.1
WAZAP_PORTNoHTTP bind port.8766
OPENAI_API_KEYNoFallback API key for OpenAI-compatible transcription when WAZAP_TRANSCRIBE_API_KEY is not set.
WAZAP_DATA_DIRNoWhere everything is stored.~/.wazap
WAZAP_NO_SHARENoSet to 1 to opt out of sharing a WhatsApp session between multiple wazap processes.0
WAZAP_READ_ONLYNoDo not register the write tools. Set to 1 to enable read-only mode.0
WAZAP_TRANSPORTNostdio or http.stdio
WAZAP_PUBLIC_URLNoThe https address agents reach the server at. Must be a bare origin with no path. With WAZAP_OAUTH_PASSWORD, turns OAuth on.
WAZAP_RATE_LIMITNoWrite tool calls per minute; 0 disables.20
WAZAP_READ_TOKENNoHTTP bearer token that grants read-only access. Required to bind a non-loopback address without OAuth.
WAZAP_TRANSCRIBENolocal, openai or off.off
WAZAP_WHISPER_BINNoPath to a whisper.cpp binary that is not on PATH.
WAZAP_WRITE_TOKENNoHTTP bearer token that also unlocks write tools.
WAZAP_WHISPER_MODELNoturbo, large-v3 or medium.turbo
WAZAP_OAUTH_PASSWORDNoWhat the consent page asks for. At least 8 characters. With WAZAP_PUBLIC_URL, turns OAuth on.
WAZAP_TRANSCRIBE_URLNoOpenAI-compatible base URL.https://api.openai.com/v1
WAZAP_NO_UPDATE_CHECKNoSet to 1 to stop status asking npm for a newer version.0
WAZAP_PERSIST_HISTORYNoKeep chats and messages across restarts.1
WAZAP_TRANSCRIBE_AUTONoTranscribe incoming voice notes in the background. Set to 0 to keep the tool and stop background work.1
WAZAP_TRANSCRIBE_MODELNoModel at that URL.gpt-4o-mini-transcribe
WAZAP_SYNC_FULL_HISTORYNoAsk WhatsApp for a fuller history sync.0
WAZAP_TRANSCRIBE_API_KEYNoAPI key for OpenAI-compatible transcription. Never a flag; stored in .env. OPENAI_API_KEY is the fallback.
WAZAP_TRANSCRIBE_LANGUAGENoSpoken language, e.g. ro.auto

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
}

Tools

Functions exposed to the LLM to take actions

NameDescription
learnA

The guide to these tools: ids, account_id with several accounts, the workflows, the message shape and what to do about each error code. Read it once, before the other tools; it never touches WhatsApp.

get_statusA

Whether the account works: status (connected, not_linked, linking with its pairing code…), sync, how fresh the history is, webhook delivery, versions. accounts lists every account, with default. Call it on NOT_CONNECTED, NOT_LINKED or SYNC_IN_PROGRESS.

link_accountA

Pair wazap with the user's WhatsApp when get_status says not_linked, logged_out, session_corrupt or auth_failure. Show the user the code it returns: WhatsApp → Settings → Linked devices → Link a device → Link with phone number instead. Then poll get_status every 10 s until connected.

list_chatsA

Conversations, most recently active first: chat_id, name, type, unread count, last message, and whether archived, pinned, muted or left. Use it to find a chat_id.

read_messagesA

Read one chat, oldest to newest: the latest messages, or older ones with before (wazap asks the phone when the local history runs out). chat_id "status" reads the stories people posted, newest first, from the last hours (at most a day); they show nowhere else.

catch_upA

What the user missed, all accounts, within budget_tokens: waiting (every open ask of 14 days, whatever the window), mentions, calls, people, groups, stories. account_id narrows it to one account; get_status names them. The mark moves first; a lost answer is since: "previous". more.cursor: the rest.

rememberA

Keep what the user says about someone, locally, never on WhatsApp: a note, tags, details find_contact matches ({"relatie": "mama"}), or handled: true for an ask dealt with elsewhere. #private keeps their words out of what you did not ask about them by name; #no-catchup keeps them out of catch_up.

wait_for_messagesA

Wait for messages from other people, up to timeout_seconds, and return them with a cursor: pass it to the next call so nothing that lands between calls is missed. addressed_to_me wakes only for direct messages, mentions and replies to the user. For agents that stay on the line.

searchA

Find messages by meaning and by words at once, in every chat or one: a paraphrase or another language still hits. match: "words" for exact words (a number, a URL). since, until and from narrow it; coverage and freshness say how much history was searched.

get_messageA

One message in full: the message it quotes, each reaction with who left it, poll votes and event answers by person, its media, and on the user's own messages who it reached and who read it. Without account_id the id is looked for on every account.

find_contactA

Who a name, nickname, relationship ("mama"), group, number or id means, before drafting. resolved: contact.chat_id, with number, note, tags, details and, in a write session, context. ambiguous or not_found: ask the user; never send to a guess. A name on several accounts: see fix. tag: its people.

get_group_infoA

A group's name, description, owner and participants (up to 500), whether the account is admin, its settings (info_locked, member_add_mode, join_approval, disappearing_seconds), its community, and the invite link for an admin. Call it before manage_group.

get_mediaB

What a message's media holds: a voice note or audio as its transcript (kept once made; an API provider bills it), or with save_to its file; a photo attached as an image; any file saved at path on the machine running wazap. MEDIA_UNAVAILABLE: WhatsApp no longer has it.

send_messageA

Drafts text, media, polls, locations, forwards; sends nothing. Call it as soon as you have recipient and text: it returns draft_id and preview (recipient, number, exact text). Show that preview; confirm_send only on a yes to this text and recipient — a send in the same request is that yes.

edit_messageA

Replace the text of a message the linked account sent. WhatsApp allows it for 15 minutes after sending; later, send a correction instead.

react_to_messageA

React to a message with one emoji, or pass "" to take your reaction off.

confirm_sendA

Send a draft the user approved — this text, this recipient: the only call that sends, once per draft. A yes about something else: show the preview again and ask. Expired, missing or stale: draft again, show the new preview, ask again. SEND_OUTCOME_UNKNOWN: read_messages, never redo it unasked.

delete_messageA

Delete a message; confirm with the user first. for_everyone: true retracts it for everyone within 2 days: the account's own message, or anyone's in a group where it is admin. for_everyone: false removes any message from the linked account's devices only.

manage_chatA

Change a chat on WhatsApp at once, with no draft: archive, pin, mute, mark_read or mark_unread; pin_message (for everyone) or star_message on a message_id; clear or delete it for the linked account; block a person. Say what will change and wait for a yes.

manage_groupA

Create a group, join one from an invite (preview first, then confirm: true), or administer one: members, name, description, photo, invite link, join requests, settings, leave. Most actions need admin. Every change shows to all members at once: say what will change, wait for a yes.

Prompts

Interactive templates invoked by user choice

NameDescription
wazap-setupInstall, link or repair the WhatsApp connection. Use when the user wants to connect WhatsApp to Claude, when a WhatsApp tool returns NOT_LINKED, SESSION_EXPIRED or SESSION_CORRUPT, when `get_status` is anything but connected, or when the user asks how wazap works with Claude Desktop, Claude Code or HTTP.
whatsapp-groupsCatch up on a busy WhatsApp group. Use when the user asks what happened in a group, what was decided, what they are being asked to do there, or for a summary of a thread with many messages. Read-only.
whatsapp-inboxTriage the user's WhatsApp. Use when they ask what they missed, what's unread, who is waiting on a reply, what needs attention today, or whom they forgot to answer. Read-only; it sends nothing and marks nothing read.
whatsapp-recallFind something in the user's WhatsApp history. Use when they ask for an address, invoice, photo, document, link, phone number, date or a thing someone said or sent, or "what did X say about Y". Read-only.
whatsapp-sendSend, reply, forward, share a file or a location, react, create a poll, or change a group's photo on WhatsApp on the user's behalf. Use for any request that results in an outgoing WhatsApp message or a change others see. Find who the user means with find_contact first; messages draft first, and a group photo has no draft. Show the image, wait for a yes, then call manage_group set_picture.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 20 tools

Disambiguation4/5

Most tools have clearly distinct purposes (e.g., send_message vs. confirm_send vs. edit_message vs. delete_message are well-separated by lifecycle stage). However, manage_chat and manage_group both handle 'manage' actions across different resources, and get_message vs. read_messages could cause minor confusion despite different scopes.

Naming Consistency4/5

The naming is predominantly verb_noun (get_status, list_chats, read_messages, send_message, edit_message, delete_message, find_contact, get_group_info, get_media). Minor deviations: 'learn', 'catch_up', 'remember', 'wait_for_messages' are less pattern-consistent but still readable and purposeful.

Tool Count4/5

20 tools is on the higher end but justified for a WhatsApp integration covering accounts, chats, groups, messages, media, contacts, and search. Each tool addresses a distinct operation, though a few could potentially be consolidated (e.g., manage_chat and manage_group are broad).

Completeness5/5

The tool surface covers the full messaging lifecycle: linking accounts, listing/reading/searching messages, drafting/sending/editing/reacting/deleting, chat and group management, contact resolution, media retrieval, and catch-up. The inclusion of learn, get_status, and wait_for_messages fills operational gaps that agents would otherwise hit.

Maintenance

ActivityActive
ResponsivenessUnresponsive