> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to Browserbase

The Browserbase connector lets your AI agent act in each user's Browserbase account. Each user connects their own Browserbase API key once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 38 tools.

**Authentication:** API Key
**Categories:** Developer Tools, Automation, AI
**Tools:** 38: 22 read, 12 write, 4 destructive
**Users sign in with:** API key
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=BROWSERBASE)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Browserbase connection

   In **AgentKit > Connections**, create a Browserbase connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'browserbase'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Browserbase:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'browserbase_list_agent_runs',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "browserbase"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Browserbase:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="browserbase_list_agent_runs",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user opens the link once and enters their Browserbase credentials there. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'browserbase_get_agent',
  toolInput: {
    agent_id: '<agent_id>',
  },
  connector: 'browserbase',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="browserbase_get_agent",
    tool_input={
        "agent_id": "<agent_id>",
    },
    connection_name="browserbase",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `browserbase_get_agent`

Get Agent · Read-only

Get one Browserbase custom agent by ID.
Returns its agentId, name, systemPrompt, resultSchema, createdAt and updatedAt.
Use this to read an agent's instructions. Use browserbase_list_agents to find agent IDs.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `agent_id` (`string`, required): ID of the agent, from the agentId field returned by browserbase_create_agent or browserbase_list_agents. Example: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d

Example input: `{"agent_id":"<agent_id>"}`

### `browserbase_get_agent_run`

Get Agent Run · Read-only

Get one Browserbase agent run by ID.
Returns its runId, agentId, task, status (PENDING, RUNNING, COMPLETED, FAILED, STOPPED, TIMED_OUT or PAUSED), sessionId, result, cause, and created, started and ended times; result is present once the run has finished.
Use this to poll a run started with browserbase_run_agent. Use browserbase_list_agent_run_messages for its step-by-step messages.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `run_id` (`string`, required): ID of the agent run, from the runId field returned by browserbase_run_agent or browserbase_list_agent_runs. Example: 5d6e7f80-91a2-4b3c-9d4e-5f6a7b8c9d0e

Example input: `{"run_id":"<run_id>"}`

### `browserbase_get_context`

Get Context · Read-only

Get one Browserbase context by ID.
Returns the context's id, name, projectId, createdAt and updatedAt.
Use this to check that a context exists before passing it to browserbase_create_session. Browserbase has no endpoint that lists contexts.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `context_id` (`string`, required): ID of the Browserbase context, as returned in the id field by browserbase_create_context. Example: 2b7e4c1a-9d3f-4e58-b6a0-7c8d9e0f1a2b

Example input: `{"context_id":"<context_id>"}`

### `browserbase_get_download`

Get Download · Read-only

Get the metadata of one file a Browserbase session downloaded.
Returns id, sessionId, filename, mimeType, size, checksum (SHA-256) and createdAt. The file's contents are not returned.
Use this to check one download. Use browserbase_list_session_downloads to find download IDs.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `download_id` (`string`, required): ID of the download, from the id field returned by browserbase_list_session_downloads. Example: 9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d

Example input: `{"download_id":"<download_id>"}`

### `browserbase_get_extension`

Get Extension · Read-only

Get one Chrome extension uploaded to Browserbase.
Returns its id, fileName, projectId, createdAt and updatedAt.
Use this to check an extension before passing its ID as extension_id to browserbase_create_session.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `extension_id` (`string`, required): ID of a Chrome extension uploaded to Browserbase (uploads happen outside this connector, for example with the Browserbase SDK). Example: 4c3b2a19-0817-4f6e-9d5c-4b3a29180716

Example input: `{"extension_id":"<extension_id>"}`

### `browserbase_get_function`

Get Function · Read-only

Get one Browserbase Function by ID.
Returns its id, projectId, name, createdAt and updatedAt.
Use this to check a function before invoking it. Use browserbase_list_functions to find function IDs.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `function_id` (`string`, required): ID of the Browserbase Function, from browserbase_list_functions. Example: 0f1e2d3c-4b5a-4968-8776-655443322110

Example input: `{"function_id":"<function_id>"}`

### `browserbase_get_function_invocation`

Get Function Invocation · Read-only

Get one Browserbase Function invocation by ID.
Returns its id, functionId, versionId, sessionId, region, params, status (PENDING, RUNNING, COMPLETED or FAILED), results, and created, started, ended and expiry times, and cause when it failed.
Use this to poll an invocation started with browserbase_invoke_function and read its results. Use browserbase_get_function_invocation_logs for its log output.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `invocation_id` (`string`, required): ID of the function invocation, from the id field returned by browserbase_invoke_function. Example: 7e6d5c4b-3a29-4180-9f7e-6d5c4b3a2918

