MCP server for interacting with your LINE Official Account
PingRoom is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Send mobile pings and route human questions, approvals, and handoffs from AI agents.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http pingroom-mcp https://api.pingroom.io/api/agent/mcp
# 2 — ask your agent for something these tools do
# connection_info, disconnect, list_rooms and 38 more
PingRoom costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http pingroom-mcp https://api.pingroom.io/api/agent/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
41 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
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
No parameter schema on file.
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 matc
No parameter schema on file.
List the rooms the authenticated account belongs to.
No parameter schema on file.
List the quick actions configured for a room.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| invite_code | string | yes | Room invite code. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| invite_code | string | yes | Room invite code. |
| action_number | integer | yes | Quick-action slot number (1–16). Slots 5–16 require the room owner to have Pro. |
| trigger_source | string | no | Defaults to "manual". Only these two are client-settable — "webhook" and "system" are stamped server-side and are rejected here. |
| is_urgent | boolean | no | 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 |
| ack_mode | string | no | 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. |
| requires_ack | boolean | no | 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 sto |
| data | object | no | 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. |
| attachment_ids | array | no | 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. |
| quick_action_id | string | no | 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. |
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. Not available in personal rooms (use trigger_quick_action there).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| invite_code | string | yes | Room invite code. |
| message | string | yes | Ping body text (max 120 characters in private rooms, 160 in public rooms). |
| title | string | no | Optional headline. Defaults to the room name. |
| action_number | integer | no | Optional quick-action slot to attribute the ping to. |
| action_icon | string | no | Optional emoji shown with the ping. |
| data | object | no | 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.checkl |
| correlation_id | string | no | Your own id, echoed back unchanged on read. |
| reply_to | string | no | Id of the ping this one answers (notification id or correlation id). |
| is_urgent | boolean | no | 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 a |
| ack_mode | string | no | 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. |
| requires_ack | boolean | no | 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 a |
| ack_timeout_seconds | integer | no | Optional acknowledgement deadline in seconds. |
| attachment_ids | array | no | Ids of up to 4 uploaded attachments (see upload_attachment) to include. Uploading requires a Pro account. |
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 da
| Parameter | Type | Required | Notes |
|---|---|---|---|
| invite_code | string | yes | Room invite code. |
| correlation_id | string | yes | The stream key. Reuse it on every ping of the same stream. |
| live_status | object | yes | The live card's state. Only state is required. |
| title | string | no | Card title. Defaults to the selected quick action's label. |
| action | integer | no | Quick-action slot to attribute the stream to (supplies the icon and sound). |
| data | object | no | Arbitrary structured context (max 25 keys / 8KB), returned on read surfaces after connector privacy filtering. Do not put secrets in data. |
| requires_ack | boolean | no | 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. |
| ack_timeout_seconds | integer | no | Optional acknowledgement deadline in seconds. |
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, op
| Parameter | Type | Required | Notes |
|---|---|---|---|
| invite_code | string | yes | Room invite code. |
| correlation_id | string | yes | The stream key used when the stream was started. |
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.
No parameter schema on file.
List a bounded page of recent pings across approved rooms, newest first. Use page to continue while has_more is true.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| type | string | no | Narrow to pings you received or pings you sent. Omit for both. |
| date | string | no | Only pings created on this calendar date, e.g. "2026-08-25". |
| limit | integer | no | Pings per page. Defaults to 10; maximum 25. |
| page | integer | no | Page number, newest first. |
Fetch one visible ping by notification id, including its current action_state and, once anything on its data.checklist is checked, checklist_state.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| notification_id | string | yes | Room notification id. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| after | string | no | Cursor from the previous call; omit to get the current head. |
| timeout | integer | no | Seconds to hold the request open (server-capped). |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| notification_id | string | yes | Room notification id. |
| timeout | integer | no | Seconds to hold the request open. Use 0 for an immediate authoritative state read. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| invite_code | string | yes | Room invite code. |
| question | string | yes | What you want the human to decide on. |
| title | string | no | Optional short title for the request. |
| options | array | no | Answers to choose between. Defaults to ["approve","deny"]. |
| correlation_id | string | no | Your own id, echoed back unchanged on read. |
| data | object | no | Arbitrary structured context, returned on reads after connector privacy filtering. Do not put secrets in data. |
| ttl | integer | no | Seconds the request stays open before it expires. |
| idempotency_key | string | no | Stable key so a retried call cannot create a second one. |
Long-poll an approval request until the human decides or it expires. Returns the status and, once decided, the chosen option.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| approval_id | string | yes | Approval request id. |
| timeout | integer | no | Seconds to hold the request open (server-capped). |
Fetch the current status of an approval request without blocking.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| approval_id | string | yes | Approval request id. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| invite_code | string | yes | Room invite code. |
| prompt | string | yes | The question the person reads. |
| context | string | no | Optional secondary line, e.g. a build number. |
| options | array | no | Answer options in display order. Omit for a default Approve/Deny. |
| text_input | object | no | Invite a typed answer (on its own, or alongside options). max_length is capped at 60. |
| correlation_id | string | no | Your own id, echoed back unchanged on read. |
| reply_to | string | no | Optional routing pointer, echoed back unchanged. |
| data | object | no | 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.ch |
| ttl | integer | no | Seconds the question stays open before it expires. |
| attachment_ids | array | no | Ids of up to 4 uploaded attachments (see upload_attachment) to include. Uploading requires a Pro account. |
| idempotency_key | string | no | Stable key so a retried call cannot create a second one. |
Long-poll a question until it is answered or expires. Returns the state and, once answered, the chosen option value + label and the responder.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| question_id | string | yes | Question id. |
| timeout | integer | no | Seconds to hold the request open (server-capped). |
Fetch the current state of a question without blocking.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| question_id | string | yes | Question id. |
List a bounded page of questions you asked, newest first. Optionally filter by state; use page while has_more is true.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| state | string | no | Filter by state. Omit for all. |
| limit | integer | no | Questions per page. Defaults to 10; maximum 25. |
| page | integer | no | Page number, newest first. |
Withdraw a still-pending question you asked.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| question_id | string | yes | Question id. |
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_compl
No parameter schema on file.
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | yes | ack asks the human to acknowledge; question asks them to choose an option. |
| prompt | string | yes | The work/request shown to the human. |
| audience | object | yes | — |
| expires_in | integer | no | Seconds before the handoff expires; the server clamps this to its safe range. |
| urgency | string | no | Notification interruption level. Defaults to active. |
| options | array | no | Required for question and forbidden for ack. Each item may be a label string or a structured option. |
| data | object | no | Structured context returned on read surfaces after connector privacy filtering. Do not put secrets in data. |
| correlation_id | string | no | Your own stable correlation id. |
| reply_to | string | no | Optional routing pointer. |
| idempotency_key | string | no | Stable key for at-most-once creation across both Ack and Question kinds. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| handoff_id | string | yes | Handoff id. |
| timeout | integer | no | Seconds to hold the request open; use 0 for an immediate state read. |
Fetch the authoritative current state of one Handoff without blocking.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| handoff_id | string | yes | Handoff id. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| state | string | no | Filter to open Handoffs or include all states. |
| limit | integer | no | Handoffs per page. Defaults to 10; maximum 25. |
| page | integer | no | Page number, newest first. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| filename | string | yes | File name including extension, e.g. report.md. |
| content_base64 | string | yes | Base64-encoded file bytes (standard alphabet, padding optional). |
| mime_type | string | no | Optional MIME type, e.g. text/markdown. Defaults from the filename extension. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| attachment_id | string | yes | Attachment id returned by upload_attachment. |
Delete an attachment this agent uploaded that is not yet claimed by a ping.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| attachment_id | string | yes | Attachment id returned by upload_attachment. |
Fetch a single room by its invite code, including members and quick actions.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| invite_code | string | yes | Room invite code. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Room display name. |
| icon | string | yes | A v3 room-icon catalog id, e.g. "bell". Call list_room_icons to discover the valid ids. |
| color | string | yes | Hex color, e.g. "#e33122". |
Create a publicly discoverable room with a unique @handle. Counts toward the free-plan five-room cap.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Room display name. |
| icon | string | yes | A v3 room-icon catalog id, e.g. "bell". Call list_room_icons to discover the valid ids. |
| color | string | yes | Hex color, e.g. "#e33122". |
| handle | string | yes | Globally unique @handle (vanity URL): lowercase letters, digits, underscores. |
| description | string | no | Short room description shown in public discovery. |
| category | string | no | Discovery category. |
| show_owner | boolean | no | Whether the owner is shown publicly. Defaults to true. |
| location_name | string | no | Place name shown in nearby discovery. Send all three location fields or none. |
| location_latitude | number | no | Latitude in decimal degrees. Send all three location fields or none. |
| location_longitude | number | no | Longitude in decimal degrees. Send all three location fields or none. |
Join a room using its invite code. Include the password only if the room is protected.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| invite_code | string | yes | Room invite code. |
| password | string | no | Only required for password-protected rooms. |
List the incoming webhooks (with their trigger URLs) for a room the account owns.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| invite_code | string | yes | Room invite code. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| invite_code | string | yes | Room invite code. |
| name | string | yes | Webhook name (shown to the owner). |
| title | string | no | Optional push title used when the webhook fires. |
| message | string | no | Optional default push body (max 120 characters in private rooms, 160 in public rooms). |
| icon | string | no | A v3 room-icon catalog id, e.g. "bell". Call list_room_icons to discover the valid ids. |
| color | string | no | Hex color, e.g. "#e33122". |
| sound | string | no | Canonical sound id, e.g. "ting". Omit for the room default. |
| action_number | integer/null | no | Quick-action slot whose label, sound, and acknowledgement preset fires use. Omit or pass null for an independent webhook with no Quick Ping preset. |
| enabled | boolean | no | Whether the webhook is active. Defaults to true. |
| cooldown_seconds | integer | no | Minimum seconds between fires. Defaults to 5. |
Update an incoming webhook (by id) on a room the account owns — e.g. change its icon, title, message, or sound.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| invite_code | string | yes | Room invite code. |
| webhook_id | string | yes | Webhook id (from list_webhooks or create_webhook). |
| name | string | no | Webhook name (shown to the owner). |
| title | string | no | Push title used when the webhook fires. |
| message | string | no | Default push body (max 120 characters in private rooms, 160 in public rooms). |
| icon | string | no | A v3 room-icon catalog id, e.g. "bell". Call list_room_icons to discover the valid ids. |
| color | string | no | Hex color, e.g. "#e33122". |
| sound | string | no | Canonical sound id, e.g. "ting". |
| action_number | integer/null | no | Quick-action slot whose label, sound, and acknowledgement preset fires use. Pass null to clear the preset and make the webhook independent. |
| enabled | boolean | no | Whether the webhook is active. |
| cooldown_seconds | integer | no | Minimum seconds between fires. |
| regenerate_secret | boolean | no | Rotate the secret trigger URL. |
Delete an incoming webhook (by id) from a room the account owns.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| invite_code | string | yes | Room invite code. |
| webhook_id | string | yes | Webhook id (from list_webhooks or create_webhook). |
Configure a numbered quick-action slot for a room the account owns. Sends a background room refresh to room members' devices.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| invite_code | string | yes | Room invite code. |
| action_number | integer | yes | Quick-action slot number (1–16). Slots 5–16 require the room owner to have Pro. |
| label | string | yes | 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. |
| icon | string | yes | Emoji or icon id. |
| sound | string | no | Canonical sound id, e.g. "ting". Omit for the room default. |
| requires_ack | boolean | no | Whether pings from this action remain open until one eligible recipient acknowledges them. |
| input_type | string | no | 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 i |
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
| Parameter | Type | Required | Notes |
|---|---|---|---|
| invite_code | string | yes | Room invite code. |
| actions | array | yes | 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 c |
Set this agent's avatar. Must be one of the PingRoom bot avatars.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| avatar_id | string | yes | Bot avatar id, e.g. "bots-3". |
Rotate this agent's public handle — kill-switch for a leaked handle.
No parameter schema on file.
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install PingRoom or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 0.1.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish PingRoom can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.