extension_doctor
Diagnose a dev session end to end: ready contract, dev-server process, control-port agreement, control channel, eval token, executor, browser liveness.
Quick start
The session looks stuck. Diagnose it
Asked whether the session is healthy, the agent runs the doctor and reports every leg.
How the agent uses it
This returns one {check, status, detail, remediation?} per leg, in dependency order. Read a 'skip' as blocked, not as a pass: it names the check that blocked it. A session started with allowControl: false comes back ok:true with status 'read-only', not as an error: its control channel is off by choice. Run this first when any act tool (storage, reload, eval, open) errors unexpectedly. Call it with no projectPath for a pre-flight environment check (node, the Extension.js CLI, the template cache) before any project exists.
Page text in the answer
Part of this tool's answer is text a web page or the extension wrote. The server fences it between <untrusted-data-ID> and </untrusted-data-ID> with a fresh random ID per call, named in untrusted.boundary. A fence is a signal to the model, not a gate: pair it with --no-ship when the agent reads pages you do not trust. See Server flags and telemetry.
Reference
| Group | local, on by default |
| Tier | See |
| Needs | a live dev or start session |
| Read only | yes |
| Destructive | no |
| Idempotent | yes |
| Reaches the open web | no |
Inputs
| Input | Type | Required | Default | What it does |
|---|---|---|---|---|
projectPath | string | no | Path to the extension project root. Omit for a pre-flight environment check with no project. | |
browser | string | no | Browser session to diagnose. Defaults to the active dev session's browser for this project. |
When it fails
- The call is refused because no session is live. Start one with
extension_devorextension_startand call again.
Next
- MCP server: install, the two groups and the session gates
- Install in your client
extension_analyze: Analyze a BUILT extension on disk: file sizes, declared entry points, permissions, bundle composition, and store-readiness checks.extension_dom_snapshot: Take a shallow structured DOM snapshot of one chosen surface through the agent bridge (localhost only; the snapshot itself needs no CDP, but listTargets andtabUrlresolution...extension_inspect: Inspect a running extension deeply over the browser's debugger protocol: full HTML (open shadow roots of #extension-root and [data-extension-root] hosts inlined; other shadow ro...extension_list_extensions: List the extensions in the running dev browser: id, name, version, and, on Chromium, live contexts.extension_logs: Read or stream logs from every context of a running dev session (service worker, content scripts, popup, options, sidebar, devtools, pages) in one ordered timeline.extension_manifest_validate: Validate a manifest.json across browsers.extension_theme_verify: Verify a Chrome theme manifest before it ships.