Example input: `{"invocation_id":"<invocation_id>"}`

### `browserbase_get_function_invocation_logs`

Get Function Invocation Logs · Read-only

Get the log output of one Browserbase Function invocation.
Returns logs (each with message and timestamp) and total.
Use this to debug an invocation. Use browserbase_get_function_invocation for its status and results.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `invocation_id` (`string`, required): ID of the function invocation, from the id field returned by browserbase_invoke_function. Example: 7e6d5c4b-3a29-4180-9f7e-6d5c4b3a2918

Example input: `{"invocation_id":"<invocation_id>"}`

### `browserbase_get_project`

Get Project · Read-only

Get one Browserbase project by ID.
Returns its id, name, ownerId, defaultTimeout (seconds), concurrency (maximum concurrent sessions), createdAt and updatedAt.
Use this to read one project's limits. Use browserbase_list_projects to find project IDs.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `project_id` (`string`, required): ID of the Browserbase project, from browserbase_list_projects or the dashboard's Settings page. Example: 8c9d0e1f-2a3b-4c5d-8e6f-7a8b9c0d1e2f

Example input: `{"project_id":"<project_id>"}`

### `browserbase_get_project_usage`

Get Project Usage · Read-only

Get the usage of one Browserbase project.
Returns browserMinutes and proxyBytes.
Use this to check how much browser time and proxy traffic a project has used. Use browserbase_get_project for its limits.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `project_id` (`string`, required): ID of the Browserbase project, from browserbase_list_projects or the dashboard's Settings page. Example: 8c9d0e1f-2a3b-4c5d-8e6f-7a8b9c0d1e2f

Example input: `{"project_id":"<project_id>"}`

### `browserbase_get_session`

Get Session · Read-only

Get one Browserbase session by ID.
Returns its status (PENDING, RUNNING, ERROR, TIMED_OUT or COMPLETED), projectId, region, start, end and expiry times, proxyBytes, keepAlive, contextId, userMetadata, and the connectUrl, seleniumRemoteUrl and signingKey used to connect to it.
Use this to check one session's state. Use browserbase_list_sessions to find sessions, and browserbase_get_session_live_urls for the live view.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `session_id` (`string`, required): ID of the Browserbase session, as returned in the id field by browserbase_create_session or browserbase_list_sessions. Example: f3a1c2d4-5b6e-4f70-8a9b-0c1d2e3f4a5b

Example input: `{"session_id":"<session_id>"}`

### `browserbase_get_session_live_urls`

Get Session Live URLs · Read-only

Get the live view URLs of a running Browserbase session.
Returns debuggerUrl and debuggerFullscreenUrl (a page you can open or embed in an iframe to watch and control the browser), wsUrl, and pages (each open tab with its id, url, title, faviconUrl and per-tab debugger URLs).
Use this to watch or hand control of a session to a person. Use browserbase_get_session for the session's status and connectUrl.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `session_id` (`string`, required): ID of the Browserbase session, as returned in the id field by browserbase_create_session or browserbase_list_sessions. Example: f3a1c2d4-5b6e-4f70-8a9b-0c1d2e3f4a5b
- `expires_in` (`integer`, optional): How long the returned live view URLs stay valid, in seconds, up to 21600 (6 hours). Leave empty for URLs that last as long as the session. Example: 3600

Example input: `{"session_id":"<session_id>"}`

### `browserbase_get_session_logs`

Get Session Logs · Read-only

Get the Chrome DevTools Protocol log of a Browserbase session.
Returns an array of log entries, each with the CDP method, pageId, sessionId, timestamp, frameId, loaderId and the request params and response result.
Use this to debug what the browser did, such as navigations and network events. Needs log_session left on when the session was created. Use browserbase_get_session_replay for a visual replay.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `session_id` (`string`, required): ID of the Browserbase session, as returned in the id field by browserbase_create_session or browserbase_list_sessions. Example: f3a1c2d4-5b6e-4f70-8a9b-0c1d2e3f4a5b

Example input: `{"session_id":"<session_id>"}`

### `browserbase_get_session_replay`

Get Session Replay · Read-only

Get the replay of a finished Browserbase session, split by page (browser tab).
Returns pageCount and pages, each with pageId, the page's url, and startTimeMs and endTimeMs.
Use this to see which pages a session visited and when. Use browserbase_create_session_recording_downloads to get MP4 files of the recording.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `session_id` (`string`, required): ID of the Browserbase session, as returned in the id field by browserbase_create_session or browserbase_list_sessions. Example: f3a1c2d4-5b6e-4f70-8a9b-0c1d2e3f4a5b

