2.4 KiB
2.4 KiB
WebView Tool (web_browse)
A built-in browser tool powered by Bun's native WebView. No Puppeteer, no Playwright, no separate browser download — just the runtime's own headless browser.
What it does
- Navigate to any URL and extract text/HTML after JS execution
- Click buttons, links, and interactive elements
- Type into input fields and forms
- Scroll to elements on the page
- Screenshot pages as PNG files
- Evaluate arbitrary JavaScript in the page context
When to use it
Use web_browse instead of web_fetch when:
- The page is a SPA (Single Page Application) that needs JavaScript
- You need to interact with the page (click, type, scroll)
- You need a visual screenshot of the page
web_fetchreturns incomplete or empty content- You need to fill forms or submit data
Use web_fetch when:
- The page is static HTML
- You just need the text content quickly
- No JS execution is needed
Actions
| Action | Description | Requires |
|---|---|---|
text |
Page text content after JS execution | — |
html |
Raw HTML of the page | — |
screenshot |
Save page as PNG, return file path | — |
evaluate |
Run JavaScript, return result | script |
click |
Click an element | selector |
type |
Type text into an input | selector + text |
scroll |
Scroll to an element | selector |
Examples
// Get page text
{ "url": "https://example.com", "action": "text" }
// Take a screenshot
{ "url": "https://example.com", "action": "screenshot" }
// Click a button
{ "url": "https://example.com", "action": "click", "selector": "button.submit" }
// Fill a form
{ "url": "https://example.com", "action": "type", "selector": "#email", "text": "user@example.com" }
// Run custom JS
{ "url": "https://example.com", "action": "evaluate", "script": "document.querySelectorAll('a').length" }
Requirements
- macOS: Uses system WKWebView (no install needed)
- Linux/Windows: Requires Chrome, Chromium, Edge, or Brave installed
- Bun 1.2+ for WebView support
Tool set
web_browse is in the net tool set. Enable it in config:
{ "toolSets": ["core", "git", "net"] }
Or enable all sets with toolSets: ["*"].
Limitations
- Each call creates a fresh browser instance (no persistent sessions by default)
- Maximum 15s navigation timeout, 5s action timeout
- Screenshots are saved to the system temp directory
- Not available in Bun versions before 1.2