pingwa
Zero-setup WhatsApp notifications + human-in-the-loop for AI agents — text 'join', send in 60s.
我該用這個嗎
品質與安全性
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"pingwa": {
"command": "uvx",
"args": [
"pingwa"
]
}
}
}可執行的套件
0.4.1stdio遠端端點
https://pingwa.dev/mcpstreamable-http它能做什麼
工具清單
工具(5)
🟡notify(text, image_url)
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.
輸入結構描述
{
"type": "object",
"properties": {
"text": {
"title": "Text",
"type": "string"
},
"image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Image Url"
}
},
"required": [
"text"
],
"title": "notifyArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "notifyOutput"
}🟢check_status
Show the pingwa account's plan, remaining monthly quota, and whether the free 24h WhatsApp reply window is currently open.
輸入結構描述
{
"type": "object",
"properties": {},
"title": "check_statusArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "check_statusOutput"
}🔴upgrade
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.
輸入結構描述
{
"type": "object",
"properties": {},
"title": "upgradeArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "upgradeOutput"
}⚪ask(text, buttons, timeout)
Ask the human a question on WhatsApp and BLOCK until they reply (or timeout). `text` is the question. `buttons` (optional, up to 3) render as tappable reply buttons; omit them to invite a free-text answer the human types on their phone — use this to let the human steer you mid-task. `timeout` is seconds to wait (max 90). Returns the human's reply (free text and/or the chosen option). On timeout, returns a note — the question was delivered and the answer is still retrievable via `check_replies`.
輸入結構描述
{
"type": "object",
"properties": {
"text": {
"title": "Text",
"type": "string"
},
"buttons": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Buttons"
},
"timeout": {
"default": 60,
"title": "Timeout",
"type": "integer"
}
},
"required": [
"text"
],
"title": "askArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "askOutput"
}🟢check_replies(since, wait)
Pull inbound WhatsApp messages the human sent to pingwa (out-of-band instructions, or late answers to an `ask`). `since` is a cursor from a previous call (pass it back to get only newer messages); `wait` long-polls up to that many seconds for something to arrive. Returns the messages and a new cursor.
輸入結構描述
{
"type": "object",
"properties": {
"since": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Since"
},
"wait": {
"default": 0,
"title": "Wait",
"type": "integer"
}
},
"title": "check_repliesArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "check_repliesOutput"
}社群
證據