Getting started
MCP server
Connect Claude, Cursor and other AI assistants to your WhatsApp inbox.
BatZap exposes a remote Model Context Protocol server, so an AI assistant can read conversations, reply to customers, tag, assign and resolve chats, and invite people to groups. It uses the same API key, scopes and rate limits as the REST API.
Endpoint
https://api.batzap.com/v1/mcpConnect a client
Any client that speaks Streamable HTTP can connect directly. Clients that only speak stdio can go through the mcp-remote proxy.
mcp.json
{
"mcpServers": {
"batzap": {
"type": "http",
"url": "https://api.batzap.com/v1/mcp",
"headers": { "Authorization": "bzp_live_YOUR_API_KEY" }
}
}
}Claude Code
claude mcp add --transport http batzap https://api.batzap.com/v1/mcp \
--header "Authorization: bzp_live_YOUR_API_KEY"Tools
The tool list is filtered by the key's scopes: a tool the key cannot use is not even announced. Start with a read-only key to try it safely.
| Tool | Scope | What it does |
|---|---|---|
batzap_list_numbers | any | Connected numbers and their integration_id. |
batzap_list_chats | chats:read | Conversations, filtered by status, tag, agent, number or search. |
batzap_get_chat | chats:read | Details of one conversation. |
batzap_read_messages | chats:read | Message history of a contact or group. |
batzap_search_contacts | chats:read | Name or phone to contact. |
batzap_list_tags | chats:read | The organization's tags. |
batzap_create_tag | tags:write | Create a tag. |
batzap_tag_chat / batzap_untag_chat | chats:write | Add or remove a tag on a conversation. |
batzap_assign_chat | chats:write | Assign a conversation to an agent. |
batzap_resolve_chat | chats:write | Mark a conversation as resolved. |
batzap_add_note | chats:write | Private note, visible only to the team. |
batzap_reply / batzap_send_message | messages:send | Send a WhatsApp message. Needs confirm: true. |
batzap_create_group | groups:write | Create a WhatsApp group. Needs confirm: true. |
batzap_invite_to_group | groups:write | Add people to a group, or send them the invite link. Needs confirm: true. |
batzap_get_group_invite_link | groups:read | The group's invite link. |
Guardrails
- Confirmation. Anything that reaches a person requires
confirm: true. Without it the server returns the exact text and recipient, so a human can approve before it is sent. - Recipient cap. At most 5 recipients per call: an assistant cannot turn a request into a mass send.
- No media in context. Images and audio come back as a placeholder, not base64.
- No deleting messages. It is irreversible, so it is not exposed.
These rules run on the server, so they cannot be loosened from the client. The transport is stateless: no session id and no server push; GET answers 405.
