Browser Tools Reference
Overview
This page covers the 114 tools available through the Chrome extension (Pillar 1). All tools use the Chrome DevTools Protocol (CDP). All return structured JSON.
For headless agent tools (~199 across 5 tiers), use
crawlio_discoverto search by keyword, or see the Browser Agent Overview for tier descriptions.
In code mode, all 96 tools are accessible through 3 meta-tools:
search,execute, andconnect_tab. Usebridge.send({ type: 'tool_name', ...params })insideexecuteto call any tool below.
Tab Management (6)
| Tool | Description | Key Parameters |
|---|---|---|
connect_tab |
Connect to a browser tab. Call this first. | url (string), tabId (number) |
disconnect_tab |
Release the CDP debugging session. | None |
list_tabs |
List all open tabs with IDs, URLs, titles. | None |
get_connection_status |
Check connection state. | None |
reconnect_tab |
Reconnect after a disconnection. | None |
get_capabilities |
List available CDP domains. | None |
connect_tab has three modes: provide a URL to find or create a tab, provide a tabId for a specific tab, or pass no arguments for the active tab.
Page Capture (13)
| Tool | Description | Key Parameters |
|---|---|---|
capture_page |
Full capture: framework, DOM, console, network, optional screenshot. Sends enrichment to Crawlio.app. | fullPage (bool), includeScreenshot (bool) |
detect_framework |
Detect JS framework (React, Vue, Angular, Svelte) and meta-framework (Next.js, Nuxt, SvelteKit, Gatsby, Remix, Astro). | None |
start_network_capture |
Begin recording network requests via CDP Network events. | None |
stop_network_capture |
Stop recording, return captured entries. | None |
get_console_logs |
Return buffered console log entries. | None |
get_cookies |
Get cookies for the current page or specific URLs. | urls (array) |
get_dom_snapshot |
Get DOM tree as HTML with configurable depth. | depth (number) |
take_screenshot |
Screenshot the current page. | fullPage (bool) |
extract_site |
Start a Crawlio crawl for the current URL. | url (string) |
get_crawl_status |
Get crawl status from Crawlio.app. | None |
get_enrichment |
Get stored enrichment data. | url (string) |
get_crawled_urls |
List crawled URLs with status and content type. | status, type, limit, offset |
enrich_url |
Navigate, capture framework/network/console, send enrichment. One step. | url (string, required) |
Browser Interaction (9)
All interaction tools use CSS selectors for element targeting.
| Tool | Description | Key Parameters |
|---|---|---|
browser_navigate |
Navigate to a URL and wait for load. | url (string, required) |
browser_click |
Click an element. | selector (string, required) |
browser_type |
Type text into the focused element. | text (string, required) |
browser_press_key |
Press a keyboard key. | key (string, required) |
browser_hover |
Hover over an element. | selector (string, required) |
browser_select_option |
Select a <select> option by value. |
selector, value (both required) |
browser_wait |
Wait for a duration (max 30s). | seconds (number, required) |
browser_fill_form |
Fill multiple form fields in one call. | fields (array of {selector, value}, required) |
browser_evaluate |
Evaluate JavaScript in the page context. | expression (string, required) |
Accessibility and Waiting (2)
| Tool | Description | Key Parameters |
|---|---|---|
browser_snapshot |
Capture an ARIA accessibility tree snapshot. | None |
browser_wait_for |
Wait for an element to reach a ready state (visible, enabled, not obscured). | selector (required), timeout (ms) |
Network Interception (1)
| Tool | Description | Key Parameters |
|---|---|---|
browser_intercept |
Intercept and modify network requests or responses. | urlPattern (required), action (block/modify/log, required), resourceType, responseBody, responseHeaders |
Frame Management (3)
| Tool | Description | Key Parameters |
|---|---|---|
get_frame_tree |
Get the iframe tree structure. | None |
switch_to_frame |
Switch execution context to a specific iframe. | frameId (required) |
switch_to_main_frame |
Switch back to the main frame. | None |
Tab, Cookie, and Device (26)
| Tool | Description | Key Parameters |
|---|---|---|
create_tab |
Create a new tab. | url |
close_tab |
Close a tab. | tabId |
switch_tab |
Switch to a different tab. | tabId (required) |
set_cookie |
Set a browser cookie. | name, value (required), domain, path |
delete_cookies |
Delete cookies by name. | name (required) |
get_storage |
Read localStorage or sessionStorage. | type (local/session, required), key |
set_storage |
Write to storage. | type, key, value (all required) |
clear_storage |
Clear storage. | type (required) |
get_dialog |
Get info about the current JS dialog. | None |
handle_dialog |
Accept or dismiss a JS dialog. | accept (required), promptText |
get_response_body |
Get response body of a network request. | requestId (required) |
replay_request |
Replay a captured network request. | requestId (required) |
set_viewport |
Set viewport size. | width, height (required), deviceScaleFactor |
set_user_agent |
Override user agent string. | userAgent (required) |
emulate_device |
Emulate a device (viewport, UA, touch). | device (required, e.g. iPhone 14) |
print_to_pdf |
Generate a PDF. | landscape, printBackground, paperWidth, paperHeight |
browser_scroll |
Scroll the page or an element. | direction (required), selector, amount |
browser_double_click |
Double-click an element. | selector (required) |
browser_drag |
Drag from source to target. | sourceSelector, targetSelector (both required) |
browser_file_upload |
Upload files to a file input. | selector, filePaths (both required) |
get_accessibility_tree |
Get the full accessibility tree. | depth |
set_geolocation |
Override geolocation. | latitude, longitude (required), accuracy |
get_performance_metrics |
Get Chrome perf metrics (heap, nodes, layout). | None |
get_websocket_connections |
List active WebSocket connections. | None |
get_websocket_messages |
Get WebSocket messages. | connectionId |
set_stealth_mode |
Enable stealth to avoid bot detection. | enabled (required) |
Network and Security (8)
| Tool | Description | Key Parameters |
|---|---|---|
emulate_network |
Emulate network conditions (throttling, offline). | offline, latency, downloadThroughput, uploadThroughput |
set_cache_disabled |
Enable or disable browser cache. | disabled (required) |
set_extra_headers |
Set extra HTTP headers for all requests. | headers (object, required) |
get_security_state |
Get security state (cert info, mixed content). | None |
ignore_certificate_errors |
Ignore SSL cert errors. | ignore (required) |
list_service_workers |
List registered service workers. | None |
stop_service_worker |
Stop a running service worker. | versionId (required) |
bypass_service_worker |
Bypass service workers for network requests. | bypass (required) |
DOM Manipulation (4)
| Tool | Description | Key Parameters |
|---|---|---|
set_outer_html |
Replace an element's outer HTML. | selector, html (both required) |
set_attribute |
Set an attribute on an element. | selector, name, value (all required) |
remove_attribute |
Remove an attribute. | selector, name (both required) |
remove_node |
Remove an element from the DOM. | selector (required) |
CSS and JS Coverage (10)
| Tool | Description | Key Parameters |
|---|---|---|
start_css_coverage |
Start tracking CSS coverage. | None |
stop_css_coverage |
Stop CSS coverage, return used/unused ranges per stylesheet. | None |
start_js_coverage |
Start tracking JS coverage. | None |
stop_js_coverage |
Stop JS coverage, return used/unused ranges per script. | None |
get_computed_style |
Get computed CSS styles for an element. | selector (required) |
detect_fonts |
Detect fonts used on the page. | None |
force_pseudo_state |
Force a CSS pseudo-state (:hover, :focus). |
selector, pseudoState (both required) |
get_databases |
List IndexedDB databases. | None |
query_object_store |
Query an IndexedDB object store. | database, objectStore (both required) |
clear_database |
Clear an IndexedDB database. | database (required) |
Target and Memory (6)
| Tool | Description | Key Parameters |
|---|---|---|
get_targets |
List debugging targets (tabs, workers, extensions). | None |
attach_to_target |
Attach to a specific debugging target. | targetId (required) |
create_browser_context |
Create an isolated browser context (incognito-like). | None |
get_dom_counters |
Get DOM node counts (documents, nodes, listeners). | None |
force_gc |
Force garbage collection. | None |
take_heap_snapshot |
Take a V8 heap snapshot for memory analysis. | None |
Visual Debugging (3)
| Tool | Description | Key Parameters |
|---|---|---|
highlight_element |
Highlight an element with a colored overlay. | selector (required), color |
show_layout_shifts |
Visualize Cumulative Layout Shift (CLS) regions. | None |
show_paint_rects |
Show paint rectangles to visualize rendering updates. | enabled (required) |
Session Recording (5)
| Tool | Description | Key Parameters |
|---|---|---|
start_recording |
Start recording browser interactions. | None |
stop_recording |
Stop recording, return the session. | None |
get_recording_status |
Check if recording is active, interaction count. | None |
compile_recording |
Compile a session into a replayable SKILL.md file. | session (required), name (required), description |
ocr_screenshot |
Take a screenshot and run OCR to extract visible text. | None |
Code Mode Tools (3)
In code mode, the 96 tools above are replaced with 3 meta-tools:
search
Search available tools by keyword. Returns full tool definitions with parameter schemas.
| Parameter | Type | Required | Description |
|---|---|---|---|
query |
string | Yes | Search keyword |
limit |
number | No | Max results (default: 10) |
execute
Execute JavaScript with access to the browser bridge, Crawlio HTTP client, and smart object.
| Parameter | Type | Required | Description |
|---|---|---|---|
code |
string | Yes | Async JS function body (max 50KB, 120s timeout) |
Available in scope:
| Variable | Description |
|---|---|
bridge |
bridge.send(command, timeout?): send any CDP command |
crawlio |
crawlio.api(method, path, body?), crawlio.getStatus(), etc. |
smart |
Framework-aware wrappers: smart.click(), smart.type(), smart.react.*, smart.vue.* |
sleep |
sleep(ms): async wait (max 30s per call) |
TIMEOUTS |
Per-command timeout constants |
Example:
await bridge.send({ type: 'browser_navigate', url: 'https://example.com' }, 30000);
await sleep(2000);
const capture = await bridge.send({ type: 'capture_page' }, 60000);
return { url: capture.url, framework: capture.framework?.name };connect_tab
Same as the standard connect_tab tool. Always available in code mode.
Next steps
- Browser Agent Overview: architecture and routing
- JIT Context Runtime: polymorphic context and the agentic REPL
- Code Mode: token-efficient operation
- MCP Tools Reference: Crawlio app control tools