Two directions matter here: the agent can ask what a given source line looks like live, and you can point at something on screen and have that become a task with its source location attached. The verification pair closes the loop — a baseline before the edit and a comparison after gives a verdict rather than an opinion about whether the change landed. Agents do not reach for runtime state unprompted, so the project's own advice holds: tell it explicitly to check the element before it edits.
A bridge between a running dev server and an MCP-capable coding agent. Build-time stable IDs map DOM elements to source locations, and a localhost relay carries queries and annotations between the browser and the agent.
- A source file and line queried for its live runtime context — DOM snapshot, current props, component state and rendered attributes — with no human in the loop
- Element IDs resolved back to file, line, column and component, one at a time or in a batch
- The DOM-to-source manifest searchable by path, component or element id, with coverage statistics
- An in-browser overlay to click an element and describe the change; the agent claims that annotation atomically, implements it, and answers back over a WebSocket
- Annotations stored as files in your own repo, listed, searched and transitioned through their statuses
- A before-and-after check: capture an element's style and geometry, then compare after the edit for a deterministic verdict with per-property deltas
- IDs injected at build time through the AST, so they survive hot reload, and all instrumentation stripped from production builds
- Runtime capture for React 18-19 and Vue 3, plus Next.js and Nuxt, across Vite, Webpack and Turbopack
- Emails, tokens and similar patterns scrubbed before anything leaves the browser
Node 18 or newer, and both halves installed: the bundler plugin for your framework in the app, and the MCP server registered with your agent — npx domscribe init walks through both and writes the config. Runtime queries need the dev server running with the target page open in the browser. In a monorepo, point init at the app directory so the tools resolve the right root. No account or key. MIT.
One command — npx domscribe init
