Skip to main content
Subtext exposes session review as a set of MCP tools your agent calls directly. Each tool has a single, focused responsibility: list sessions, open one, summarize it, zoom into a time window, snapshot a moment, or close the session. This page documents every tool — what it does, what it returns, and how to call it.
These tools are part of the core Subtext MCP server and are available to all users. For live browser, comments, proof docs, and Sightmap tools, see the Verify (Beta) reference.

review-list-sessions

Find reviewable sessions. With no arguments it returns the most recent sessions for your org — newest first — as session URLs you can pass straight to review-open. Pass email_address or user_uid and it returns one user’s sessions instead. Call this first. Your agent needs to know which sessions exist before it can open one. Ask for as many as you need with limit, then pick the most recent, a specific URL, or the session closest to a known incident time. Parameters: Returns: a list of session URLs, newest first. Charges 1 credit.
The response is formatted text, not JSON:

Finding one user’s sessions

Pass the identity you have — an email address from a support ticket, or the uid your app sends at identification:
The identity-scoped response leads with who that identity resolved to, then reports the creation-time range it covered and whether more history exists before it:
To page further back, feed that oldest value into before. You can also set before directly to scope the list to a time window — the afternoon a bug was reported, for example.
review-open and review-summary also accept email_address and user_uid, but they jump straight to that user’s most recent session. Use review-list-sessions when you need to see more than one, or when the session you’re after isn’t the latest.
Ticket triage. Given a report against a known user, the three tools compose into a search: list that user’s sessions, review-summary the candidates to find the one matching the report, then review-open the match and investigate.

review-open

Open a session for review. Returns a client_id for follow-on calls, a trace_id, the event map, and a digest rollup of what happened. The event map is the skeletal outline of the session — pages visited, significant events, rough timestamps — without the full signal detail. Your agent should read the map before zooming in, so it can plan where to spend resolution budget. The digest rollup is a short prose summary of the session arc. If a sightmap is configured for your project, review-open also returns a sightmap_upload_url. The Subtext plugin pushes your local .sightmap/ files to that URL before the first snapshot, so every subsequent review-snapshot call is enriched with semantic component names, source paths, visibility, and interactivity instead of raw CSS selectors. Parameters: provide exactly one identifier. Returns: client_id (for review-zoom, review-snapshot, review-close), trace_id (for trace-keyed surfaces like comments), the session’s start time and identified user, the event map, the digest rollup, and — if a sightmap is configured — sightmap_upload_url.
The response is formatted text, not JSON — a preamble (client ID, session identity, who the user was, sightmap upload URL) followed by the event map:
The User: and User properties: lines carry whatever your app sent at identification — display name, email, uid, and custom user properties — so your agent can say whose session it’s reading instead of quoting a device ID. Both lines are omitted when the session was never identified; individual fields are omitted when unset. review-summary and the identity-scoped form of review-list-sessions render the same block.
Always read the event map before calling review-zoom. The map tells your agent where the interesting moments are, so it doesn’t waste resolution budget on quiet periods.

review-summary

Get a static “what happened” summary of the session at the default zoom level. It’s the cheapest call and completely stateless — it takes a session identifier directly, so you can call it before review-open (or without opening at all) as a quick first read. Because it creates no client_id, a summary can’t be followed by review-zoom or review-snapshot. When you need higher-fidelity signal over a specific interval, open the session and zoom instead. Parameters: provide exactly one identifier — the same set review-open accepts. Returns: the same session-identity and User: preamble review-open renders — minus the client ID and sightmap upload URL, which a summary doesn’t mint — followed by a static, one-shot event-stream summary at default resolution. Charges 1 credit; creates no client_id.
review-summary is static and stateless. If you need higher-fidelity signal over a specific interval, use review-open + review-zoom instead.

review-zoom

The live lens — zoom into an open session over a specific time window with configurable resolution. Where review-summary gives you the frozen overview, review-zoom lets you dial up detail over any slice of the signal stream. resolution is an allow-list mapping scopes, kinds, or tags to a grain. Omit it to get every kind at standard; provide it and unlisted kinds are excluded from the slice. Overlaps resolve finest-wins, so { "network": "standard", "error": "detail" } reads network normally but expands every error to its full payload. Parameters: The grain ladder, coarse → fine: digest (one rollup line per section × kind), standard (readable transcript, the default), machine (every signal, nothing merged), detail (every signal plus payloads — headers, bodies, stack traces). Returns: the selected signals as a transcript over the requested window at the requested grains.
Start with the full range and no resolution (everything at standard) to get your bearings, then narrow the window and raise the grain on the kinds that matter. This keeps token usage predictable.

review-snapshot

Capture the screen at a specific moment — returns any of a screenshot, the component tree with component IDs, and per-element bounding boxes. The foreground page is resolved automatically from the timestamp. This is how your agent sees the UI. The screenshot shows the visual state; the component tree gives it structured access to every element on screen, including component_ids it can feed back to root a later snapshot; bounding boxes tell it where things are spatially. If a sightmap is configured, each matched element in the component tree is annotated with its semantic component name, source file path, visibility flag, and interactivity flag — so your agent reasons about CheckoutForm (src/components/CheckoutForm.tsx) rather than form#cc-form. Parameters: Returns: screenshot (base64 or URL), component tree with component IDs, and bounding boxes. When a sightmap is configured, each element is also annotated with component name, source path, visibility, and interactivity.
The component tree is returned as an indented text outline. Each node carries a component ID (e.g. fs-201), its role or Sightmap component name, and flags like interactive:
Pass a node’s ID back as component_id to root a follow-up snapshot at that element. Add boxes to include for per-element bounding boxes, or image for the screenshot.

review-close

Close the session and record structured feedback. Call this when your agent has finished its investigation. Closing the session frees server resources and logs the review with a conclusion — an audit trail of which sessions were reviewed, what use case drove them, and whether the review helped. Parameters: Returns: confirmation that the session was closed and feedback was recorded.
Always close sessions when you’re done. Recording the use case and whether the review helped keeps a clean log of what your agent investigated.

Tool call order

The tools are designed to be used in sequence. A typical investigation follows this order:
1

review-list-sessions

List available sessions and pick the one to investigate.
2

review-summary (optional)

Cheap, stateless first read — pass a session identifier for a static overview before you commit to opening.
3

review-open

Open the session. Read the event map and digest before doing anything else.
4

review-zoom

Zoom into the intervals that look interesting. Repeat as needed with progressively narrower windows.
5

review-snapshot

Capture visual snapshots at key timestamps to see exactly what the user saw.
6

review-close

Record your conclusion and close the session.
You don’t have to use every tool in every investigation. review-list-sessionsreview-openreview-zoomreview-close is often enough. Reach for review-summary when you want a cheap orientation before opening, and review-snapshot when you need visual evidence or a precise component tree.