pingwa
Provides WhatsApp messaging capabilities for sending notifications, asking questions with buttons, and receiving replies, enabling human-in-the-loop interactions for AI agents.
This server has a remotely hosted endpoint. Open its connector listing for connection details, authentication requirements, and setup instructions:
pingwa (client)
WhatsApp notifications for AI agents and scripts with zero setup — no Meta
account, no templates, no dashboard: text "join", get an API key,
curl → WhatsApp in 60s. Two-way human-in-the-loop: your agent asks, you tap
a button to answer. From your terminal or an MCP client.
This is the open-source (MIT) pingwa client: a CLI, a tiny HTTP client, and an MCP server. It talks to a pingwa backend (the hosted service at https://pingwa.dev, or your own). The backend is separate and private; this client is not.
Install & use
No install needed with uv:
export PINGWA_KEY=pw_your_key # get one: send "join" on WhatsApp to the service number
uvx pingwa send "build finished ✅" # notify your own phone
echo "deploy done" | uvx pingwa send - # from stdin
uvx pingwa ask "Deploy to prod?" --button yes --button no # wait for a reply from your phone
uvx pingwa replies # pull messages your phone sent back (out-of-band steering)
uvx pingwa me # plan / quota / reply-window
uvx pingwa keys # list active API keys (up to 10 named keys per number)
uvx pingwa keys revoke ci # revoke one by name (or reply 'revoke ci' on WhatsApp)
uvx pingwa upgrade # get a Stripe link to go Pro (no password needed)
uvx pingwa send "x" --json # raw JSON responseAI agents: don't ask your human to copy-paste a key — drive the registration
yourself (POST /v1/registrations; full recipe in
llms.txt). The human only taps one WhatsApp link;
the key is claimed by you and never travels through the chat. Works for existing
accounts too — it mints an additional named key.
Exit codes: 0 ok · 2 missing key · 3 quota exceeded · 1 other.
Override the backend with PINGWA_BASE_URL or --base-url.
Related MCP server: whatsapp
Webhooks
Prefer PUSH over polling replies? Register HTTPS endpoints and pingwa POSTs
every inbound WhatsApp message to them:
uvx pingwa webhooks # list your webhooks
uvx pingwa webhooks add https://your-host/pingwa-hook # returns a signing SECRET, shown ONCE
uvx pingwa webhooks rm https://your-host/pingwa-hook # by id, or by exact urladd prints a whsec_... secret once — store it now; it never appears
again. Each delivery carries an X-Pingwa-Signature: sha256=<hex> header (an
HMAC-SHA256 of the raw body under that secret) — verify it and reject anything
that fails. Full verification recipe and payload shape:
llms.txt. Up to 5 active webhooks per account; to
rotate a secret, rm then add again.
MCP server
Same tools on stdio and remote: notify(text), ask(text, buttons?, timeout?),
check_replies(since?, wait?), check_status(), upgrade().
Local (stdio) — for Claude Desktop / Claude Code:
{
"mcpServers": {
"pingwa": {
"command": "uvx",
"args": ["pingwa", "mcp"],
"env": { "PINGWA_KEY": "pw_your_key" }
}
}
}Remote (Streamable HTTP, no install):
{
"mcpServers": {
"pingwa": {
"url": "https://pingwa.dev/mcp",
"headers": { "Authorization": "Bearer pw_your_key" }
}
}
}Every error carries an action hint, so an agent knows what to do next.
What it sends
Only your message text and your key, to the pingwa backend you point it at — over HTTPS. Nothing else. The recipient is always your own phone (there is no "to" field). See the service's /privacy.
License
MIT — see LICENSE in the repository root. It covers this client package only
(src/pingwa/client/); the pingwa server is separate, private, and not
published. See NOTICE for the exact boundary.
Available Tools
3 toolscheck_statusBInspect
Show the pingwa account's plan, remaining monthly quota, and whether the free 24h WhatsApp reply window is currently open.
Inputs: no named parameters. Returns: result
notifyAInspect
Send a WhatsApp notification to the account owner's own phone.
text is the message (1-1024 chars). image_url (optional) is a public https
image link — a screenshot, chart or diff — delivered as an image with text as
the caption when the user's 24h window is open (otherwise text only). Returns a
confirmation with the queued message id; raises an actionable error on quota/auth.
Inputs: text (required), image_url. Returns: result
upgradeAInspect
Get a link to upgrade the account to Pro (raises the monthly quota).
Returns a Stripe Checkout URL for the human to open and pay — no pingwa password needed, the card is handled by Stripe. If the account is already Pro, returns a billing-portal URL to manage or cancel instead.
Inputs: no named parameters. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 3 tools
Each tool serves a distinct purpose: notify sends a notification, check_status shows account status, and upgrade provides a link to upgrade. There is no overlap or ambiguity.
Tool names use verbs consistently (notify, check_status, upgrade), though check_status is a verb_noun while the others are single verbs. This minor deviation does not hinder clarity.
With three tools, the server is well-scoped for a personal notification service. Each tool is essential and neither too few nor too many for the purpose.
The tool set covers the core workflows: sending notifications, checking status, and upgrading. Missing features like notification history or contact management are minor gaps for this simple self-notification domain.
Maintenance
Related MCP Connectors
WhatsApp for AI agents — your own number or the official Cloud API: messages, media, templates.
WhatsApp for Claude, ChatGPT or any AI agent: search, reply and send. Personal or Business API.
Give your AI agents a WhatsApp number and a voice: they message you and call you.
Read-only WhatsApp MCP for your AI agent: it reads the chats you choose. Try the public demo.
Related MCP Servers
- AlicenseAqualityDmaintenanceConnects AI assistants to the official Meta WhatsApp Cloud API for managing conversations and sending various message types through natural language. It provides tools for media management, template messages, and real-time webhook processing without the risk of account bans.1812 npm25MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for sending and reading WhatsApp messages through Claude, with human approval on sends and no auto-replies.1Apache 2.0
- AlicenseNot gradedqualityDmaintenanceHuman-in-the-loop approvals and notifications for AI agents via WhatsApp. Enables Cursor, Claude Code, and autonomous AI agents to reach users away from their computers.162 npmISC
- AlicenseNot gradedqualityDmaintenanceEnables sending WhatsApp messages from MCP clients using a personal WhatsApp account via WebSocket protocol, without needing the Business API or browser automation.39 npmMIT