On this page

Developer docs / MCP

Give your agent a place to talk.

Connect an MCP client to Pushyou. Send requests, read replies, and report results in the same conversation.

Set up your connection

01Before you start

Start with an account and a conversation in the Pushyou internal test app you were invited to. Web sign-in requires QR approval in that app. The setup guide lets you choose a conversation and verify delivery.

For OAuth, choose the conversations and permissions during the approval flow; no separate API key is needed. Program keys are an alternative configured in Settings → Connections. Creating a new conversation requires all-room access and conversations:write.

02Authentication

The server uses Streamable HTTP. With OAuth, your client opens an approval flow; approve the requested conversations and permissions in Pushyou. With a program key, the same scope checks apply. Keep OAuth and Bearer-key configurations separate.

Remote MCP server
https://pushyou.app/mcp
Choose your client
Authentication

Add the server entry to ~/.codex/config.toml and run codex mcp login pushyou. Remove any existing Bearer key configuration for Pushyou to use OAuth. You can also use the MCP authentication control in the app or IDE.

MCP configuration
[mcp_servers.pushyou]
url = "https://pushyou.app/mcp"

03Verify with a real exchange

Start with pushyou_get_account, then pushyou_list_conversations. Confirm the account, permissions and target room before sending. Replace YOUR_CONVERSATION_ID below. These are MCP tool arguments, not REST request bodies.

pushyou_get_account
{}
pushyou_list_conversations
{
  "limit": 20
}
pushyou_send_message
{
  "conversation_id": "YOUR_CONVERSATION_ID",
  "id": "docs-mcp-message-01",
  "text": "Pushyou connection verified.",
  "notify": true
}

Reply to the message in Pushyou, then call pushyou_get_events once. Inspect events and next_cursor. A successful tool call does not prove the device received a push notification, and connecting MCP does not keep an agent running in the background.

pushyou_get_events
{
  "conversation_id": "YOUR_CONVERSATION_ID",
  "after": 0
}

MCP list tools use limit (1–50, default 20) and before. Event tools use after. List messages summarize cards; pushyou_get_message returns full content. Use pushyou_get_media for original photos or byte ranges of larger files.

04Replies & execution

Reply in the app, then fetch events. After actually handling an ordinary reply or action, save the result, send its ACK, and persist next_cursor. ACK does not remove an event or claim exclusive execution. Use one ordinary responder per room, or coordinate consumers yourself.

Tasks track approval and execution together. After the owner approves, a worker reads events with task_protocol=1, persists its execution token, claims the attempt, and keeps the claim alive with heartbeats. It saves the actual result before complete. Task completion also acknowledges the event; a standalone ACK cannot finish a pending task.

Task fields, claims and result contract (English)

Response receiver

For continuous replies, run the Node 22+ receiver with a REST program key. It saves results before sending and acknowledging. Keep the process running; it cannot work while the computer is asleep. Its Codex mode starts a dedicated session and does not attach to an existing chat.

Webhooks

Signed outbound webhooks are also supported. Configure them in the mobile app’s Response webhooks settings. Verify the original body signature and deduplicate delivery IDs. HTTP 2xx confirms receipt, not task completion. The downloadable workflow guide includes the signature and retry contract.

05Files & views

MCP uses pushyou_prepare_media_upload. Supply media_id, filename, content_type, byte size and SHA-256. POST the original bytes to the returned upload.url with its exact file-specific headers within five minutes, then send attachment_ids. The same preparation is available through REST. Do not substitute an account key or MCP OAuth token for the upload grant.

Use pushyou_set_view with a report, actions or html card to publish an optional conversation view. Set view to null to remove it. The view opens from its owning conversation. HTML cannot access external networks, app credentials or browser storage; declared actions return events to the same room.

Card / Field
Request shape
Card =
  { type: "report", title: string, items: { title: string, body?: string, label?: string }[] }
| { type: "actions", title: string, body?: string, actions: { id: ID, label: string }[] }
| { type: "html", title: string, html: string, height?: integer, actions?: { id: ID, label: string }[] }

Field = { id: ID, label: string, type: "text" | "multiline" | "number" | "date" | "select" | "checkbox", required?: boolean, options?: string[], min?: number, max?: number }

06Tool reference

The server supports these tools. Your authenticated tools/list response includes only tools allowed by your connection, with their current input schemas. Room scope is checked again on every call.

pushyou_get_accountRead

Check connected account

Check the account and permissions for this connection.

pushyou_list_conversationsRead

List conversations

Page through your conversations.

pushyou_create_conversationWrite

Create conversation

Create a conversation with a name and ID. Every conversation supports all features.

pushyou_get_conversationRead

Get conversation

Read the conversation name, description and receiving state.

pushyou_update_conversationWrite

Update conversation

Change the name or description and pause or resume receiving.

pushyou_send_messageWrite

Send message

Send text, cards and uploaded attachments, with optional notifications.

pushyou_list_messagesRead

Read conversation

Read incoming messages and app replies. Cards are summarized.

pushyou_get_messageRead

Get message

Read one message's complete content and card.

pushyou_get_mediaRead

Read original media

Read original photos in allowed conversations. Fetch video and large files in byte ranges.

pushyou_prepare_media_uploadWrite

Prepare media upload

Prepare a temporary upload for one photo or video with this connection's permissions. Attach it after uploading.

pushyou_get_eventsRead

Get user responses

Read replies and submitted button actions after the last sequence.

pushyou_ack_eventWrite

Acknowledge a response

Mark a response handled after its actual processing finishes.

pushyou_get_viewRead

Get conversation view

Read the full view published in a conversation.

pushyou_set_viewWrite

Publish conversation view

Publish, replace or remove reports, buttons and HTML views in a conversation.

pushyou_list_historyRead

Get history

Page through incoming, action and saved history in your account.

pushyou_create_taskWrite

Request task approval

Track approval and execution results in one task.

pushyou_get_taskRead

Get task status

Read the current status, attempt, inputs and result.

pushyou_claim_taskWrite

Claim task execution

Only the program that claims the approved attempt may execute it.

pushyou_heartbeat_taskWrite

Keep task claim alive

Renew the current execution claim's lease.

pushyou_complete_taskWrite

Report task result

Record the actual result and acknowledge the corresponding event.

pushyou_list_actionsRead

List conversation actions

Read the executable forms registered in the conversation.

pushyou_set_actionWrite

Publish conversation action

Publish conversation forms for the user to submit.

pushyou_get_task_versionsRead

Read request versions

Review previous versions of the same request.

pushyou_revise_taskWrite

Revise request

Return an updated request for owner approval.

07Troubleshooting

REST failures return a non-2xx status and {"error": "…"}. MCP tool failures are reported by the client; check the structured error and whether the connection still has permission.

400Validate IDs, required fields, types, cursor and request size.
401Authenticate again or check whether the key expired, was rotated or revoked.
403Check operation permissions, allowed rooms and whether the room is paused.
404Check the resource ID and endpoint base. MCP /mcp is a protocol endpoint, not a web page.
409Inspect the conflict: reused ID with different content, stale revision, task claim, or already-attached media. Do not blindly repeat external work.
410The conversation is being deleted or the resource is no longer available. Check its current state.
413Reduce the JSON body or file size; check the file upload limits.
415Use a supported photo or video format with valid file bytes.
416Check that the requested byte range is within the file.
429Back off on request limits. For media quota failures, free unused storage before retrying. New messages are limited to 60/minute per room.
500Retry transient failures with backoff and stable IDs. If external work may already have run, inspect its result before running it again.

Ready to connect your own conversation?

Choose your room, approve access, and check the first message and reply in guided setup.

Set up your connection