Skip to content

Browser Automation

Browser automation tools let agents interact with websites using a headless Chrome instance powered by Browserless. Agents can navigate to URLs, click elements, fill forms, extract content, and take screenshots.

Opens a URL in the browser.

browser_navigate(url: "https://example.com")

Clicks an element on the page. The agent identifies elements by their text content, CSS selector, or position on the page.

browser_click(selector: "#submit-button")

Types text into an input field.

browser_type(selector: "#search-input", text: "search query")

Extracts content from the page. Can use CSS selectors to target specific elements.

browser_extract(selector: ".article-body")

Returns the text content of the matched elements.

Captures a screenshot of the current page. Returns the image as an attachment in the chat.

browser_screenshot()

Navigates through the browser’s history.

browser_go_back()
browser_go_forward()

Closes the current browser session. This frees up the browser slot for other tasks.

browser_close()

Each browser session connects to the Browserless service via WebSocket. Sessions are isolated per user. Different users get separate browser instances with separate profiles.

The connection URL is configured via FRONA_BROWSER_WS_URL (default: ws://browserless:3333 in Docker Compose).

Browser profiles persist cookies, local storage, and other session data. This means an agent can log into a website in one conversation and remain logged in for future interactions.

Profiles are stored at the path configured by FRONA_BROWSER_PROFILES_PATH.

Browserless has a configurable limit on concurrent sessions (default: 10). If all slots are in use, new browser requests will queue until a slot opens up.

  • Connection timeout: how long to wait when connecting to Browserless (default: 30 seconds)
  • Session timeout: maximum lifetime of a browser session (default: 30 minutes, configured in Browserless)

Some browser tasks require human intervention. CAPTCHAs, two-factor authentication, or complex form interactions. When an agent encounters these, it can use request_user_takeover to give you direct access to the browser session through a debugger URL.

See User Interaction for details on request_user_takeover.

Browser automation requires a running Browserless instance. See Browserless Configuration for setup details.