84 lines
2.4 KiB
Markdown
84 lines
2.4 KiB
Markdown
# 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_fetch` returns 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
|
|
|
|
```json
|
|
// 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:
|
|
|
|
```json
|
|
{ "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
|