# BrowserPaw Canonical Tool Reference > Automatically generated by `scripts/gen-tools-doc.mjs` from `packages/shared/src/tools.ts`. To regenerate: `node scripts/gen-tools-doc.mjs`. | Profile | Tool Count | Estimated Prompt Footprint (chars/4) | Description | | :----------------- | :--------: | :----------------------------------: | :------------------------------------------------------------------------------------ | | **core** (default) | 14 | ~9.2k | High-frequency essentials: 1-based DOM indexing, form filling, visual actions, grep | | **full** | 50 | ~20.4k | Complete canonical tool surface: raw CDP access, tab groups, diagnostics, performance | | **crawl** | 12 | ~6.1k | High-throughput web extraction, markdown summarization, and media inspection | Canonical surface: 50 tools = 49 extension-executed tools + 1 native-server tool (`chrome_act_toward_goal`, served by the local Jev engine). Profile counts are Core 14 / Crawl 12 / Full 50. Footprints are character-based estimates (serialized schema characters / 4), not measured BPE token counts. Tools hidden under the active profile can be inspected and dynamically activated for the session via `chrome_tool_docs` without restarting the server. ## Navigation & Tabs ### `chrome_navigate` Navigate to a URL, refresh the current tab, or navigate browser history (back/forward) - `url` — URL to navigate to. Special values: "back" or "forward" to navigate browser history in the target tab. - `action:back|forward` — Alternative to url="back"|"forward": navigate browser history backward or forward. - `newWindow` — Create a new window to navigate to the URL or not. Defaults to false - `tabId` — Target an existing tab by ID (if provided, navigate/refresh/back/forward that tab instead of the active tab). - `windowId` — Target an existing window by ID (when creating a new tab in existing window, or picking active tab if tabId is not provided). - `background` — Perform the operation without stealing focus (do not activate the tab or focus the window). Default: true (set false only if user explicitly asks to bring tab to foreground) - `width` — Window width in pixels (default: 1280). When width or height is provided, a new window will be created. - `height` — Window height in pixels (default: 720). When width or height is provided, a new window will be created. - `refresh` — Refresh the current active tab instead of navigating to a URL. When true, the url parameter is ignored. Defaults to false - `groupTitle` — Concise, task-aligned title for the Chrome tab group reflecting user intent in user language (e.g. "Best 4K Monitors on Amazon", "GitHub PR Review"). If omitted, the extension derives a smart title dynamically from the destination domain and page title instead of generic fallback. - `groupColor:grey|blue|red|yellow|green|pink|purple|cyan|orange` — Color for the Chrome tab group. Fallback: "blue" - `autoGroup` — Automatically place newly opened tab into an Agent-managed tab group with dedicated title and color. Default: true - `dismissOverlays` — Automatically detect and dismiss visible marketing popups, coupon modals, and promotional overlays after navigation completes (default: false) ### `chrome_switch_tab` Switch to a specific browser tab - `tabId` (required) — The ID of the tab to switch to. - `windowId` — The ID of the window where the tab is located. - `background` — If true, binds session affinity only without activating the tab in the Chrome UI or stealing user focus. Default: false ### `chrome_close_tabs` Close one or more browser tabs - `tabId` — Single tab ID to close (convenience alternative to tabIds array). - `tabIds` — Array of tab IDs to close. If not provided, will close the active tab (requires confirm: true or session affinity). - `url` — Close tabs matching this URL. Can be used instead of tabIds. - `confirm` — Explicit confirmation required to close the active tab when tabIds or url are not specified. - `allManagedGroups` — Close all Agent-managed tab groups and their tabs created during automation sessions. Default: false ### `chrome_move_tab` Move one or more tabs to a new position index or to another window. - `tabId` — Single tab ID to move (optional if tabIds provided) - `tabIds` — Multiple tab IDs to move - `index` (required) — Target position index in the window (0-based, or -1 for end of window) - `windowId` — Target window ID (optional, defaults to current window) ### `chrome_attach_tab` Explicitly attach CDP debugger and session affinity to a specific tab (by tabId) or the user's currently active tab. WARNING / SIDE EFFECT: Attaching to the user's active tab displays Chrome's debugger warning banner ('browserpaw is debugging this browser') and directly shares execution state with the user. Avoid calling unless interaction with the user's active tab is explicitly requested. - `tabId` — The target tab ID to attach. If omitted, attaches to the user's currently active foreground tab. - `sessionId` — Session identifier to bind affinity to this tab. ### `chrome_detach_tab` Detach CDP debugger from the tab and release session affinity, dismissing the Chrome debugger banner. - `tabId` — The target tab ID to detach (defaults to session bound tab or active tab). - `sessionId` — Session identifier to release affinity from. ### `get_windows_and_tabs` Get all currently open browser windows and tabs ## Perception & Content Extraction ### `chrome_read_dom` Extract and prune interactive DOM tree with compact 1-based index assignment, viewport boundary filtering, and occlusion pruning. Supports scoped container targeting (selector) and noise exclusion (exclude) to eliminate full DOM dump overhead. Optional dismissOverlays closes modals and removes overlay elements. - `selector` — CSS selector to scope parsing to a specific container/element (e.g. "#main-cart", ".dialog-box"). Only descendants and self within matching containers are indexed. - `scope` — Alias for selector. CSS selector to scope parsing to a specific container/element (e.g. "#main-cart", ".dialog-box"). Only descendants and self within matching containers are indexed. - `isolateModal` — When true and an active modal dialog is detected, restricts indexing to the active modal while strictly protecting portals, dropdowns, and alert containers. - `exclude` — CSS selector(s) to exclude from parsing (e.g. "#footer, #recommendations, .ad-banner"). Matching elements and their entire subtrees are pruned. - `viewportThreshold` — Vertical threshold in pixels for viewport boundary checking (default 1000) - `tabId` — Target tab ID (optional) - `windowId` — Target window ID (optional) - `highlight` — Whether to visually highlight indexed elements - `sessionId` — Optional session identifier to bind affinity to a specific tab context - `cursor` — Pagination cursor offset for traversing very large DOM pages incrementally (default: 0) - `limit` — Maximum number of indexed elements to return for current page cursor slice (default: unlimited) - `maxTextLength` — Maximum text length before truncation for element text content (default: 120) - `includeDetails` — Also return the bulky indexedElements/indexMap detail blocks (geometry, occlusion flags, safe click points). Off by default because the tree already carries index/tag/attributes/text; enable only when you need per-element rects or visibility flags. - `viewportOnly` — When true, only index elements inside or immediately near the visible viewport (default: false) - `activeViewportOnly` — When true, strictly constrains indexing to elements currently visible within the active viewport (threshold = 0) with horizontal/vertical frustum clipping, eliminating ghost elements from SPA wizards, carousels, and multi-step forms. - `format:compact|html|fast` — Output format for treeString. "compact" (default) produces a concise, accessibility-tree-inspired representation without closing tags, slashing token usage by 60%+. "html" returns legacy pseudo-HTML tags. "fast" activates ultrafast atomic snapshot mode (10-30ms, <=15KB). - `fast` — When true, activates the ultrafast atomic DOM snapshot engine (10-30ms, <=15KB payload) with WeakMap caching and native checkVisibility. - `legacyVisibility` — When true, uses legacy visibility fallback (computedStyle display/visibility/opacity) instead of element.checkVisibility. - `deltaOnly` — When true, returns only changed/added/removed diffs compared to the previous snapshot, saving 90%+ tokens on repeated reads. - `dismissOverlays` — When true, automatically detects and dismisses visible marketing popups, coupon modals, and promotional overlays before indexing DOM nodes, preventing modal overlays from polluting the DOM tree (default: false) - `virtualizeViewport` — When true (enabled by default on infinite scroll, long feeds, and waterfall pages when selector/scope is omitted), intelligently virtualizes and folds repetitive offscreen subtrees into compact summaries, drastically slashing token usage while strictly preserving visible viewport elements and key navigation. - `flattenCards` — When true (default: true), identifies composite card containers (article, [role="article"], [role="listitem"], li) and aggregates fragmented leaf nodes into unified structured card summaries while preserving actionable link/click indices. Slashes token usage by 60%+ on eCommerce, search feeds, and news listings. ### `chrome_get_markdown` Extract clean, structured hierarchical markdown from the active tab DOM stripped of SPA state blobs, hidden text, and scripts. - `includeLinks` — Whether to preserve hyperlinks in markdown (default: true) - `fit` — Content-only extraction: restrict to the main content region and strip nav/header/footer/aside/form noise before conversion (default: false) - `tabId` — Target tab ID (optional) - `windowId` — Target window ID (optional) - `sessionId` — Optional session identifier to bind affinity to a specific tab context ### `chrome_inspect_media` Inspect and extract high-fidelity media assets (images, canvas, captchas, icons) directly by element index or selector. Uses in-memory lossless extraction for ``/``, with super-sampled 200%+ crop fallback for complex DOM containers. - `index` — 1-based element index from browserpaw_read_dom - `selector` — CSS selector fallback - `zoom` — Super-sampling zoom factor (default: 2.0) - `tabId` — Target tab ID ### `chrome_grep` Search the page without dumping full DOM tree. Supports searching interactive elements (returning indices for browserpaw_interact_index), all DOM nodes, or raw visible text lines. - `query` (required) — Search term or regex pattern - `isRegex` — Whether to evaluate query as a regular expression (default: false) - `searchType:interactive_only|all_dom|page_text` — Search target: "interactive_only" (default, matches clickable/fillable elements and returns indices), "all_dom" (matches all elements), "page_text" (scans visible text lines). - `limit` — Maximum matching results to return (default: 20, max: 50) - `autoScroll` — When true, automatically executes client-side RAF auto-scrolling to probe and detect off-screen virtualized elements (virtual list / infinite scroll streams like X/Twitter). Default: false - `maxSteps` — Maximum scroll iterations to attempt when autoScroll is enabled (default: 10) - `stepPx` — Pixel distance to scroll on each probing step (default: 800) - `tabId` — Target tab ID (optional) - `sessionId` — Session identifier for tab affinity (optional) ### `chrome_get_dropdown_options` Get all options from a native `