Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Browse the web for any task — research topics, read articles, interact with web apps, fill forms, take screenshots, extract data, and test web pages. Use whenever a browser would be useful, not just when the user explicitly asks.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 24% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 49% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -1% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -23% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 30% | 0% |
bashagent-browser open <url> # Navigate to page agent-browser snapshot -i # Get interactive elements with refs agent-browser click @e1 # Click element by ref agent-browser fill @e2 "text" # Fill input by ref agent-browser close # Close browser
agent-browser open <url>agent-browser snapshot -i (returns elements with refs like @e1, @e2)bashagent-browser open <url> # Navigate to URL agent-browser back # Go back agent-browser forward # Go forward agent-browser reload # Reload page agent-browser close # Close browser
bashagent-browser snapshot # Full accessibility tree agent-browser snapshot -i # Interactive elements only (recommended) agent-browser snapshot -c # Compact output agent-browser snapshot -d 3 # Limit depth to 3 agent-browser snapshot -s "#main" # Scope to CSS selector
bashagent-browser click @e1 # Click agent-browser dblclick @e1 # Double-click agent-browser fill @e2 "text" # Clear and type agent-browser type @e2 "text" # Type without clearing agent-browser press Enter # Press key agent-browser hover @e1 # Hover agent-browser check @e1 # Check checkbox agent-browser uncheck @e1 # Uncheck checkbox agent-browser select @e1 "value" # Select dropdown option agent-browser scroll down 500 # Scroll page agent-browser upload @e1 file.pdf # Upload files
bashagent-browser get text @e1 # Get element text agent-browser get html @e1 # Get innerHTML agent-browser get value @e1 # Get input value agent-browser get attr @e1 href # Get attribute agent-browser get title # Get page title agent-browser get url # Get current URL agent-browser get count ".item" # Count matching elements
bashagent-browser screenshot # Save to temp directory agent-browser screenshot path.png # Save to specific path agent-browser screenshot --full # Full page agent-browser pdf output.pdf # Save as PDF
bashagent-browser wait @e1 # Wait for element agent-browser wait 2000 # Wait milliseconds agent-browser wait --text "Success" # Wait for text agent-browser wait --url "**/dashboard" # Wait for URL pattern agent-browser wait --load networkidle # Wait for network idle
Prefer the built-in wait subcommands above. Only fall back to eval-polling when you must wait on a custom JS condition (e.g. a spinner disappearing or a "Send" button re-enabling in a chat UI).
Never write an unbounded wait loop. A bare until … do sleep; done that polls a page condition will loop forever if the condition never becomes true (page failed to load, selector changed, network stalled). That does not just fail the command — it wedges the entire agent turn: the runner keeps the model stream open, later messages get silently swallowed, and the container can hang for hours without the host's stuck-detection firing.
Always cap the wait with BOTH a wall-clock timeout and a max-attempts counter, and always exit the loop (never leave a sleep loop as the last thing running):
bash# Bounded wait: succeeds when the condition is met, gives up after ~90s. timeout 90 bash -c ' for i in $(seq 1 30); do if agent-browser eval "document.querySelector(\".loading\") === null" 2>/dev/null | grep -q true; then echo READY; exit 0 fi sleep 3 done echo TIMEOUT; exit 1 ' # Check the exit status / output: on TIMEOUT, snapshot the page and decide — # do NOT re-enter another unbounded wait.
If the wait times out, treat it as a real failure: take a snapshot -i or screenshot to see the actual page state, report what you found, and move on. Retrying the same unbounded wait is what causes the hang.
bashagent-browser find role button click --name "Submit" agent-browser find text "Sign In" click agent-browser find label "Email" fill "user@test.com" agent-browser find placeholder "Search" type "query"
bash# Login once agent-browser open https://app.example.com/login agent-browser snapshot -i agent-browser fill @e1 "username" agent-browser fill @e2 "password" agent-browser click @e3 agent-browser wait --url "**/dashboard" agent-browser state save auth.json # Later: load saved state agent-browser state load auth.json agent-browser open https://app.example.com/dashboard
bashagent-browser cookies # Get all cookies agent-browser cookies set name value # Set cookie agent-browser cookies clear # Clear cookies agent-browser storage local # Get localStorage agent-browser storage local set k v # Set value
bashagent-browser eval "document.title" # Run JavaScript
bashagent-browser open https://example.com/form agent-browser snapshot -i # Output shows: textbox "Email" [ref=e1], textbox "Password" [ref=e2], button "Submit" [ref=e3] agent-browser fill @e1 "user@example.com" agent-browser fill @e2 "password123" agent-browser click @e3 agent-browser wait --load networkidle agent-browser snapshot -i # Check result
bashagent-browser open https://example.com/products agent-browser snapshot -i agent-browser get text @e1 # Get product title agent-browser get attr @e2 href # Get link URL agent-browser screenshot products.png
Other measured skills in the registry, with their headline benchmark lift.