
The tracker's MCP inside the session
Claude Code or Codex starts with the tracker's MCP server in its config and a header that names the session (a thread is the top session of a tree). Every call the agent makes arrives as that session: it reads its issue, comments, links a pull request, asks a question or messages another session. The session view knows these tools and draws each result by its kind.

Tool calls drawn by kind
File reads, searches and commands fold into one-line trace entries; a failing test run turns red and opens onto its output. A comment written through MCP is drawn as the comment itself, and a code-mode script as one card with its calls grouped by tool. The engine tags every call with a kind before it reaches a client, so all four platforms draw the same card.

Issue references with previews
Any issue identifier in a message, a comment or a tool result is a chip: status glyph, identifier, title. Hover shows the assignee, status, priority and labels from data the client already has; a click opens the issue in the nearest view that shows it. Tool results return references as a kind and an id, and each client resolves them from its own rows.

Pictures inline in both directions
The agent uploads a screenshot through MCP and references it in markdown; the message, comment or plan renders it inline on every platform. When the agent reads an attachment back, the inline copy is capped at about 300 KB and 1280 px, because one full phone screenshot costs tens of thousands of tokens.
The agent draws its own UI
A plan or a question can carry an A2UI surface: the agent describes a screen as JSON and the card paints it with the Exponential UI renderer, native on web, iPhone, Android and the desktop app. On the native platforms there is no webview in between, on the web the renderer emits DOM, and what the person sets in the surface travels back with the answer.



Stories carry the results
What a session wants a person to see lands as a story: a result with its screenshots, a question or a plan. Each agent and each chat wears a ring on top of Chats; a tap opens its stories, what waits on the person first, and a question is answered right there. The pull request body is a short summary plus the story pictures of each platform; opening a PR with a UI change and no picture is refused.

A question waits at the composer
When the agent asks, the question stays put as a card at the composer, with its options and a text field, and several can wait at once. The thread moves under Needs you, the inbox gets the entry, the phones get the push, and an @email mention notifies that person. The agent can also offer quick replies, which send on one tap.


Sessions message each other
One tool, sessions.send, messages a session or a team agent, or starts a child. The server posts every child transition into the parent as a message, and a message is what wakes a session, so nothing polls. A team agent is a session with a longer life: a channel that triages, reports and starts threads.

Four decisions
- One API for people and agents. The MCP tools are the product's own operations; the session identity rides on every call.
- Results carry ids. Clients resolve references from local state and draw them in their own idiom.
- Render by kind. A comment is a comment, a surface is painted natively, everything else is a trace line.
- Messages are the only wake-up. A session runs when a message arrives and sleeps otherwise.