Share the link with friends using SKILL — they can also command the agent
Send this page's URL to anyone who has installed the push-server SKILL. They can open it directly without signing in. The channelCode in the URL is written to their browser's MCP configuration (LocalStorage) and the sub-channel list loads automatically, so they can create, edit, delete, reset, copy and test every channel in the combo group.
Once they put the channelCode into the X-Push-Channel-Code Header of their AI client's MCP config, the agent can push task results to that channel. They can also manage the sub channels right here, letting multiple agents or teammates share the same delivery targets.
Note: the channel code is a push credential. Only share it with trusted people. Recipients can only manage sub channels inside this combo channel, not access your account.
What this tool is
OnePass (push-server) is an aggregated message-push platform: one API pushes to WeCom, DingTalk, Feishu, email and custom webhooks, with Markdown, scheduled delivery and on-site bullet comments. The manual written for agents: skill.md.
- 18 push types: browser, WeCom group bot, DingTalk group bot, Feishu group bot, webhook push, BARK (iOS), Telegram, Discord, official email, plus custom mailboxes (QQ / 163 / 126 / Sohu / 139 / 189 / Sina / Aliyun).
- A channel code is a 32-char hex string. A combo channel (pushType=10) acts as the parent: push to the parent code and every sub channel receives it; push to a sub code and only that one does. This page manages the sub channels of this combo channel.
- Two ways in: MCP (for AI clients, adds 5 tools) and the anonymous HTTP push endpoint (for your own scripts, CI and monitoring alerts).
Wiring it into an AI client: the three MCP pieces
- Server URL:
https://www.phprm.com/services/push/mcp. It is remote — nothing to install locally.
- Auth header:
X-Push-Channel-Code carries the 32-char channel code; optional X-Mcp-Source labels the client.
- Channel code: exactly the
channelCode value in the link above — replace the ****** in the sample with it.
The 5 tools your agent gains
send_push_message: one message. head required, ≤200 chars; body Markdown ≤50000 chars; url click-through ≤500 chars; channelCode falls back to the header value.
send_multi_message: 1~32 messages at once, each may carry its own channelCode. Use it for batch collection, cross-channel delivery, or when the user asks for separate messages.
get_access_token: exchanges the channel code for a short-lived Bearer token (7200s default, scope defaults to basic) for the /oauth2/push/* management API — everything this page does (add / edit / delete / reset code) goes through it.
create_auth_session: no channel code needed. Opens a one-time third-party sign-in session for a user who has no channel yet and returns sessionId + authUrl (600s TTL, single use). Ask the user which login to use first — the supported set comes from the tool provider enum (currently Feishu / DingTalk / Gitee / GitHub).
poll_auth_session: no channel code needed. Polls that sessionId: pending means keep waiting at the returned pollInterval; success hands back the single-use personal channel code plus an mcpConfig shaped for the client named in X-Mcp-Source; expired / consumed / failed means stop and open a new session. The third-party token only ever travels between the user browser and the website — the agent never sees it.
No MCP? Plain HTTP pushes too
The GET push endpoint is anonymous: head / body / url / avatar all go in the query string, and delayMilliseconds schedules the push (up to 10 days).
Copy this and paste it to your friend's agent
Once your friend has the push-server SKILL installed, sending the block below to their own agent is enough (it already carries the shared channel code):
Known pitfalls (show this to the agent when debugging)
- The MCP endpoint connects anonymously and lists all 5 tools regardless — that does not mean the credential works. With a wrong channel code the tool list still loads and only the actual push fails (the two no-registration tools are the exception: they never look at the channel code).
- A channel code is not a Bearer token:
/oauth2/push/* only accepts Authorization: Bearer (from get_access_token), and that token cannot be used for the anonymous push endpoint.
/oauth2/push/* only reads query / form parameters — a JSON body is ignored; and business failures still return HTTP 200, so check whether code equals 0.
- Health check:
GET https://www.phprm.com/services/public/ping returns liveness plus one public demo channel (that demo code is shared by everyone — never treat it as your default channel).