The reason to reach for it over a selector-only driver is the two escape hatches: coordinate clicks land on whatever is at that point, iframes included, and type drives real keydown/keyup events so autocompletes, input masks and contenteditable editors behave as they would under a human. Two edges are worth planning around — network capture keeps no history, so monitoring has to be on before the traffic you care about happens, and select works on native HTML select elements only, not on custom dropdowns.
A bridge to browser tabs that connect to it, 31 commands driving an existing tab over the Chrome DevTools Protocol rather than launching an automated browser of its own.
- Connected tabs listed and inspected, then navigated, sent back and forward, reloaded, brought to the front, or closed
- Clicks, hovers and scrolls addressed by CSS selector, XPath, or viewport coordinate — the coordinate path reaches content inside iframes that selectors cannot address
- Three ways to put text into a field: fill sets the value, type sends real per-character key events for masked inputs and rich editors, insertText commits a whole block at once
- Page state read back as a screenshot of the page or one element, outerHTML, an element query with a visibility filter, or whatever sits at a given point
- Console contents pulled newest-first, or watched live for a timeout while you act, with uncaught exceptions and browser-generated entries included
- Per-tab network capture: turn it on, list requests as they arrive with a cursor for incremental polling, then pull one request's payload, response body and headers
- A script of commands run against one tab in a single call, and blocking JavaScript dialogs answered — while one is open every other command fails fast instead of hanging
A browser tab connected to the Kapture bridge, since every command takes a tabId; new_tab opens a page that connects itself, and list_tabs shows what is already attached. Key events, typing and network capture run through the Chrome DevTools Protocol, so the tab has to be one Kapture can attach to.
One command — npx -y kapture-mcp@latest bridge
