Server definition
- Hash
- sha256:8db63c643c7a4f4d220bb81efce16bf4c67c12f5c440fe19b6942c563c9a2109
- What it is
- What a remote MCP server returned when asked what it offers: 5 tools
The blob, as servednamed by its sha256
{
"instructions": "pingwa is a two-way WhatsApp bridge to the account owner's own phone — a human in the loop for AI agents. There is no recipient field; messages always go to the key owner. Use `notify` to tell the human something happened (build done, task finished). Use `ask` to ask a question and BLOCK until the human answers on WhatsApp — they can reply with free text (steer you: 'use the other API', 'ship it') or tap one of up to 3 buttons; the reply comes back to you. Use `check_replies` to pull any inbound WhatsApp messages the human sent (poll for out-of-band instructions). Use `check_status` to see plan and remaining quota, and `upgrade` when quota runs out to get a Stripe link for the human to open (no password needed). Set PINGWA_KEY (a pw_... key) in the environment; without it, tools return an actionable error explaining how to get one.",
"tools": [
{
"description": "Ask the human a question on WhatsApp and BLOCK until they reply (or timeout).\n\n `text` is the question. `buttons` (optional, up to 3) render as tappable reply\n buttons; omit them to invite a free-text answer the human types on their phone —\n use this to let the human steer you mid-task. `timeout` is seconds to wait\n (max 90). Returns the human's reply (free text and/or the chosen option). On\n timeout, returns a note — the question was delivered and the answer is still\n retrievable via `check_replies`.\n ",
"inputSchema": {
"properties": {
"buttons": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Buttons"
},
"text": {
"title": "Text",
"type": "string"
},
"timeout": {
"default": 60,
"title": "Timeout",
"type": "integer"
}
},
"required": [
"text"
],
"title": "askArguments",
"type": "object"
},
"name": "ask",
"outputSchema": {
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "askOutput",
"type": "object"
}
},
{
"description": "Pull inbound WhatsApp messages the human sent to pingwa (out-of-band\n instructions, or late answers to an `ask`). `since` is a cursor from a previous\n call (pass it back to get only newer messages); `wait` long-polls up to that many\n seconds for something to arrive. Returns the messages and a new cursor.\n ",
"inputSchema": {
"properties": {
"since": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Since"
},
"wait": {
"default": 0,
"title": "Wait",
"type": "integer"
}
},
"title": "check_repliesArguments",
"type": "object"
},
"name": "check_replies",
"outputSchema": {
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "check_repliesOutput",
"type": "object"
}
},
{
"description": "Show the pingwa account's plan, remaining monthly quota, and whether the\n free 24h WhatsApp reply window is currently open.",
"inputSchema": {
"properties": {},
"title": "check_statusArguments",
"type": "object"
},
"name": "check_status",
"outputSchema": {
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "check_statusOutput",
"type": "object"
}
},
{
"description": "Send a WhatsApp notification to the account owner's own phone.\n\n `text` is the message (1-1024 chars). `image_url` (optional) is a public https\n image link — a screenshot, chart or diff — delivered as an image with `text` as\n the caption when the user's 24h window is open (otherwise text only). Returns a\n confirmation with the queued message id; raises an actionable error on quota/auth.\n ",
"inputSchema": {
"properties": {
"image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Image Url"
},
"text": {
"title": "Text",
"type": "string"
}
},
"required": [
"text"
],
"title": "notifyArguments",
"type": "object"
},
"name": "notify",
"outputSchema": {
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "notifyOutput",
"type": "object"
}
},
{
"description": "Get a link to upgrade the account to Pro (raises the monthly quota).\n\n Returns a Stripe Checkout URL for the human to open and pay — no pingwa\n password needed, the card is handled by Stripe. If the account is already\n Pro, returns a billing-portal URL to manage or cancel instead.\n ",
"inputSchema": {
"properties": {},
"title": "upgradeArguments",
"type": "object"
},
"name": "upgrade",
"outputSchema": {
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "upgradeOutput",
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:8db63c643c7a4f4d220bb81efce16bf4c67c12f5c440fe19b6942c563c9a2109 | sha256sum