Example input: `{"session_id":"<session_id>"}`

### `browserbase_list_agent_run_messages`

List Agent Run Messages · Read-only

List the messages a Browserbase agent run produced, oldest first, in the AI SDK UIMessage format (the agent's reasoning, tool calls and tool results).
Returns data (the messages) and nextSince, the id of the last message returned.
Use this to follow or debug what an agent did. Pass nextSince back as since to page or to poll for new messages. Use browserbase_get_agent_run for the final result.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `run_id` (`string`, required): ID of the agent run, from the runId field returned by browserbase_run_agent or browserbase_list_agent_runs. Example: 5d6e7f80-91a2-4b3c-9d4e-5f6a7b8c9d0e
- `all` (`boolean`, optional): Set to true to return every message after since in one response, ignoring limit. Defaults to false.
- `limit` (`integer`, optional): Maximum number of messages to return, 1 to 100. Defaults to 20. Ignored when all is true.
- `since` (`string`, optional): ID of the last message you already have; only later messages are returned. Leave empty to start from the first message. Use the previous response's nextSince. Example: msg_01JABCDEF

Example input: `{"run_id":"<run_id>"}`

### `browserbase_list_agent_runs`

List Agent Runs · Read-only

List Browserbase agent runs across the account, newest first, optionally filtered by status, agent and creation time.
Returns data (runs, each with runId, agentId, task, status (PENDING, RUNNING, COMPLETED, FAILED, STOPPED, TIMED_OUT or PAUSED), sessionId, result, cause, and created, started and ended times), limit and nextCursor.
Use this to find runs. Pass nextCursor back as cursor for the next page. Use browserbase_get_agent_run for one run.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `agent_id` (`string`, optional): Only return runs of this custom agent. Example: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
- `cursor` (`string`, optional): The nextCursor value from the previous page. Leave empty for the first page. Example: eyJpZCI6IjVkNmU3ZjgwIn0
- `end_at` (`string`, optional): Only return runs created at or before this time (RFC 3339). Example: 2026-10-31T23:59:59Z
- `limit` (`integer`, optional): Maximum number of runs to return, 1 to 1000. Defaults to 20.
- `start_at` (`string`, optional): Only return runs created at or after this time (RFC 3339). Example: 2026-10-01T00:00:00Z
- `status` (`string`, optional): Only return runs with this status: PENDING, RUNNING, COMPLETED, FAILED, STOPPED, TIMED_OUT or PAUSED. One of: `PENDING`, `RUNNING`, `COMPLETED`, `FAILED`, `STOPPED`, `TIMED_OUT`, `PAUSED`.

Example input: `{}`

### `browserbase_list_agents`

List Agents · Read-only

List the Browserbase custom agents in the account, optionally filtered by creation time.
Returns data (agents, each with agentId, name, systemPrompt, resultSchema, createdAt and updatedAt), limit and nextCursor.
Use this to find agent IDs. Pass nextCursor back as cursor for the next page. Use browserbase_get_agent for one agent.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): The nextCursor value from the previous page. Leave empty for the first page. Example: eyJpZCI6ImExYjJjM2Q0In0
- `end_at` (`string`, optional): Only return agents created at or before this time (RFC 3339). Example: 2026-10-31T23:59:59Z
- `limit` (`integer`, optional): Maximum number of agents to return, 1 to 1000. Defaults to 20.
- `start_at` (`string`, optional): Only return agents created at or after this time (RFC 3339). Example: 2026-10-01T00:00:00Z

Example input: `{}`

### `browserbase_list_functions`

List Functions · Read-only

List the Browserbase Functions (deployed TypeScript code that runs next to a Browserbase browser) in the project.
Returns data (functions, each with id, projectId, name, createdAt and updatedAt) and total.
Use this to find a function ID for browserbase_invoke_function. Functions are deployed with the Browserbase CLI, not through this connector.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Maximum number of functions to return, 1 to 100. Defaults to 20.
- `offset` (`integer`, optional): Number of functions to skip, for paging. Defaults to 0. Example: 20

Example input: `{}`

### `browserbase_list_projects`

List Projects · Read-only

List the Browserbase projects the API key's organization can access.
Returns an array of projects, each with id, name, ownerId, defaultTimeout (seconds), concurrency (maximum concurrent sessions), createdAt and updatedAt.
Use this to find project IDs. Use browserbase_get_project_usage for a project's browser minutes and proxy bytes.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `browserbase_list_session_downloads`

