Files
shiro-neko/docs/webview.md
T
asepharyana 922519aa01
ci / check (macos-latest) (push) Canceled after 0s
ci / check (ubuntu-latest) (push) Canceled after 0s
ci / check (windows-latest) (push) Canceled after 0s
feat: add web_browse tool for navigating and interacting with web pages using Bun's WebView
2026-09-04 22:37:38 +07:00

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_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

// 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