Reado
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| READO_AGENT | No | Agent identity. Reado sets it when launching an agent. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| browser_consoleA | Read everything the preview page logged, as JSON: each entry's level (log/info/warn/error), message, source and stack. Use it to follow what the app is doing; for only what broke, browser_errors is shorter. Reads what Reado captured without touching the page; when no preview is open it answers that none is running. |
| browser_networkA | Read the preview page's network activity, as JSON: method, URL, status and timing per request, with failures flagged. Use it to check API calls, failed fetches and slow responses. Reads what Reado captured without touching the page; when no preview is open it answers that none is running. |
| browser_errorsA | Read only the preview's error-level console entries — errors and unhandled rejections — as JSON: the part of browser_console that answers "what broke?". Answers |
| browser_evalA | Run a JavaScript expression in the preview page and answer its value, JSON-serialized. The escape hatch for what the other browser_* tools don't cover — reading app state, calling page functions, scrolling a nested container; prefer them when they fit. Evaluated synchronously (a Promise is not awaited), and it can change the page. Needs Reado's browser preview open with agent access on: without it the call fails after about 6 s with "no preview pane running". On a page holding a credential it is refused until the user grants access. |
| browser_navigateA | Load a URL in the preview, replacing the current page. Only localhost and the origins the user allowlisted can be opened; anything else is refused with "origin not allowed". Answers the URL loaded. Needs Reado's browser preview open with agent access on: without it the call fails after about 6 s with "no preview pane running". On a page holding a credential it is refused until the user grants access. |
| browser_domA | Inspect one element of the preview: its tag, outerHTML (first 2000 characters), box (x, y, width, height in CSS px, relative to the viewport) and key computed styles (display, color, background, font), as JSON; null when nothing matches. Use it to check structure and layout; for a picture use browser_frame, for anything else browser_eval. Needs Reado's browser preview open with agent access on: without it the call fails after about 6 s with "no preview pane running". On a page holding a credential it is refused until the user grants access. |
| browser_animationA | Read the animations running on one element of the preview, as JSON: for each, its name, keyframes and computed timing (duration, delay, easing, progress). Answers an empty list when it has none, null when nothing matches. Needs Reado's browser preview open with agent access on: without it the call fails after about 6 s with "no preview pane running". On a page holding a credential it is refused until the user grants access. |
| browser_clickA | Click an element in the preview: scrolls it to the middle of the viewport, then fires a DOM click(). Answers |
| browser_hoverA | Hover an element in the preview by dispatching mouseover and mouseenter — to open a menu or tooltip before inspecting it. Answers |
| browser_typeA | Fill a form field in the preview: focuses it, replaces its whole value with |
| browser_scrollA | Scroll the preview's window to an absolute position (window.scrollTo) — to bring content into view before browser_frame. Answers |
| browser_frameA | Screenshot the preview as it renders right now, answered as a PNG image. Use it to see layout and visual bugs, or the result of a click; for exact sizes and styles use browser_dom. Not available on Linux. Needs Reado's browser preview open with agent access on: without it the call fails after about 6 s with "no preview pane running". On a page holding a credential it is refused until the user grants access. |
| task_doneA | Mark a task resolved once your change addresses it, recording how. With |
| task_failA | Record a failed attempt at a task. The task goes back to open for another try; the third failed attempt blocks it until the human answers. Answers the task's id, state and attempt count as JSON. When you already know you need the human, use task_block instead. |
| task_blockA | Block a task you cannot finish without the human — a decision, a credential or context you don't have. It stays blocked with your reason until they answer in Reado, which reopens it with a fresh attempt count. Blocking again replaces the reason. Answers the task's id, state and reason as JSON. |
| comment_addA | Anchor a new comment to a line range, signed by the agent. A |
| comment_replyA | Reply in an existing comment's thread, signed by the agent — to answer a question the user asked, or to explain what you changed. It does not change the comment's state: use task_done, task_fail or task_block for that. Answers the comment's id and state as JSON. |
| mascot_sayA | Say one line through Reado's mascot — the small companion in the corner of the user's screen. For the moment the user must know about while they are away from the desk: what you need from them, or what just landed. Not narration, not progress, not a running commentary: it interrupts a human, and a companion that chatters gets turned off. Use |
| session_doneA | Call this when your next act is to wait for the user — the request is finished, you are blocked, or you need an answer. NOT after a command returns or a step completes: if you will do anything else before stopping, it is too early. Reado alerts a user who has walked away, so a premature call fetches them back for nothing. Answers an acknowledgement. |
| session_showA | Read a guided-review session in full, as JSON: scope, objective, route, per-file state and summaries, proposals and their decisions, the files the scope is expected to contain, and any pending route change. Call it first on a READO GUIDED REVIEW prompt, or to find your place after losing context; for a single file, review_context is smaller. |
| review_contextA | Read one file's context in a guided review before reviewing it, as JSON: the session objective, the file's route entry (why it was ranked, related files), its state, its running summary and the proposals already on it. For the whole session use session_show. |
| review_planA | Set a guided review's ranked route — the planning pass, once per session, before you review any file. Answers how many files you routed and the |
| review_propose_route_changeA | Propose a new route for a guided review already under way — a file you found that must be reviewed, a reorder, a file to drop. Nothing changes until the human accepts it in Reado: the current route keeps running, so carry on with the file you were on. A new proposal replaces one still pending. Answers a confirmation; refused without a |
| review_propose_commentA | Propose a finding on the code during a guided review — a bug, a refactor, a performance issue — anchored to a line range. Only a proposal: the human accepts, edits or discards it, and only an accepted one becomes a comment. Answers the proposal's id. For a question or missing context rather than a finding use review_propose; outside a guided review, comment_add. |
| review_proposeA | Propose a guided-review item that is not a finding on the code: a |
| review_summarize_fileA | Record a file's mini-summary when you finish reviewing it in a guided review: what you checked, the risks you see, what comes next. It replaces the file's earlier summary, and marks a file with no state yet as reviewed. Answers a confirmation. For the whole review use session_summarize. |
| session_summarizeA | Record a guided review's overall recap once the routed files are done: what the review found, the risks that matter most, what is left. It replaces any earlier recap. Answers a confirmation. For one file's notes use review_summarize_file. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Open tasks | Comments flagged as tasks, awaiting resolution. |
| Comments | All active comments (anchors, type, thread). |
| Reading progress | Project-relative paths the user has marked read. |
| Bookmarks | The user's reading bookmarks. |
| Preview console | Console output captured from the in-app browser preview. |
| Preview network | Network activity captured from the in-app browser preview. |
TDQS
Scored across 27 tools
Most tools target a distinct resource+action, and the descriptions explicitly disambiguate the tricky pairs (browser_errors as a subset of browser_console, review_propose_comment vs review_propose, comment_add vs comment_reply vs review_propose_comment). The only real overlaps are browser_console/browser_errors and the read-only session_show vs review_context, both of which the descriptions diff explicitly. No tool pair appears interchangeable.
Consistent snake_case verb_noun throughout, with clear domain prefixes (browser_*, task_*, comment_*, review_*, session_*). Minor deviations exist: comment_add/comment_reply use different verbs than the task_* lifecycle, and the summarize action is split across review_summarize_file and session_summarize rather than following one prefix scheme. Still highly predictable overall.
27 tools is on the heavy side and just past the threshold where a set starts to feel bloated. However, the surface spans three genuinely distinct sub-domains (browser automation/inspection, guided-code-review lifecycle, task/comment/notification handling), so most tools earn their place rather than being redundant variants.
Browser control, task state transitions, comment creation, review routing, proposal and summarization are all covered with no obvious dead ends for the stated review-oriented purpose. The main gap is read/enumeration: there is no way to list or fetch tasks or existing comments (only add/reply/transition), so an agent depends on work arriving via the prompt.