50 tools. 4 resources.
One secure bridge.
Streamable HTTP at https://zap.zaptdev.com/mcp. Protocol 2025-11-25. Cursor, Claude Desktop, Claude Messages API connector, Grok.
Connection
POST https://zap.zaptdev.com/mcp
Authorization: Bearer mcp_... # or oat_... after OAuth
MCP-Protocol-Version: 2025-11-25
Content-Type: application/json
Accept: application/json, text/event-streamMCP is auto-enabled when connect status reaches success. Defaults: allow_send=true, allow_read=true, allow_provision=false.
OAuth discovery: /.well-known/oauth-protected-resource · /.well-known/oauth-authorization-server · authorize at /oauth/authorize.
Claude Messages API — MCP connector
Use Anthropic’s remote MCP connector (beta mcp-client-2025-11-20) so Claude calls WAMCP tools from the Messages API without a local MCP client. You obtain a token first, then pass it as authorization_token.
# 1) Token: mcp_… from connect/portal, or oat_… via OAuth / MCP Inspector Quick OAuth Flow
# 2) Messages API (Python)
from anthropic import Anthropic
client = Anthropic()
resp = client.beta.messages.create(
model="claude-opus-4-8",
max_tokens=1000,
messages=[{"role": "user", "content": "What WhatsApp tools do I have?"}],
mcp_servers=[{
"type": "url",
"url": "https://zap.zaptdev.com/mcp",
"name": "wamcp",
"authorization_token": "mcp_… or oat_…",
}],
tools=[{"type": "mcp_toolset", "mcp_server_name": "wamcp"}],
betas=["mcp-client-2025-11-20"],
)Ready-made JSON lives in mcp_connection.anthropic_mcp_connector from GET /api/mcp/connection or tool whatsapp_get_mcp_connection. Denylist write tools with per-tool configs if you want a read-only assistant.
Claude Desktop / Web — custom connector (OAuth)
Settings → Connectors → Add custom connector → MCP URL https://zap.zaptdev.com/mcp. Claude runs OAuth 2.1 + PKCE against this host (DCR). The owner signs in with WhatsApp OTP and consents; a named agent is created in /portal.
Tool categories (50 tools)
| Category | Tools |
|---|---|
| Messaging | whatsapp_send_message, whatsapp_reply_to_message, whatsapp_send_reaction, whatsapp_send_typing, whatsapp_list_messages, whatsapp_search_messages, whatsapp_get_chat, whatsapp_mark_chat_read, whatsapp_download_media, whatsapp_list_chats, whatsapp_list_contacts, whatsapp_list_groups, whatsapp_get_group_members |
| Session & sync | whatsapp_get_session_status, whatsapp_get_sync_status, whatsapp_wait_for_sync, whatsapp_health_check, whatsapp_resolve_recipient, whatsapp_get_mcp_connection, whatsapp_rotate_mcp_token, whatsapp_get_audit_log |
| Notifications | whatsapp_list_notifications, whatsapp_watch_notifications, whatsapp_get_unread_notification_count, whatsapp_mark_notification_read, whatsapp_mark_all_notifications_read |
| Lifecycle* | whatsapp_reconnect, whatsapp_disconnect, whatsapp_connect_code, whatsapp_connect_qr, whatsapp_connect_kit, whatsapp_connect_status, whatsapp_enable_mcp |
* Lifecycle tools require allow_provision=true (except reconnect/status on own session).
MCP resources
whatsapp://session
whatsapp://sync
whatsapp://notifications/unread
whatsapp://messages/{chat_jid}Production skills & patterns
Start with /skills: Reactive Loop (using watch_notifications), Inbox Triage, Scheduled Digest, Memory Recall, Group Coordinator + reusable blueprints (approval gate, audit-after-action, resolve discipline). Full tool sequences, traces, and host configs.
Examples
Health check
// Tool: whatsapp_health_check
// No parameters. Returns connection, sync, MCP, notifications.
Send message
// Tool: whatsapp_send_message
{
"recipient": "5511999999999",
"content": "Hello from MCP"
}
Wait for sync
// Tool: whatsapp_wait_for_sync
{
"wait_seconds": 120,
"target_phase": "completed"
}
Connect kit (provision)
// Tool: whatsapp_connect_kit
// Requires allow_provision=true
{
"phone_number": "5511999999999",
"wait_seconds": 20
}
Cursor / Grok config snippet
{
"mcpServers": {
"whatsapp-PHONE": {
"url": "https://zap.zaptdev.com/mcp",
"headers": {
"Authorization": "Bearer mcp_YOUR_TOKEN",
"MCP-Protocol-Version": "2025-11-25"
}
}
}
}