browser_cdp_send
Runs an allowlisted Chrome DevTools Protocol command on a specified tab for DOM, accessibility, runtime, network, and screenshot inspection while refusing unsupported operations.
Instructions
Runs a Chrome DevTools Protocol command on the tab, from an ALLOWLIST OF COMMANDS kept by the extension: DOM reads (DOM.getDocument, querySelector, describeNode, getBoxModel, getOuterHTML...), Accessibility.getFullAXTree, Runtime.evaluate, Page.captureScreenshot, getLayoutMetrics, printToPDF, Input.dispatch* (agent's tab), display Emulation.*, Network.enable/disable, Log/Console. Everything else is refused (cookies, storage, request bodies, Fetch, IO, injected scripts, browser targets...): use the dedicated tool.
world (Runtime.evaluate only): "isolated" (default) evaluates in the extension's isolated world (shared DOM, page variables invisible); "page" evaluates in the PAGE WORLD, like browser_eval and the DevTools console, to inspect an application's state (window.INITIAL_STATE, Redux/Pinia store...). In both cases: enforced context (never the one chosen in params) and no console API. Both worlds share the document: Runtime.evaluate has the same FULL ACCESS as browser_eval (document.cookie, storage, fetch with the session), unmasked; Chrome's other responses are raw too (DOM.getOuterHTML, getFullAXTree: field values included). Page.reload with scriptToEvaluateOnLoad is refused (script injected on load). NOT covered by the outward-action accord check (Runtime.evaluate, Input.dispatch*): never use it to perform an outward gesture (send, pay, publish...) that the gated tools would refuse without the user's accord.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| world | No | isolated | |
| method | Yes | ||
| params | No | ||
| tab_id | Yes | Your tab's id (from browser_new_tab, or a tab adopted with browser_adopt_tab). |