List Session Downloads · Read-only

List the files a Browserbase session downloaded, with optional filters by filename, MIME type, size and time.
Returns downloads (each with id, sessionId, filename, mimeType, size, checksum and createdAt), total, limit and offset.
Use this to see what a session downloaded. Use browserbase_get_download for one file's metadata; file contents are not returned by these tools.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `session_id` (`string`, required): ID of the session whose downloads to list. Example: f3a1c2d4-5b6e-4f70-8a9b-0c1d2e3f4a5b
- `created_after` (`string`, optional): Only return downloads created at or after this time (ISO 8601). Example: 2026-10-01T00:00:00Z
- `created_before` (`string`, optional): Only return downloads created at or before this time (ISO 8601). Example: 2026-10-31T23:59:59Z
- `filename` (`string`, optional): Only return downloads with exactly this filename. Example: invoice-2026-10.pdf
- `limit` (`integer`, optional): Maximum number of downloads to return, 1 to 100. Defaults to 20.
- `max_size` (`number`, optional): Only return files at most this many bytes. Example: 10485760
- `mime_type` (`string`, optional): Only return downloads with this MIME type. Example: application/pdf
- `min_size` (`number`, optional): Only return files at least this many bytes. Example: 1024
- `offset` (`integer`, optional): Number of downloads to skip, for paging. Defaults to 0. Example: 20

Example input: `{"session_id":"<session_id>"}`

### `browserbase_list_session_recording_downloads`

List Session Recording Downloads · Read-only

Get the status of a Browserbase session's MP4 recording downloads, one per recorded page.
Returns downloads, each with pageId, status (NOT_REQUESTED, PENDING, COMPLETED or FAILED), and for COMPLETED pages a short-lived signed downloadUrl and completedAt.
Use this after browserbase_create_session_recording_downloads to get the video URLs. Bring-your-own-storage projects get no downloadUrl.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `session_id` (`string`, required): ID of the Browserbase session, as returned in the id field by browserbase_create_session or browserbase_list_sessions. Example: f3a1c2d4-5b6e-4f70-8a9b-0c1d2e3f4a5b

Example input: `{"session_id":"<session_id>"}`

### `browserbase_list_sessions`

List Sessions · Read-only

List the Browserbase sessions in the API key's project, optionally filtered by status or by user metadata.
Returns an array of sessions, each with id, status, projectId, region, createdAt, startedAt, endedAt, expiresAt, proxyBytes, keepAlive, contextId and userMetadata.
Use this to find sessions. Use browserbase_get_session for one session's connect URLs.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `metadata_query` (`string`, optional): Filter by the userMetadata set at session creation, in Browserbase's query syntax user_metadata['key']:'value'. Nested keys chain brackets, as in user_metadata['order']['status']:'shipped'. Example: user_metadata['customer']:'acme'
- `status` (`string`, optional): Only return sessions with this status: PENDING, RUNNING, ERROR, TIMED_OUT or COMPLETED. One of: `PENDING`, `RUNNING`, `ERROR`, `TIMED_OUT`, `COMPLETED`.

Example input: `{}`

### `browserbase_create_agent`

Create Agent · Write

Create a reusable Browserbase custom agent with a name, a system prompt and a result schema.
Returns the new agent's agentId, name, systemPrompt, resultSchema, createdAt and updatedAt.
Use this to save instructions you run often, then pass the agentId to browserbase_run_agent. Use browserbase_update_agent to change an existing agent.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Name for the agent, 1 to 255 characters, shown in the dashboard and API responses. Example: Pricing checker
- `result_schema` (`object`, optional): JSON Schema that runs of this agent should return their result in. Runs can override it. Example: {"type": "object", "properties": {"price": {"type": "number"}}}
- `system_prompt` (`string`, optional): Instructions that steer the agent on every run that uses it. Example: You check competitor pricing pages and report prices in USD.

Example input: `{"name":"<name>"}`

### `browserbase_create_context`

Create Context · Write

Create a Browserbase context, a saved browser profile that keeps cookies, local storage and logins between sessions.
Returns the new context's id, plus publicKey, cipherAlgorithm and initializationVectorSize for encrypting a user data directory.
Use this once per identity you want to stay logged in as. Pass the id as context_id with persist_context true to browserbase_create_session or browserbase_run_agent to fill and reuse it.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, optional): Optional name for the context, unique among the project's active contexts. Leading and trailing spaces are trimmed. Example: acme-admin-login
- `project_id` (`string`, optional): Project to create the context in. Leave empty to use the project that owns the API key. Example: 8c9d0e1f-2a3b-4c5d-8e6f-7a8b9c0d1e2f

