Security gate for agent-driven WhatsApp: allowlist, secret scan, rate limit, audit log.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Guarded WhatsApp.
wa_list_recipientsShow the allowlist (numbers masked).
wa_previewDry-run a send: run every check, return a verdict + `confirm_token` if needed. Sends nothing.
wa_send_messageSend text to an allowlisted recipient through the full gate.
wa_send_fileSend a file (auto ASCII-safe name, type/size checked, caption scanned).
wa_audit_tailRecent audit records.
An MCP server that lets an AI agent (or any MCP client) send WhatsApp messages and files β but only through a security gate you control: a recipient allowlist, secret scanning, file validation, rate limiting, a confirmation gate, and an append-only audit log.
Most WhatsApp bridges send anything, anywhere, with no record. That is fine for a human clicking send. It is not fine for an autonomous agent. guarded-whatsapp-mcp is the governance layer that makes agent-driven WhatsApp safe enough to trust.
This is not a Slack replacement. No channels, no threads, no workspace UI. It makes the WhatsApp you already use safe to automate.
This server governs access to a transport; by default that transport is the unofficial
whatsmeow-based bridge (e.g.
whatsapp-mcp), which speaks WhatsApp Web's
private protocol.
The guardrails here reduce operational risk (wrong recipient, leaked secret, spam). They do not change the Terms-of-Service risk of the underlying bridge. We are loud about this on purpose so you can choose with eyes open.
| Without a guard | With guarded-whatsapp-mcp |
|---|---|
| Agent can message any number it generates | Fail-closed allowlist β strangers are refused |
| A leaked API key sails out in a message | Secret scan blocks it before it sends |
| A runaway loop spams the team 200Γ | Rate limit caps it |
Files arrive as Untitled; paths unchecked | ASCII-safe filenames + type/size checks |
| No idea what the agent sent | Append-only audit log of every attempt |
| Accidental sends | Confirmation gate β risky sends must be previewed |
| Control | What it does |
|---|---|
| Recipient allowlist | Fail-closed. With allow_unlisted: false, only people/groups in your config can be messaged β even a raw number is refused. |
| Secret / PII scan | Text + captions scanned for API keys, private keys, cloud/Slack/GitHub/OpenAI tokens, JWTs, credit cards (Luhn), national IDs. block or warn. |
| File validation | Extension allowlist + size cap. Filenames sanitized to ASCII (no Untitled, no path traversal); copied to a safe name before sending. |
| Rate limiting | Sliding window (per-minute + per-hour) stops runaway loops. |
| Confirmation gate | Risky sends (unlisted / files / all) need a confirm_token from wa_preview β proof the send was previewed, not accidental. |
| Audit log | Every attempt (sent / blocked / failed) appended to ~/.guarded-whatsapp-mcp/audit.jsonl, with body stored as preview + hash only. |
| Tool | Gated? | Purpose |
|---|---|---|
wa_list_recipients | read-only | Show the allowlist (numbers masked). |
wa_preview | read-only | Dry-run a send: run every check, return a verdict + confirm_token if needed. Sends nothing. |
wa_send_message | send | Send text to an allowlisted recipient through the full gate. |
wa_send_file | send | Send a file (auto ASCII-safe name, type/size checked, caption scanned). |
wa_audit_tail | read-only | Recent audit records. |
See config/allowlist.example.yaml. Key knobs:
allow_unlisted (the fail-closed switch), require_confirm_for, rate_limit, files,
secrets.on_detect, and the recipients allowlist. Edits hot-reload on each call.
PRs welcome β see CONTRIBUTING.md. The one rule: keep the fail-closed posture, and add a test for every new check.
MIT β see LICENSE. Security model & honest limitations in SECURITY.md.
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/guarded-whatsapp)<a href="https://allmcps.com/mcp/guarded-whatsapp"><img src="https://allmcps.com/api/badge/guarded-whatsapp?style=directory" alt="Guarded WhatsApp on AllMCPs" /></a>