"Calls the Windows Browser Server HTTP API to control a persistent browser session. Invoke when OpenClawd needs to navigate, evaluate JS, screenshot, or reuse logged-in cookies."
Install
npx skillscat add xinbs/browser-server Install via the SkillsCat registry.
SKILL.md
OpenClawd Browser Server
Use this skill when OpenClawd must control a Windows browser via HTTP API and reuse a logged-in session.
Preconditions
- Browser Server is running on Windows
- Base URL is reachable on the LAN
- A persistent user_data_dir was used for login reuse
Notes
- Default channel is chrome unless BROWSER_CHANNEL is set
- For Gmail reuse, keep the same user_data_dir across UI and headless
- Complete login in visible mode before switching to headless
Base URL
Use the environment variable in OpenClawd:
export BROWSER_SERVER_URL="http://192.168.31.118:3456"Common API Calls
Start browser with persistent profile
user_data_dir can be omitted to use the project default (./user_data). Use a custom path only when you need to share profiles across machines.
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/start",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": {
"headless": false,
"channel": "chrome"
}
}
}Stop browser
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/stop",
"method": "POST"
}
}Start MCP (Chrome DevTools MCP server)
If omitted, MCP resolves a local wsEndpoint automatically from DevToolsActivePort.
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/mcp/start",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": {}
}
}Open page via MCP (auto-start)
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/mcp/open",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": {
"url": "https://example.com",
"timeout_ms": 30000
}
}
}Read page text via MCP (auto-start)
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/mcp/read",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": {
"selector": "body",
"timeout_ms": 30000
}
}
}Navigate
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/navigate",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": {
"url": "https://example.com",
"wait_until": "networkidle",
"extra_wait_ms": 3000
}
}
}Evaluate JavaScript
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/evaluate",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": {
"script": "() => document.title"
}
}
}DevTools (CDP) version
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/cdp/version",
"method": "GET"
}
}DevTools (CDP) command
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/cdp/send",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": {
"method": "Performance.getMetrics"
}
}
}CDP DOM text/HTML/attributes
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/cdp/dom/text",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": { "selector": "h1" }
}
}Dialog wait/accept/dismiss
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/dialog/await",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": { "timeout": 10000, "action": "accept" }
}
}{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/dialog/accept",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": { "prompt_text": "ok" }
}
}{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/dialog/dismiss",
"method": "POST"
}
}Download directory and last download
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/download/dir",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": { "path": "./downloads" }
}
}{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/downloads/last",
"method": "GET"
}
}{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/download/await",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": { "timeout": 30000 }
}
}Element box and point click
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/element/box",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": { "selector": "#captcha" }
}
}{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/click/point",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": { "x": 520, "y": 360 }
}
}{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/cdp/dom/html",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": { "selector": "h1" }
}
}{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/cdp/dom/attributes",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": { "selector": "h1" }
}
}Wait for selector or text
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/wait",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": {
"selector": "button[type='submit']",
"timeout": 10000
}
}
}Click element
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/click",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": {
"selector": "button[type='submit']",
"timeout": 10000
}
}
}Type text
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/type",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": {
"selector": "input[name='q']",
"text": "openclawd",
"clear_first": true
}
}
}Upload file(s)
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/upload",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": {
"selector": "input[type='file']",
"paths": ["C:/path/to/file.txt"]
}
}
}Scroll
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/scroll",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": {
"direction": "down",
"to_bottom": false,
"amount": 600
}
}
}Get page text
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/text",
"method": "GET"
}
}Get current page info
Use include_html/include_text and optional selector to control content size.
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/current?include_text=true",
"method": "GET"
}
}List tabs
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/pages",
"method": "GET"
}
}New tab
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/page/new",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": { "url": "https://example.com" }
}
}Switch tab
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/page/switch",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": { "index": 0 }
}
}Close other tabs
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/page/close_others",
"method": "POST"
}
}Close current tab
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/page/close",
"method": "POST"
}
}Export storage state
{
"tool": "fetch",
"params": {
"url": "${BROWSER_SERVER_URL}/storage/export",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"body": { "include_json": true }
}
}