accueil / serveurs / Communication / io.pingroom/pingroom
io.pingroom/pingroom
serveur MCP (Model Context Protocol) · PingRoom 0.1.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que io.pingroom/pingroom est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.pingroom/pingroom » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 41 outils
- activate_agent_inbox≈ 282 tokens
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.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "activate_agent_inbox", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - ask_question≈ 1070 tokens
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.
Paramètres, retour & exemple (11)
Paramètresttl· integer · optionnel
Seconds the question stays open before it expires.data· object · optionnel
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.checklist for a checklist.prompt· string · requis
The question the person reads.context· string · optionnel
Optional secondary line, e.g. a build number.options· array · optionnel
Answer options in display order. Omit for a default Approve/Deny.reply_to· string · optionnel
Optional routing pointer, echoed back unchanged.text_input· object · optionnel
Invite a typed answer (on its own, or alongside options). max_length is capped at 60.invite_code· string · requis
Room invite code.attachment_ids· array · optionnel
Ids of up to 4 uploaded attachments (see upload_attachment) to include. Uploading requires a Pro account.correlation_id· string · optionnel
Your own id, echoed back unchanged on read.idempotency_key· string · optionnel
Stable key so a retried call cannot create a second one.
Exemple d'appel{"name": "ask_question", "arguments": {"prompt": "texte", "invite_code": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - broadcast≈ 1522 tokens
Send a custom ping to a room the account belongs to. Pass data.checklist.items to send a checklist the room ticks through together; read the ticks back as checklist_state. Rate-limited. In someone else's personal room only a Pro account may send it, text only (a link in the message is refused too), without title, is_urgent or requires_ack (all three are ignored there), and it counts toward the visitor's two-ping cap; otherwise use trigger_quick_action there.
Paramètres, retour & exemple (13)
Paramètresdata· object · optionnel
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, data.checklist for a checklist, and data.url + data.button_label are reserved for a tappable link ping.title· string · optionnel
Optional headline. Defaults to the room name, which someone else's personal room always keeps.message· string · requis
Ping body text (max 120 characters in private rooms, 160 in public rooms).ack_mode· string · optionnel · any | all
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.reply_to· string · optionnel
Id of the ping this one answers (notification id or correlation id).is_urgent· boolean · optionnel
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 and asks nothing of the recipient.action_icon· string · optionnel
Optional emoji shown with the ping.invite_code· string · requis
Room invite code.requires_ack· boolean · optionnel
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 ack that also breaks through Focus.action_number· integer · optionnel
Optional quick-action slot to attribute the ping to.attachment_ids· array · optionnel
Ids of up to 4 uploaded attachments (see upload_attachment) to include. Uploading requires a Pro account.correlation_id· string · optionnel
Your own id, echoed back unchanged on read.ack_timeout_seconds· integer · optionnel
Optional acknowledgement deadline in seconds.
Exemple d'appel{"name": "broadcast", "arguments": {"message": "texte", "invite_code": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": {}}} - cancel_question≈ 166 tokens
Withdraw a still-pending question you asked.
Paramètres, retour & exemple (1)
Paramètresquestion_id· string · requis
Question id.
Exemple d'appel{"name": "cancel_question", "arguments": {"question_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - connection_info≈ 354 tokens
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.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "connection_info", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": {}}} - create_handoff≈ 646 tokens
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.
Paramètres, retour & exemple (10)
Paramètresdata· object · optionnel
Structured context returned on read surfaces after connector privacy filtering. Do not put secrets in data.kind· string · requis · ack | question
ack asks the human to acknowledge; question asks them to choose an option.prompt· string · requis
The work/request shown to the human.options· array · optionnel
Required for question and forbidden for ack. Each item may be a label string or a structured option.urgency· string · optionnel · active | passive
Notification interruption level. Defaults to active.audience· object · requisreply_to· string · optionnel
Optional routing pointer.expires_in· integer · optionnel
Seconds before the handoff expires; the server clamps this to its safe range.correlation_id· string · optionnel
Your own stable correlation id.idempotency_key· string · optionnel
Stable key for at-most-once creation across both Ack and Question kinds.
Exemple d'appel{"name": "create_handoff", "arguments": {"kind": "ack", "prompt": "texte", "audience": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - create_public_room≈ 478 tokens
Create a publicly discoverable room with a unique @handle. Counts toward the free-plan five-room cap.
Paramètres, retour & exemple (10)
Paramètresicon· string · requis
A v3 room-icon catalog id, e.g. "bell". Call list_room_icons to discover the valid ids.name· string · requis
Room display name.color· string · requis
Hex color, e.g. "#e33122".handle· string · requis
Globally unique @handle (vanity URL): lowercase letters, digits, underscores.category· string · optionnel
Discovery category.show_owner· boolean · optionnel
Whether the owner is shown publicly. Defaults to true.description· string · optionnel
Short room description shown in public discovery.location_name· string · optionnel
Place name shown in nearby discovery. Send all three location fields or none.location_latitude· number · optionnel
Latitude in decimal degrees. Send all three location fields or none.location_longitude· number · optionnel
Longitude in decimal degrees. Send all three location fields or none.
Exemple d'appel{"name": "create_public_room", "arguments": {"icon": "texte", "name": "texte", "color": "texte", "handle": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - create_room≈ 272 tokens
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.
Paramètres, retour & exemple (3)
Paramètresicon· string · requis
A v3 room-icon catalog id, e.g. "bell". Call list_room_icons to discover the valid ids.name· string · requis
Room display name.color· string · requis
Hex color, e.g. "#e33122".
Exemple d'appel{"name": "create_room", "arguments": {"icon": "texte", "name": "texte", "color": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - create_webhook≈ 615 tokens
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.
Paramètres, retour & exemple (10)
Paramètresicon· string · optionnel
A v3 room-icon catalog id, e.g. "bell". Call list_room_icons to discover the valid ids.name· string · requis
Webhook name (shown to the owner).color· string · optionnel
Hex color, e.g. "#e33122".sound· string · optionnel
Canonical sound id, e.g. "ting". Omit for the room default.title· string · optionnel
Optional push title used when the webhook fires.enabled· boolean · optionnel
Whether the webhook is active. Defaults to true.message· string · optionnel
Optional default push body (max 120 characters in private rooms, 160 in public rooms).invite_code· string · requis
Room invite code.action_number· integer|null · optionnel
Quick-action slot whose label, sound, and acknowledgement preset fires use. Omit or pass null for an independent webhook with no Quick Ping preset.cooldown_seconds· integer · optionnel
Minimum seconds between fires. Defaults to 5.
Exemple d'appel{"name": "create_webhook", "arguments": {"name": "texte", "invite_code": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": {}}} - delete_attachment≈ 184 tokens
Delete an attachment this agent uploaded that is not yet claimed by a ping.
Paramètres, retour & exemple (1)
Paramètresattachment_id· string · requis
Attachment id returned by upload_attachment.
Exemple d'appel{"name": "delete_attachment", "arguments": {"attachment_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - delete_webhook≈ 196 tokens
Delete an incoming webhook (by id) from a room the account owns.
Paramètres, retour & exemple (2)
Paramètreswebhook_id· string · requis
Webhook id (from list_webhooks or create_webhook).invite_code· string · requis
Room invite code.
Exemple d'appel{"name": "delete_webhook", "arguments": {"webhook_id": "texte", "invite_code": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - disconnect≈ 368 tokens
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.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "disconnect", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": {}}} - get_approval≈ 171 tokens
Fetch the current status of an approval request without blocking.
Paramètres, retour & exemple (1)
Paramètresapproval_id· string · requis
Approval request id.
Exemple d'appel{"name": "get_approval", "arguments": {"approval_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - get_attachment≈ 210 tokens
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.
Paramètres, retour & exemple (1)
Paramètresattachment_id· string · requis
Attachment id returned by upload_attachment.
Exemple d'appel{"name": "get_attachment", "arguments": {"attachment_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - get_handoff≈ 169 tokens
Fetch the authoritative current state of one Handoff without blocking.
Paramètres, retour & exemple (1)
Paramètreshandoff_id· string · requis
Handoff id.
Exemple d'appel{"name": "get_handoff", "arguments": {"handoff_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - get_live_status≈ 346 tokens
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, duration_seconds, 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.
Paramètres, retour & exemple (2)
Paramètresinvite_code· string · requis
Room invite code.correlation_id· string · requis
The stream key used when the stream was started.
Exemple d'appel{"name": "get_live_status", "arguments": {"invite_code": "texte", "correlation_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - get_notification≈ 453 tokens
Fetch one visible ping by notification id, including its current action_state and, once anything on its data.checklist is checked, checklist_state.
Paramètres, retour & exemple (1)
Paramètresnotification_id· string · requis
Room notification id.
Exemple d'appel{"name": "get_notification", "arguments": {"notification_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": {}}} - get_question≈ 167 tokens
Fetch the current state of a question without blocking.
Paramètres, retour & exemple (1)
Paramètresquestion_id· string · requis
Question id.
Exemple d'appel{"name": "get_question", "arguments": {"question_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - get_room≈ 166 tokens
Fetch a single room by its invite code, including members and quick actions.
Paramètres, retour & exemple (1)
Paramètresinvite_code· string · requis
Room invite code.
Exemple d'appel{"name": "get_room", "arguments": {"invite_code": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - join_room≈ 192 tokens
Join a room using its invite code. Include the password only if the room is protected.
Paramètres, retour & exemple (2)
Paramètrespassword· string · optionnel
Only required for password-protected rooms.invite_code· string · requis
Room invite code.
Exemple d'appel{"name": "join_room", "arguments": {"invite_code": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_handoffs≈ 298 tokens
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.
Paramètres, retour & exemple (3)
Paramètrespage· integer · optionnel
Page number, newest first.limit· integer · optionnel
Handoffs per page. Defaults to 10; maximum 25.state· string · optionnel · open | all
Filter to open Handoffs or include all states.
Exemple d'appel{"name": "list_handoffs", "arguments": {"page": 1, "limit": 1, "state": "open"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": {}}} - list_notifications≈ 614 tokens
List a bounded page of recent pings across approved rooms, newest first. Use page to continue while has_more is true.
Paramètres, retour & exemple (4)
Paramètresdate· string · optionnel
Only pings created on this calendar date, e.g. "2026-08-25".page· integer · optionnel
Page number, newest first.type· string · optionnel · received | sent
Narrow to pings you received or pings you sent. Omit for both.limit· integer · optionnel
Pings per page. Defaults to 10; maximum 25.
Exemple d'appel{"name": "list_notifications", "arguments": {"date": "texte", "page": 1, "type": "received", "limit": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": {}}} - list_questions≈ 295 tokens
List a bounded page of questions you asked, newest first. Optionally filter by state; use page while has_more is true.
Paramètres, retour & exemple (3)
Paramètrespage· integer · optionnel
Page number, newest first.limit· integer · optionnel
Questions per page. Defaults to 10; maximum 25.state· string · optionnel · pending | answered | expired | cancelled | all
Filter by state. Omit for all.
Exemple d'appel{"name": "list_questions", "arguments": {"page": 1, "limit": 1, "state": "pending"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": {}}} - list_quick_actions≈ 230 tokens
List the quick actions configured for a room.
Paramètres, retour & exemple (1)
Paramètresinvite_code· string · requis
Room invite code.
Exemple d'appel{"name": "list_quick_actions", "arguments": {"invite_code": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": []}} - list_room_icons≈ 178 tokens
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.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_room_icons", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - list_rooms≈ 347 tokens
List the rooms the authenticated account belongs to.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_rooms", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": []}} - list_webhooks≈ 312 tokens
List the incoming webhooks (with their trigger URLs) for a room the account owns.
Paramètres, retour & exemple (1)
Paramètresinvite_code· string · requis
Room invite code.
Exemple d'appel{"name": "list_webhooks", "arguments": {"invite_code": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": []}} - live_status≈ 1355 tokens
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 of an open stream are never charged; a first ping that is already "done"/"failed" counts as a new stream.
Paramètres, retour & exemple (8)
Paramètresdata· object · optionnel
Arbitrary structured context (max 25 keys / 8KB), returned on read surfaces after connector privacy filtering. Do not put secrets in data.title· string · optionnel
Card title. Defaults to the selected quick action's label.action· integer · optionnel
Quick-action slot to attribute the stream to (supplies the icon and sound).invite_code· string · requis
Room invite code.live_status· object · requis
The live card's state. Only state is required.requires_ack· boolean · optionnel
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.correlation_id· string · requis
The stream key. Reuse it on every ping of the same stream.ack_timeout_seconds· integer · optionnel
Optional acknowledgement deadline in seconds.
Exemple d'appel{"name": "live_status", "arguments": {"invite_code": "texte", "live_status": {}, "correlation_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - request_approval≈ 460 tokens
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 connected human only, so like a direct ask_question to them it needs no trigger permission in the room; public and personal rooms are refused. Rate-limited.
Paramètres, retour & exemple (8)
Paramètresttl· integer · optionnel
Seconds the request stays open before it expires.data· object · optionnel
Arbitrary structured context, returned on reads after connector privacy filtering. Do not put secrets in data.title· string · optionnel
Optional short title for the request.options· array · optionnel
Answers to choose between. Defaults to ["approve","deny"].question· string · requis
What you want the human to decide on.invite_code· string · requis
Room invite code.correlation_id· string · optionnel
Your own id, echoed back unchanged on read.idempotency_key· string · optionnel
Stable key so a retried call cannot create a second one.
Exemple d'appel{"name": "request_approval", "arguments": {"question": "texte", "invite_code": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - rotate_handle≈ 146 tokens
Rotate this agent's public handle — kill-switch for a leaked handle.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "rotate_handle", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - set_avatar≈ 170 tokens
Set this agent's avatar. Must be one of the PingRoom bot avatars.
Paramètres, retour & exemple (1)
Paramètresavatar_id· string · requis
Bot avatar id, e.g. "bots-3".
Exemple d'appel{"name": "set_avatar", "arguments": {"avatar_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - trigger_quick_action≈ 1204 tokens
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. In someone else's personal room is_urgent and requires_ack are ignored; only the owner's own setting on the action applies.
Paramètres, retour & exemple (9)
Paramètresdata· object · optionnel
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.ack_mode· string · optionnel · any | all
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.is_urgent· boolean · optionnel
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 is unchanged.invite_code· string · requis
Room invite code.requires_ack· boolean · optionnel
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 stored ack policy.action_number· integer · requis
Quick-action slot number (1–16). Slots 5–16 require the room owner to have Pro.attachment_ids· array · optionnel
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.trigger_source· string · optionnel · manual | location
Defaults to "manual". Only these two are client-settable — "webhook" and "system" are stamped server-side and are rejected here.quick_action_id· string · optionnel
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.
Exemple d'appel{"name": "trigger_quick_action", "arguments": {"invite_code": "texte", "action_number": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": {}}} - update_quick_action≈ 456 tokens
Configure a numbered quick-action slot for a room the account owns. Sends a background room refresh to room members' devices.
Paramètres, retour & exemple (7)
Paramètresicon· string · requis
Emoji or icon id.label· string · requis
Button 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.sound· string · optionnel
Canonical sound id, e.g. "ting". Omit for the room default.input_type· string · optionnel · none | location | link | file | photo | pdf
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 is a 422 quick_action_input_required.invite_code· string · requis
Room invite code.requires_ack· boolean · optionnel
Whether pings from this action remain open until one eligible recipient acknowledges them.action_number· integer · requis
Quick-action slot number (1–16). Slots 5–16 require the room owner to have Pro.
Exemple d'appel{"name": "update_quick_action", "arguments": {"icon": "texte", "label": "texte", "invite_code": "texte", "action_number": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - update_quick_actions≈ 635 tokens
Configure several of a room's quick-action slots in one call. Prefer this over repeated update_quick_action: each single-slot write wakes room members' devices 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.
Paramètres, retour & exemple (2)
Paramètresactions· array · requis
Add 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 configuration — nothing in this tool deletes an action.invite_code· string · requis
Room invite code.
Exemple d'appel{"name": "update_quick_actions", "arguments": {"actions": [], "invite_code": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - update_webhook≈ 634 tokens
Update an incoming webhook (by id) on a room the account owns — e.g. change its icon, title, message, or sound.
Paramètres, retour & exemple (12)
Paramètresicon· string · optionnel
A v3 room-icon catalog id, e.g. "bell". Call list_room_icons to discover the valid ids.name· string · optionnel
Webhook name (shown to the owner).color· string · optionnel
Hex color, e.g. "#e33122".sound· string · optionnel
Canonical sound id, e.g. "ting".title· string · optionnel
Push title used when the webhook fires.enabled· boolean · optionnel
Whether the webhook is active.message· string · optionnel
Default push body (max 120 characters in private rooms, 160 in public rooms).webhook_id· string · requis
Webhook id (from list_webhooks or create_webhook).invite_code· string · requis
Room invite code.action_number· integer|null · optionnel
Quick-action slot whose label, sound, and acknowledgement preset fires use. Pass null to clear the preset and make the webhook independent.cooldown_seconds· integer · optionnel
Minimum seconds between fires.regenerate_secret· boolean · optionnel
Rotate the secret trigger URL.
Exemple d'appel{"name": "update_webhook", "arguments": {"webhook_id": "texte", "invite_code": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": {}}} - upload_attachment≈ 300 tokens
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.
Paramètres, retour & exemple (3)
Paramètresfilename· string · requis
File name including extension, e.g. report.md.mime_type· string · optionnel
Optional MIME type, e.g. text/markdown. Defaults from the filename extension.content_base64· string · requis
Base64-encoded file bytes (standard alphabet, padding optional).
Exemple d'appel{"name": "upload_attachment", "arguments": {"filename": "texte", "content_base64": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - wait_for_ack≈ 516 tokens
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.
Paramètres, retour & exemple (2)
Paramètrestimeout· integer · optionnel
Seconds to hold the request open. Use 0 for an immediate authoritative state read.notification_id· string · requis
Room notification id.
Exemple d'appel{"name": "wait_for_ack", "arguments": {"notification_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": {}}} - wait_for_answer≈ 223 tokens
Long-poll a question until it is answered or expires. Returns the state and, once answered, the chosen option value + label and the responder.
Paramètres, retour & exemple (2)
Paramètrestimeout· integer · optionnel
Seconds to hold the request open (server-capped).question_id· string · requis
Question id.
Exemple d'appel{"name": "wait_for_answer", "arguments": {"question_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - wait_for_approval≈ 222 tokens
Long-poll an approval request until the human decides or it expires. Returns the status and, once decided, the chosen option.
Paramètres, retour & exemple (2)
Paramètrestimeout· integer · optionnel
Seconds to hold the request open (server-capped).approval_id· string · requis
Approval request id.
Exemple d'appel{"name": "wait_for_approval", "arguments": {"approval_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - wait_for_handoff≈ 272 tokens
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.
Paramètres, retour & exemple (2)
Paramètrestimeout· integer · optionnel
Seconds to hold the request open; use 0 for an immediate state read.handoff_id· string · requis
Handoff id.
Exemple d'appel{"name": "wait_for_handoff", "arguments": {"handoff_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - wait_for_notification≈ 533 tokens
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.
Paramètres, retour & exemple (2)
Paramètresafter· string · optionnel
Cursor from the previous call; omit to get the current head.timeout· integer · optionnel
Seconds to hold the request open (server-capped).
Exemple d'appel{"name": "wait_for_notification", "arguments": {"after": "texte", "timeout": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": {}}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».