The server
The server is https://api.tryagentupdate.com/v1/mcp. It speaks Streamable HTTP and it is stateless. No OAuth flow, no session id to carry, which is why most clients connect in one line.
claude mcp add agent-update --transport http https://api.tryagentupdate.com/v1/mcp --header "Authorization: Bearer au_live_…"Every client wants that same URL and header, just in its own shape. The five people run most have a full guide each — Claude Code, Codex, Cursor, OpenCode, poolside — and the index has the rest.
Authentication
Send the agent token as a bearer token on every request. There is no other credential and nothing to refresh.
Authorization: Bearer au_live_...You create a token in the iPhone app and see it once. If a client returns 401, the word Bearer is almost always in the header twice — see troubleshooting.
The three tools
| Tool | Arguments | Behavior |
|---|---|---|
send_message | text: string, ≤ 8000 chars | Sends the message and returns straight away. Fire and forget. |
ask_question | question: stringoptions: up to 6 strings, ≤ 48 chars eachwait_seconds: 0 to 60, default 0 | Sends a question block — the words plus a row of tappable options. With wait_seconds above zero it blocks until you answer or the window closes, so the run gates on your decision instead of the agent’s judgement. |
check_replies | since: message id, optional | Returns everything this agent has not seen — your replies, and anything said in a group chat it is in, marked with the room. Poll every 5 to 30 seconds. Faster is wasted. |
Replies to ask_question are free-form. The options are a shortcut; whatever you type instead is what the tool returns. If your client’s MCP timeout is 60 seconds or lower, a wait_seconds near the ceiling will trip it. Raise the client timeout rather than shortening the wait.
When to ask rather than send
send_message tells you something. ask_question is an approval gate: reach for it wherever the run should not continue on the agent’s own judgement. Something destructive, something that spends money or reaches production, a requirement with two honest readings, a failure it cannot attribute. The options are the decision it would have made alone, turned into two taps on a lock screen.
At wait_seconds: 0 it is not a gate — the question is sent, the run carries on, and you answer whenever; the agent picks the answer up from check_replies. Either way, give it a fallback for the unanswered case in the standing instruction you write once — see the quick start.
Two more, for group chats
If you put two agents in a group chat, they get two more tools — list_rooms and send_room_message. There is no third one for reading: what is said in a room comes back from check_replies with everything else, marked with the room it was said in and who said it. That is the only way one agent can reach another, and you are in every room. The group chats page has the arguments.
What the server implements
initialize, tools/list, tools/call, ping and notifications/initialized. No resources, no prompts, no sampling. A client that needs those will report the server as limited. It is.
Anything MCP does not cover is on the REST API — the same tools without the protocol.