Example input: `{}`

### `browserbase_create_session`

Create Session · Write

Start a new Browserbase cloud browser session, with optional saved context, proxies, stealth (Verified) mode, captcha solving, viewport, region, time limit and metadata.
Returns the session's id, status, region, expiresAt, connectUrl (the Chrome DevTools Protocol WebSocket URL), seleniumRemoteUrl and signingKey.
Use this to get a browser. Drive it by connecting Playwright, Puppeteer, Selenium or Stagehand to connectUrl from your own code; that WebSocket connection cannot be made through a tool call. Use browserbase_get_session_live_urls to watch it, and browserbase_release_session to end it.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `allowed_domains` (`array`, optional): Restrict top-level page navigation to these domains and their subdomains (example.com also allows www.example.com). Iframes and other in-page requests are not blocked. Leave empty for no restriction. Example: ["example.com", "github.com"]
- `block_ads` (`boolean`, optional): Set to true to block ads in the browser. Defaults to false.
- `captcha_image_selector` (`string`, optional): CSS selector of a custom captcha image, for captchas Browserbase does not detect on its own. Set together with captcha_input_selector. Example: #captcha-image
- `captcha_input_selector` (`string`, optional): CSS selector of the input field where the custom captcha answer goes. Set together with captcha_image_selector. Example: #captcha-input
- `context_id` (`string`, optional): ID of a saved context (from browserbase_create_context) whose cookies, local storage and logins the browser should load. Example: 2b7e4c1a-9d3f-4e58-b6a0-7c8d9e0f1a2b
- `extension_id` (`string`, optional): ID of a Chrome extension already uploaded to Browserbase, to load in the browser. Example: 4c3b2a19-0817-4f6e-9d5c-4b3a29180716
- `ignore_certificate_errors` (`boolean`, optional): Set to true to ignore TLS certificate errors, for example to reach hosts with self-signed or expired certificates. Defaults to false.
- `keep_alive` (`boolean`, optional): Set to true to keep the session running after the client disconnects, so you can reconnect later. You must then end it with browserbase_release_session. Available on paid plans (Hobby and above).
- `log_session` (`boolean`, optional): Set to false to turn off session logging (the CDP log browserbase_get_session_logs returns). Defaults to true.
- `os` (`string`, optional): Operating system the browser presents as in stealth mode: windows, mac, linux, mobile or tablet. One of: `windows`, `mac`, `linux`, `mobile`, `tablet`.
- `persist_context` (`boolean`, optional): Only used with context_id. Set to true to save the browser's cookies and storage back into the context when the session ends, so later sessions stay logged in. Defaults to false.
- `project_id` (`string`, optional): Project to run the session in. Leave empty to use the project that owns the API key. browserbase_list_projects lists your project IDs. Example: 8c9d0e1f-2a3b-4c5d-8e6f-7a8b9c0d1e2f
- `proxy_configs` (`array`, optional): List of proxy rules, applied in order, for finer control than use_proxy. Each rule has a type: browserbase (Browserbase's managed proxy, optionally with a geolocation that needs a two-letter country and can add a US state code or city), external (your own proxy server URL, with optional username and password), or none (connect directly). Any rule can also take a domainPattern so it only applies to matching domains. Example: [{"type": "browserbase", "geolocation": {"country": "US", "state": "NY", "city": "New York"}}, {"type": "none", "domainPattern": ".*\\.gov"}]
- `record_session` (`boolean`, optional): Set to false to turn off session recording, which powers replays and MP4 recording downloads. Defaults to true.
- `region` (`string`, optional): Region to run the browser in: us-west-2 (default), us-east-1, eu-central-1 or ap-southeast-1. One of: `us-west-2`, `us-east-1`, `eu-central-1`, `ap-southeast-1`.
- `solve_captchas` (`boolean`, optional): Set to false to turn off automatic captcha solving. Defaults to true.
- `timeout` (`integer`, optional): Seconds after which the session ends on its own, from 60 to 21600 (6 hours). Defaults to the project's defaultTimeout. Example: 600
- `use_proxy` (`boolean`, optional): Set to true to route the browser's traffic through Browserbase's managed residential proxy network with its default settings. Ignored when proxy_configs is set. Leave empty for no proxy.
- `user_metadata` (`object`, optional): Your own key-value data to attach to the session, which browserbase_list_sessions can filter on. Example: {"customer": "acme", "job": "price-check"}
- `verified` (`boolean`, optional): Set to true to use Verified Browser mode, Browserbase's stealth browser for sites with strong bot detection. Needs the Scale plan.
- `viewport_height` (`integer`, optional): Browser viewport height in pixels. Set together with viewport_width. Example: 1080
- `viewport_width` (`integer`, optional): Browser viewport width in pixels. Set together with viewport_height. Example: 1920

Example input: `{}`

### `browserbase_create_session_recording_downloads`

Create Session Recording Downloads · Write

Start building one downloadable MP4 video per recorded page of a finished Browserbase session. Calling it again retries any pages that failed.
Returns downloads, each with pageId and status, which starts as PENDING.
Use this once a session has ended, then poll browserbase_list_session_recording_downloads for the video URLs. Fails with 409 while the session is still running and 422 if recording was off.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `session_id` (`string`, required): ID of the Browserbase session, as returned in the id field by browserbase_create_session or browserbase_list_sessions. Example: f3a1c2d4-5b6e-4f70-8a9b-0c1d2e3f4a5b

Example input: `{"session_id":"<session_id>"}`

### `browserbase_fetch_page`

Fetch Page · Write

Fetch one URL through Browserbase without starting a browser, returning the raw body, a markdown version, or JSON extracted to a schema you provide.
Returns id, statusCode, headers, contentType, encoding and content (a string for raw and markdown; an object for json; base64 when encoding is base64).
Use this for quick reads of pages that need no JavaScript or interaction, up to 5 MB and 60 seconds. Use browserbase_create_session for pages that need a real browser, and browserbase_search_web to find URLs.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `url` (`string`, required): The URL to fetch. Example: https://www.browserbase.com/
- `allow_insecure_ssl` (`boolean`, optional): Set to true to skip TLS certificate checks, for sites with self-signed or expired certificates. Defaults to false.
- `allow_redirects` (`boolean`, optional): Set to true to follow HTTP redirects. Defaults to false, which returns the redirect response itself.
- `format` (`string`, optional): Output format for content: raw (the response body unchanged, the default and cheapest), markdown (the page converted to markdown), or json (structured data shaped by schema). markdown and json are billed as Fetch Extract and can't convert PDFs. One of: `raw`, `markdown`, `json`.
- `schema` (`object`, optional): JSON Schema describing the object to extract. Required when format is json, and rejected with any other format. Example: {"type": "object", "properties": {"title": {"type": "string"}, "summary": {"type": "string"}}, "required": ["title"]}
- `use_proxy` (`boolean`, optional): Set to true to send the request through Browserbase's proxy network, which helps when a site blocks the request or returns 403. Defaults to false.

Example input: `{"url":"<url>"}`

### `browserbase_invoke_function`

Invoke Function · Write

Start an asynchronous run of a deployed Browserbase Function with JSON parameters, optionally with custom settings for the browser session it gets.
Returns the new invocation's id, functionId, versionId, sessionId, region, params, status (PENDING, RUNNING, COMPLETED or FAILED), results, and created, started, ended and expiry times; it starts as PENDING.
Use this to run your own deployed browser automation. Poll browserbase_get_function_invocation for its results and browserbase_get_function_invocation_logs for its console output.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `function_id` (`string`, required): ID of the Browserbase Function, from browserbase_list_functions. Example: 0f1e2d3c-4b5a-4968-8776-655443322110
- `params` (`object`, optional): Parameters passed to the function, as a JSON object. Their shape is whatever your function expects. Example: {"url": "https://example.com", "maxPages": 3}
- `session_create_params` (`object`, optional): Settings for the browser session the function runs with, in the same shape as the Create Session request body (for example browserSettings, proxies, region, keepAlive). Example: {"browserSettings": {"blockAds": true}, "proxies": true}

Example input: `{"function_id":"<function_id>"}`

### `browserbase_release_session`

Release Session · Write

End a running Browserbase session early by requesting its release (status REQUEST_RELEASE), which stops browser-minute billing.
Returns the updated session record with its id, status, endedAt and other session fields.
Use this when you are done with a session, especially one created with keep_alive. Sessions without keep_alive also end on their own when the client disconnects or the timeout runs out.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `session_id` (`string`, required): ID of the Browserbase session, as returned in the id field by browserbase_create_session or browserbase_list_sessions. Example: f3a1c2d4-5b6e-4f70-8a9b-0c1d2e3f4a5b

Example input: `{"session_id":"<session_id>"}`

### `browserbase_resume_agent_run`

Resume Agent Run · Write

Resume a PAUSED Browserbase agent run with your reply to its request for input, and optionally more variables.
Returns the run's runId, agentId, task, status (PENDING, RUNNING, COMPLETED, FAILED, STOPPED, TIMED_OUT or PAUSED), sessionId, result, cause, and created, started and ended times.
Use this when browserbase_get_agent_run shows status PAUSED; the agent's question is the trailing pause tool call in browserbase_list_agent_run_messages. Fails with a conflict if the run is not paused.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `run_id` (`string`, required): ID of the agent run, from the runId field returned by browserbase_run_agent or browserbase_list_agent_runs. Example: 5d6e7f80-91a2-4b3c-9d4e-5f6a7b8c9d0e
- `task` (`string`, optional): Your reply to the agent's request for input, such as the code or approval it asked for. Example: The one-time passcode is 482913
- `variables` (`object`, optional): Named values the agent can use as %name% placeholders in the task, so secrets like passwords stay out of the task text. Each key maps to an object with a value and an optional description that tells the agent when to use it. Values are not stored. Example: {"password": {"value": "s3cret", "description": "Login password for the portal"}}

Example input: `{"run_id":"<run_id>"}`

### `browserbase_run_agent`

Run Agent · Write

Start a Browserbase browser agent that completes a natural-language task using web search and its own browser session, optionally as a saved custom agent and with a result schema.
Returns the new run's runId, agentId, task, status (PENDING, RUNNING, COMPLETED, FAILED, STOPPED, TIMED_OUT or PAUSED), sessionId, result, cause, and created, started and ended times; the run starts as PENDING.
Use this to hand a whole browsing task to Browserbase. Poll browserbase_get_agent_run for the result and use browserbase_list_agent_run_messages to follow its steps. Use browserbase_create_session instead to drive a browser yourself.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `task` (`string`, required): What the agent should do, in plain language. Example: Find the current price of the Browserbase Developer plan on browserbase.com/pricing
- `agent_id` (`string`, optional): ID of a custom agent (from browserbase_create_agent) whose system prompt and result schema to use. Leave empty for an ad-hoc run. Example: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
- `context_id` (`string`, optional): ID of a saved context (from browserbase_create_context) for the agent's browser to load. Example: 2b7e4c1a-9d3f-4e58-b6a0-7c8d9e0f1a2b
- `pause_when` (`string`, optional): When the agent should pause and wait for your input, such as a verification code or an approval. The run then goes to PAUSED until you call browserbase_resume_agent_run. Example: Pause when the site asks for a one-time passcode
- `persist_context` (`boolean`, optional): Only used with context_id. Set to true to save the browser's cookies and storage back into the context when the run ends. Defaults to false.
- `proxy_configs` (`array`, optional): List of proxy rules, applied in order, for finer control than use_proxy. Each rule has a type: browserbase (Browserbase's managed proxy, optionally with a geolocation that needs a two-letter country and can add a US state code or city), external (your own proxy server URL, with optional username and password), or none (connect directly). Any rule can also take a domainPattern so it only applies to matching domains. Example: [{"type": "browserbase", "geolocation": {"country": "US", "state": "NY", "city": "New York"}}, {"type": "none", "domainPattern": ".*\\.gov"}]
- `result_schema` (`object`, optional): JSON Schema the agent's result should follow when the run finishes. Overrides the agent's own resultSchema for this run. Example: {"type": "object", "properties": {"price": {"type": "number"}}}
- `use_proxy` (`boolean`, optional): Set to true to route the browser's traffic through Browserbase's managed residential proxy network with its default settings. Ignored when proxy_configs is set. Leave empty for no proxy.
- `variables` (`object`, optional): Named values the agent can use as %name% placeholders in the task, so secrets like passwords stay out of the task text. Each key maps to an object with a value and an optional description that tells the agent when to use it. Values are not stored. Example: {"password": {"value": "s3cret", "description": "Login password for the portal"}}
- `verified` (`boolean`, optional): Set to true to use Browserbase Verified (stealth) mode for the agent's browser. Needs the Scale plan.

Example input: `{"task":"<task>"}`

### `browserbase_search_web`

Search Web · Write

Run a web search through Browserbase Search.
Returns requestId, query and results, each with id, url and title, plus author, publishedDate, image and favicon when available.
Use this to find URLs to open. Use browserbase_fetch_page to read a result's content, or browserbase_create_session to interact with it.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `query` (`string`, required): The search query, 1 to 200 characters. Example: headless browser infrastructure for AI agents
- `mode` (`string`, optional): Search mode, only for the parallel provider: fast (cheaper) or advanced (parallel's default). Requires provider parallel; exa has no modes and rejects a mode with 400. One of: `fast`, `advanced`.
- `num_results` (`integer`, optional): Number of results to return, 1 to 25. Defaults to 10.
- `provider` (`string`, optional): Search provider: parallel or exa. Leave empty for your project's default provider. Set it whenever you set mode. One of: `parallel`, `exa`.

Example input: `{"query":"<query>"}`

### `browserbase_stop_agent_run`

Stop Agent Run · Write

Ask an in-progress Browserbase agent run to stop; it winds down and moves to STOPPED.
Returns the run's runId, agentId, task, status (PENDING, RUNNING, COMPLETED, FAILED, STOPPED, TIMED_OUT or PAUSED), sessionId, result, cause, and created, started and ended times.
Use this to cancel a run you no longer need. Fails with a conflict if the run has already finished.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `run_id` (`string`, required): ID of the agent run, from the runId field returned by browserbase_run_agent or browserbase_list_agent_runs. Example: 5d6e7f80-91a2-4b3c-9d4e-5f6a7b8c9d0e

Example input: `{"run_id":"<run_id>"}`

### `browserbase_update_agent`

Update Agent · Write

Change a Browserbase custom agent's name, system prompt or result schema; fields you leave empty stay as they are.
Returns the updated agent's agentId, name, systemPrompt, resultSchema, createdAt and updatedAt.
Use this to edit an existing agent. Runs already started keep the old settings. Use browserbase_create_agent for a new one.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `agent_id` (`string`, required): ID of the agent, from the agentId field returned by browserbase_create_agent or browserbase_list_agents. Example: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
- `name` (`string`, optional): Name for the agent, 1 to 255 characters, shown in the dashboard and API responses. Example: Pricing checker
- `result_schema` (`object`, optional): JSON Schema that runs of this agent should return their result in. Runs can override it. Example: {"type": "object", "properties": {"price": {"type": "number"}}}
- `system_prompt` (`string`, optional): Instructions that steer the agent on every run that uses it. Example: You check competitor pricing pages and report prices in USD.

Example input: `{"agent_id":"<agent_id>"}`

### `browserbase_delete_agent`

Delete Agent · Destructive

Permanently delete a Browserbase custom agent.
Returns an empty response on success.
Use this to remove an agent you no longer run. Runs that already used it are not affected.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `agent_id` (`string`, required): ID of the agent, from the agentId field returned by browserbase_create_agent or browserbase_list_agents. Example: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d

Example input: `{"agent_id":"<agent_id>"}`

### `browserbase_delete_context`

Delete Context · Destructive

Permanently delete a Browserbase context and the cookies, storage and logins saved in it.
Returns an empty response on success.
Use this to remove an identity you no longer need. Sessions can no longer load the context afterwards.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `context_id` (`string`, required): ID of the Browserbase context, as returned in the id field by browserbase_create_context. Example: 2b7e4c1a-9d3f-4e58-b6a0-7c8d9e0f1a2b

Example input: `{"context_id":"<context_id>"}`

### `browserbase_delete_download`

Delete Download · Destructive

Permanently delete one file a Browserbase session downloaded from Browserbase storage.
Returns an empty response on success.
Use this to clean up downloaded files you no longer need.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `download_id` (`string`, required): ID of the download, from the id field returned by browserbase_list_session_downloads. Example: 9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d

Example input: `{"download_id":"<download_id>"}`

### `browserbase_delete_extension`

Delete Extension · Destructive

Permanently delete a Chrome extension uploaded to Browserbase.
Returns an empty response on success.
Use this to remove an extension sessions should no longer load.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `extension_id` (`string`, required): ID of a Chrome extension uploaded to Browserbase (uploads happen outside this connector, for example with the Browserbase SDK). Example: 4c3b2a19-0817-4f6e-9d5c-4b3a29180716

Example input: `{"extension_id":"<extension_id>"}`

## Related

Other Developer Tools connectors ([all 123](/agentkit/connectors/?category=developer-tools)):

- [GitHub](/agentkit/connectors/github/): Scalekit connector, OAuth, 217 tools
- [Microsoft Entra ID](/agentkit/connectors/microsoftentraid/): Scalekit connector, OAuth, 82 tools
- [Datadog](/agentkit/connectors/datadog/): Scalekit connector, API key, 105 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
