Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

PingRoom

REMOTE · API.PINGROOM.IO · SCANNED SEP 24

Send mobile pings and route human questions, approvals, and handoffs from AI agents.

Available components

+6 this week 78 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security63
Transport & Reachability100
Schema Quality & AI Usability76
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 5148 tokens (~122/item across 42 items; 42 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management77
  • Stability observed for 23 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 99% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 43 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the PingRoom MCP server?

PingRoom is a hosted endpoint at https://api.pingroom.io/api/agent/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · api.pingroom.io

# add to Claude Code
claude mcp add --transport http io-pingroom-pingroom 'https://api.pingroom.io/api/agent/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "io-pingroom-pingroom": {
      "url": "https://api.pingroom.io/api/agent/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "io-pingroom-pingroom": {
      "type": "http",
      "url": "https://api.pingroom.io/api/agent/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.io-pingroom-pingroom]
url = "https://api.pingroom.io/api/agent/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-pingroom-pingroom": {
      "type": "remote",
      "url": "https://api.pingroom.io/api/agent/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add io-pingroom-pingroom --url 'https://api.pingroom.io/api/agent/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  io-pingroom-pingroom:
    url: "https://api.pingroom.io/api/agent/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "io-pingroom-pingroom": {
      "Transport": "http",
      "Url": "https://api.pingroom.io/api/agent/mcp"
    }
  }
}
# add to Vellum
assistant mcp add io-pingroom-pingroom -t streamable-http -u 'https://api.pingroom.io/api/agent/mcp'
// mcp.json
{
  "mcpServers": {
    "io-pingroom-pingroom": {
      "type": "http",
      "url": "https://api.pingroom.io/api/agent/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 24 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

  • 22 Sept 26 0
    • Tool “trigger_quick_action” rewrote its description, which is the text the model reads security
    • “create_public_room” added an optional parameter “location_latitude” cosmetic
    • “create_public_room” added an optional parameter “location_longitude” cosmetic
    • “create_public_room” added an optional parameter “location_name” cosmetic
    • “trigger_quick_action” added an optional parameter “attachment_ids” cosmetic
    • “trigger_quick_action” added an optional parameter “data” cosmetic
    • “trigger_quick_action” added an optional parameter “quick_action_id” cosmetic
    • “update_quick_action” added an optional parameter “input_type” cosmetic
  • 21 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

  • 19 Sept 26 +3
    • HSTS header: fail → pass ▲ security
  • 18 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

  • 16 Sept 26 +1
    • “broadcast” reworded the description of “is_urgent” cosmetic
    • “trigger_quick_action” reworded the description of “is_urgent” cosmetic

    2 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.

  • 14 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

  • 12 Sept 26 +1
    • “trigger_quick_action” reworded the description of “action_number” cosmetic
    • “update_quick_action” reworded the description of “action_number” cosmetic
    • “update_quick_actions” reworded the description of “actions” cosmetic

    3 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 24 Sept 2026 · Probed https://api.pingroom.io/api/agent/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=pingroom.io CN=WE1,O=Google Trust Services,C=US 24 Aug 2026 22 Nov 2026 ECDSA 256 ECDSA-SHA256 ff8f4d58105aff790e37768492973756
SANs: pingroom.io, *.pingroom.io
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of api.pingroom.io. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
io. present 57355 8 Verified
pingroom.io. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=31536000; includeSubDomains
x-content-type-options nosniff
x-frame-options SAMEORIGIN

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://api.pingroom.io/api/agent/mcp Verified 200
http (plaintext) http://api.pingroom.io/api/agent/mcp HTTPS enforced 301 https://api.pingroom.io/api/agent/mcp
MCP tools · 42 exposed · ~4,979 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
activate_agent_inbox ~123

Start or resume the onboarding Question in the private room the human chose during authorization. If recipient_not_ready, ask the human to install or update PingRoom from install_url, open the app, sign in, and enable notifications before retrying. Read question.id, then call wait_for_handoff only while state is pending and within a bounded local deadline. Success is answered with activation_completed true. Any other terminal result is incomplete: stop polling that attempt, then call activate_agent_inbox again for one numbered retry. The stamp requires native phone receipt before the human answer.

Input schema present but exposes no named parameters.

NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

ask_question ~295

Ask a person a question with 2-4 tappable options, then block on their answer (pair with wait_for_answer). Delivered as a push they can answer from the lock screen or in-app; the first valid answer wins. Rate-limited.

NameTypeReqDescription
attachment_idsarray–Ids of up to 4 uploaded attachments (see upload_attachment) to include. Uploading requires a Pro account.
contextstring–Optional secondary line, e.g. a build number.
correlation_idstring–Your own id, echoed back unchanged on read.
dataobject–Arbitrary structured context (max 25 keys / 8KB). Read surfaces return it after connector privacy filtering; do not put secrets in data. data.location is reserved for a shareable location.
idempotency_keystring–Stable key so a retried call cannot create a second one.
invite_codestringyesRoom invite code.
optionsarray–Answer options in display order. Omit for a default Approve/Deny.
promptstringyesThe question the person reads.
reply_tostring–Optional routing pointer, echoed back unchanged.
text_inputobject–Invite a typed answer (on its own, or alongside options). max_length is capped at 60.
ttlinteger–Seconds the question stays open before it expires.
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

broadcast ~413

Send a custom ping to a room the account belongs to. Rate-limited. Not available in personal rooms (use trigger_quick_action there).

NameTypeReqDescription
ack_modestring–With requires_ack: any (default) resolves on the first confirmation; all waits for every original eligible recipient. Read action_state.confirmed_count and required_count for progress.
ack_timeout_secondsinteger–Optional acknowledgement deadline in seconds.
action_iconstring–Optional emoji shown with the ping.
action_numberinteger–Optional quick-action slot to attribute the ping to.
attachment_idsarray–Ids of up to 4 uploaded attachments (see upload_attachment) to include. Uploading requires a Pro account.
correlation_idstring–Your own id, echoed back unchanged on read.
dataobject–Arbitrary structured context (max 25 keys / 8KB). Read surfaces return it after connector privacy filtering; do not put secrets in data. data.location is reserved for a shareable location, and data.u…
invite_codestringyesRoom invite code.
is_urgentboolean–Deliver time-sensitive so the ping breaks through Focus / Do Not Disturb and reaches members who muted the room or you (a block still wins). Independent of requires_ack: urgent affects delivery only…
messagestringyesPing body text (max 120 characters in private rooms, 160 in public rooms).
reply_tostring–Id of the ping this one answers (notification id or correlation id).
requires_ackboolean–Keep this ping open until its confirmation rule is met, and show it as a lock-screen card with an Acknowledge button. Does not raise the interruption level on its own — combine with is_urgent for an…
titlestring–Optional headline. Defaults to the room name.
NameTypeReqDescription
resultobjectyesA privacy-minimized, chainable PingRoom notification result.

No examples provided.

cancel_question ~27

Withdraw a still-pending question you asked.

NameTypeReqDescription
question_idstringyesQuestion id.
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

connection_info ~89

Verify the current connection: owner.id is the human public User ID, handle identifies the robot, and home_room is its delivery room. After login or reconnect, match owner.id and handle to the approved account and robot before sending. A mismatch means stop and reload or restart the MCP client. Includes a credential-protected latest-pings feed and token-free install URL; never send credentials to the install URL.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultobjectyesThe authenticated robot and its owner public User ID, for account verification.

No examples provided.

create_handoff ~223

Hand work to exactly one human as either an acknowledgement or a tappable question. The server verifies that one of the recipient's current devices supports the complete Handoff action before creating anything.

NameTypeReqDescription
audienceobjectyes–
correlation_idstring–Your own stable correlation id.
dataobject–Structured context returned on read surfaces after connector privacy filtering. Do not put secrets in data.
expires_ininteger–Seconds before the handoff expires; the server clamps this to its safe range.
idempotency_keystring–Stable key for at-most-once creation across both Ack and Question kinds.
kindstringyesack asks the human to acknowledge; question asks them to choose an option.
optionsarray–Required for question and forbidden for ack. Each item may be a label string or a structured option.
promptstringyesThe work/request shown to the human.
reply_tostring–Optional routing pointer.
urgencystring–Notification interruption level. Defaults to active.
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

create_public_room ~215

Create a publicly discoverable room with a unique @handle. Counts toward the free-plan five-room cap.

NameTypeReqDescription
categorystring–Discovery category.
colorstringyesHex color, e.g. "#e33122".
descriptionstring–Short room description shown in public discovery.
handlestringyesGlobally unique @handle (vanity URL): lowercase letters, digits, underscores.
iconstringyesA v3 room-icon catalog id, e.g. "bell". Call list_room_icons to discover the valid ids.
location_latitudenumber–Latitude in decimal degrees. Send all three location fields or none.
location_longitudenumber–Longitude in decimal degrees. Send all three location fields or none.
location_namestring–Place name shown in nearby discovery. Send all three location fields or none.
namestringyesRoom display name.
show_ownerboolean–Whether the owner is shown publicly. Defaults to true.
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

create_room ~116

Create a new private room owned by the authenticated account. Free accounts may own up to five rooms. If this agent was granted every room and has no delivery room yet, the new room becomes its delivery room — where its handoffs and direct questions land.

NameTypeReqDescription
colorstringyesHex color, e.g. "#e33122".
iconstringyesA v3 room-icon catalog id, e.g. "bell". Call list_room_icons to discover the valid ids.
namestringyesRoom display name.
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

create_webhook ~230

Create an incoming webhook for a room the account owns. The bound account must be Pro. Returns the secret trigger URL — treat it as a credential.

NameTypeReqDescription
action_numberinteger–Quick-action slot to attribute fires to. Auto-assigned if omitted.
colorstring–Hex color, e.g. "#e33122".
cooldown_secondsinteger–Minimum seconds between fires. Defaults to 5.
enabledboolean–Whether the webhook is active. Defaults to true.
iconstring–A v3 room-icon catalog id, e.g. "bell". Call list_room_icons to discover the valid ids.
invite_codestringyesRoom invite code.
messagestring–Optional default push body (max 120 characters in private rooms, 160 in public rooms).
namestringyesWebhook name (shown to the owner).
soundstring–Canonical sound id, e.g. "ting". Omit for the room default.
titlestring–Optional push title used when the webhook fires.
NameTypeReqDescription
resultobjectyesAn incoming webhook. `webhook_url` embeds the secret — treat it as a credential.

No examples provided.

delete_attachment ~37

Delete an attachment this agent uploaded that is not yet claimed by a ping.

NameTypeReqDescription
attachment_idstringyesAttachment id returned by upload_attachment.
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

delete_webhook ~55

Delete an incoming webhook (by id) from a room the account owns.

NameTypeReqDescription
invite_codestringyesRoom invite code.
webhook_idstringyesWebhook id (from list_webhooks or create_webhook).
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

disconnect ~92

Revoke this authenticated robot connection, including its access and refresh credentials and room memberships. Use only when the human explicitly requests logout, disconnection, or reconnection. Call BEFORE clearing local credentials or running MCP logout/login. It affects only the current connection and accepts no account or robot selector. After login, restart or reload the MCP client, then match connection_info owner.id and handle to the approved account and robot before sending.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultobjectyesThe authenticated robot and its owner public User ID, for account verification.

No examples provided.

get_approval ~31

Fetch the current status of an approval request without blocking.

NameTypeReqDescription
approval_idstringyesApproval request id.
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

get_attachment ~57

Fetch an attachment visible to this agent as base64 content plus metadata. Results over the connector size limit return attachment_too_large — fetch those via the agent REST API instead.

NameTypeReqDescription
attachment_idstringyesAttachment id returned by upload_attachment.
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

get_handoff ~33

Fetch the authoritative current state of one Handoff without blocking.

NameTypeReqDescription
handoff_idstringyesHandoff id.
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

get_live_status ~163

Read back the current state of a live stream you created, so a restarted producer can reconcile instead of starting a duplicate. Only returns streams started by this credential, within the last 24 hours. Returns notification_id and correlation_id, then the stored display state (state, progress, message, category, template, accent_override, eta_at, deadline_at, metrics, prompt, options, left, right, center, steps, current_step), action_state, and updated_at. Fields you never set come back as null rather than being omitted, so a matchup/metrics/countdown/question stream can be resumed without re-sending content.

NameTypeReqDescription
correlation_idstringyesThe stream key used when the stream was started.
invite_codestringyesRoom invite code.
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

get_notification ~33

Fetch one visible ping by notification id, including its current action_state.

NameTypeReqDescription
notification_idstringyesRoom notification id.
NameTypeReqDescription
resultobjectyesA privacy-minimized, chainable PingRoom notification result.

No examples provided.

get_question ~28

Fetch the current state of a question without blocking.

NameTypeReqDescription
question_idstringyesQuestion id.
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

get_room ~34

Fetch a single room by its invite code, including members and quick actions.

NameTypeReqDescription
invite_codestringyesRoom invite code.
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

join_room ~51

Join a room using its invite code. Include the password only if the room is protected.

NameTypeReqDescription
invite_codestringyesRoom invite code.
passwordstring–Only required for password-protected rooms.
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

list_handoffs ~99

List a bounded page of this agent's Handoffs, newest first. Omit state (or use open) for unresolved work; use all for history and page while has_more is true.

NameTypeReqDescription
limitinteger–Handoffs per page. Defaults to 10; maximum 25.
pageinteger–Page number, newest first.
statestring–Filter to open Handoffs or include all states.
NameTypeReqDescription
resultobjectyes–

No examples provided.

list_notifications ~114

List a bounded page of recent pings across approved rooms, newest first. Use page to continue while has_more is true.

NameTypeReqDescription
datestring–Only pings created on this calendar date, e.g. "2026-08-25".
limitinteger–Pings per page. Defaults to 10; maximum 25.
pageinteger–Page number, newest first.
typestring–Narrow to pings you received or pings you sent. Omit for both.
NameTypeReqDescription
resultobjectyes–

No examples provided.

list_questions ~80

List a bounded page of questions you asked, newest first. Optionally filter by state; use page while has_more is true.

NameTypeReqDescription
limitinteger–Questions per page. Defaults to 10; maximum 25.
pageinteger–Page number, newest first.
statestring–Filter by state. Omit for all.
NameTypeReqDescription
resultobjectyes–

No examples provided.

list_quick_actions ~30

List the quick actions configured for a room.

NameTypeReqDescription
invite_codestringyesRoom invite code.
NameTypeReqDescription
resultarrayyes–

No examples provided.

list_room_icons ~52

List the room-icon catalog (icon ids, tags, and categories). Call this before create_room / create_public_room / create_webhook to pick a valid icon id, and to interpret icon values returned by reads.

Input schema present but exposes no named parameters.

NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

list_rooms ~17

List the rooms the authenticated account belongs to.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultarrayyes–

No examples provided.

list_webhooks ~38

List the incoming webhooks (with their trigger URLs) for a room the account owns.

NameTypeReqDescription
invite_codestringyesRoom invite code.
NameTypeReqDescription
resultarrayyes–

No examples provided.

live_status ~292

Start, update, or end a live progress card on the room members' lock screen (an iOS Live Activity / Android live update). Reuse the same correlation_id for every ping of one stream: the first ping starts the card and sends one alert, further "running" pings move it silently, and the first "done"/"failed" sends one completion alert and ends it. Free accounts get a small number of NEW streams per day; updates and the final ping are never charged.

NameTypeReqDescription
ack_timeout_secondsinteger–Optional acknowledgement deadline in seconds.
actioninteger–Quick-action slot to attribute the stream to (supplies the icon and sound).
correlation_idstringyesThe stream key. Reuse it on every ping of the same stream.
dataobject–Arbitrary structured context (max 25 keys / 8KB), returned on read surfaces after connector privacy filtering. Do not put secrets in data.
invite_codestringyesRoom invite code.
live_statusobjectyesThe live card's state. Only state is required.
requires_ackboolean–Add an Acknowledge button; the first eligible member to tap resolves it for everyone. Does not raise the interruption level — set category "alert" for a time-sensitive start.
titlestring–Card title. Defaults to the selected quick action's label.
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

redeem_code ~95

Redeem a gifted Pro or promo code for the human account that connected this agent. Consumes a single-use code and grants Pro; no room or paid plan is required. Use only a code the user supplied for redemption. Existing eligibility and one-per-account limits apply. Do not retry a successful redemption.

NameTypeReqDescription
codestringyesThe 12-letter/digit gift or promo code. Case-insensitive; surrounding whitespace is trimmed.
NameTypeReqDescription
resultobjectyes–

No examples provided.

request_approval ~182

Ask the human to approve or reject an action, then block on their answer (pair with wait_for_approval). Delivered as a push to the user. Rate-limited.

NameTypeReqDescription
correlation_idstring–Your own id, echoed back unchanged on read.
dataobject–Arbitrary structured context, returned on reads after connector privacy filtering. Do not put secrets in data.
idempotency_keystring–Stable key so a retried call cannot create a second one.
invite_codestringyesRoom invite code.
optionsarray–Answers to choose between. Defaults to ["approve","deny"].
questionstringyesWhat you want the human to decide on.
titlestring–Optional short title for the request.
ttlinteger–Seconds the request stays open before it expires.
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

rotate_handle ~22

Rotate this agent's public handle — kill-switch for a leaked handle.

Input schema present but exposes no named parameters.

NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

set_avatar ~43

Set this agent's avatar. Must be one of the PingRoom bot avatars.

NameTypeReqDescription
avatar_idstringyesBot avatar id, e.g. "bots-3".
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

trigger_quick_action ~424

Press a room quick action, notifying its members. Rate-limited. Read the action's input_type first (list_quick_actions): location needs data.location, link needs data.url, file/photo/pdf need attachment_ids — a press without the matching detail is a 422 quick_action_input_required.

NameTypeReqDescription
ack_modestring–Confirmation rule for this press: any (default) resolves on the first confirmation; all waits for every original eligible recipient. Applies only when this press requires acknowledgement.
action_numberintegeryesQuick-action slot number (1–16). Slots 5–16 require the room owner to have Pro.
attachment_idsarray–Ids of up to 4 uploaded attachments (see upload_attachment). Required when the action's input_type is file, photo (jpg/png only) or pdf (pdf only); a mismatched type is a 422 quick_action_input_type.
dataobject–The detail this press carries. data.location satisfies an action whose input_type is location; data.url satisfies link. Only these two keys are accepted on a trigger.
invite_codestringyesRoom invite code.
is_urgentboolean–Deliver this one press time-sensitive so it breaks through Focus / Do Not Disturb and reaches members who muted the room or you (a block still wins). Send-time only — the action's saved configuration…
quick_action_idstring–Optional id of the action as read from list_quick_actions. When the slot has since moved pages the press is refused with 409 quick_action_layout_changed instead of firing the wrong Ping.
requires_ackboolean–Keep this one press open until an eligible recipient acknowledges it. Send-time only and elevating only: true adds the acknowledgement to an action that has none, false never disables the action's st…
trigger_sourcestring–Defaults to "manual". Only these two are client-settable — "webhook" and "system" are stamped server-side and are rejected here.
NameTypeReqDescription
resultobjectyesA privacy-minimized, chainable PingRoom notification result.

No examples provided.

update_quick_action ~222

Configure a numbered quick-action slot for a room the account owns.

NameTypeReqDescription
action_numberintegeryesQuick-action slot number (1–16). Slots 5–16 require the room owner to have Pro.
iconstringyesEmoji or icon id.
input_typestring–Detail every press of this action must carry: none (default), location (data.location), link (data.url), file (any attachment), photo (jpg/png attachment) or pdf (pdf attachment). A press without it…
invite_codestringyesRoom invite code.
labelstringyesButton label. Must be sent, but may be empty ("") — a Ping can be named by its emoji alone, and clients render an untitled one as just the emoji.
requires_ackboolean–Whether pings from this action remain open until one eligible recipient acknowledges them.
soundstring–Canonical sound id, e.g. "ting". Omit for the room default.
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

update_quick_actions ~171

Configure several of a room's quick-action slots in one call. Prefer this over repeated update_quick_action: each single-slot write wakes the owner's device with its own background refresh, so setting up four Pings one at a time spends four of a finite daily push budget on one operation. Slots you do not list are left exactly as they are, so this is also the right tool for editing a single Ping.

NameTypeReqDescription
actionsarrayyesAdd new pages as complete groups of four in order (5–8, 9–12, 13–16); the room owner needs Pro. The slots to write. Each action_number must appear at most once. Slots omitted here keep their current…
invite_codestringyesRoom invite code.
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

update_webhook ~238

Update an incoming webhook (by id) on a room the account owns — e.g. change its icon, title, message, or sound.

NameTypeReqDescription
action_numberinteger–Quick-action slot to attribute fires to.
colorstring–Hex color, e.g. "#e33122".
cooldown_secondsinteger–Minimum seconds between fires.
enabledboolean–Whether the webhook is active.
iconstring–A v3 room-icon catalog id, e.g. "bell". Call list_room_icons to discover the valid ids.
invite_codestringyesRoom invite code.
messagestring–Default push body (max 120 characters in private rooms, 160 in public rooms).
namestring–Webhook name (shown to the owner).
regenerate_secretboolean–Rotate the secret trigger URL.
soundstring–Canonical sound id, e.g. "ting".
titlestring–Push title used when the webhook fires.
webhook_idstringyesWebhook id (from list_webhooks or create_webhook).
NameTypeReqDescription
resultobjectyesAn incoming webhook. `webhook_url` embeds the secret — treat it as a credential.

No examples provided.

upload_attachment ~116

Upload a small file (max ~90 KiB over MCP; Pro account required) and get an attachment id to include in broadcast or ask_question via attachment_ids. Larger files: use the PingRoom CLI or agent REST API.

NameTypeReqDescription
content_base64stringyesBase64-encoded file bytes (standard alphabet, padding optional).
filenamestringyesFile name including extension, e.g. report.md.
mime_typestring–Optional MIME type, e.g. text/markdown. Defaults from the filename extension.
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

wait_for_ack ~86

Long-poll a generic acknowledgement-required ping until its confirmation rule is met (any: first confirmation; all: every original eligible recipient), it expires, or the timeout elapses. Questions use wait_for_answer instead.

NameTypeReqDescription
notification_idstringyesRoom notification id.
timeoutinteger–Seconds to hold the request open. Use 0 for an immediate authoritative state read.
NameTypeReqDescription
resultobjectyesA privacy-minimized, chainable PingRoom notification result.

No examples provided.

wait_for_answer ~66

Long-poll a question until it is answered or expires. Returns the state and, once answered, the chosen option value + label and the responder.

NameTypeReqDescription
question_idstringyesQuestion id.
timeoutinteger–Seconds to hold the request open (server-capped).
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

wait_for_approval ~64

Long-poll an approval request until the human decides or it expires. Returns the status and, once decided, the chosen option.

NameTypeReqDescription
approval_idstringyesApproval request id.
timeoutinteger–Seconds to hold the request open (server-capped).
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

wait_for_handoff ~103

Long-poll a Handoff until the human resolves it, it expires, or the bounded timeout elapses. For the onboarding Question returned by activate_agent_inbox, success requires an answered result with activation_completed true; use a bounded local deadline and treat any terminal answer without that stamp as incomplete.

NameTypeReqDescription
handoff_idstringyesHandoff id.
timeoutinteger–Seconds to hold the request open; use 0 for an immediate state read.
NameTypeReqDescription
result–yesPurpose-built PingRoom result with credential and account fields removed.

No examples provided.

wait_for_notification ~80

Long-poll for the next ping. Blocks until one arrives or the timeout elapses — the real-time inbound channel for an agent. The agent's own sends are excluded.

NameTypeReqDescription
afterstring–Cursor from the previous call; omit to get the current head.
timeoutinteger–Seconds to hold the request open (server-capped).
NameTypeReqDescription
resultobjectyes–

No examples provided.

Common questions

What is the PingRoom MCP server?

PingRoom is an MCP server listed in the public MCP registry as io.pingroom/pingroom. Send mobile pings and route human questions, approvals, and handoffs from AI agents. This page covers its hosted endpoint (https://api.pingroom.io/api/agent/mcp).

Is the PingRoom MCP server safe to use?

PingRoom scores 78 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the PingRoom MCP server expose?

PingRoom exposes 42 tools: connection_info, disconnect, redeem_code, list_rooms, list_quick_actions, and 37 more. Their descriptions and schemas cost roughly 4,979 tokens of context every time the server is loaded.

Does the PingRoom MCP server require authentication?

No. We connected to PingRoom without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the PingRoom MCP server still maintained?

PingRoom is still listed as active in the MCP registry. We last reached this channel on 24 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.