Developer docs

From agent key to real browser task.

A compact reference for pairing a browser, creating scoped access and calling BrowserPair through Remote MCP or REST.

Quickstart

Install and connect the extension

Open BrowserPair in your browser and connect that browser profile to your account.

Create a scoped agent key

Create one key per agent. Choose its browser, website scope and approval preset. The full token is shown once.

Choose MCP or REST

Remote MCP is the shortest path for an agent that speaks MCP. REST gives you explicit task creation and polling.

Run a task

Keep domains and capabilities narrow. BrowserPair routes the task to the connected extension and pauses when user input or confirmation is required.

Free defaults

Current default entitlement: 1 connected browser, 2 active agent keys and 100 started tasks per UTC calendar month.

Remote MCP

Use the Remote MCP endpoint with your bp_live_… agent key as a Bearer token.

MCP endpointAuthorization: Bearer
https://mcp.carenly.app

Current tools:

TOOL
browser_list

List browsers available to the agent key.

TOOL
browser_run

Start a bounded browser task. At least one allowed domain is required.

TOOL
task_state

Read durable task state.

TOOL
task_respond

Respond when a task needs agent input.

TOOL
task_cancel

Cancel a task owned by the key.

browser_run defaults to ordinary browsing capabilities such as read, navigate, click, fill and select. Elevated capabilities must be requested explicitly and must still fit inside the agent key scope.

REST API

The REST API uses the same scoped agent key. Task creation requires an Idempotency-Key header.

Create a taskPOST /v1/tasks
curl https://api.carenly.app/v1/tasks \
  -H 'Authorization: Bearer bp_live_…' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: invoice-check-001' \
  -d '{
    "browserId": "brw_…",
    "goal": "Open the billing page and read the latest invoice status",
    "contract": {
      "version": 1,
      "domains": ["example.com"],
      "capabilities": ["read", "navigate", "click"],
      "confirmations": []
    }
  }'
GET
/v1/browsers

List browsers in the key scope.

POST
/v1/tasks

Create an idempotent browser task.

GET
/v1/tasks/:id

Read task state and current interaction.

POST
/v1/tasks/:id/respond

Provide the next bounded agent action when requested.

POST
/v1/tasks/:id/cancel

Cancel a task.

Retrying the same idempotency key with the same task request returns the original task. Reusing that key with a different request fails closed.

Permissions

Every agent key has hard scope plus a user-facing approval preset. Presets decide when to ask; they never grant a capability that is outside the key.

Always ask

Pause before reading pages or making changes.

Allow read tools

Read and navigate automatically, then ask before changes.

Allow low-risk tools

Default. Allow ordinary low-risk browsing while asking for elevated risk.

Allow all in scope

Remove approval prompts for actions already authorized by the key and task contract. Hard denials and scope boundaries still apply.

Task semantics

A task persists its immutable contract, browser owner, fencing generation, owned tabs and effect state. Reconnects continue that durable identity.

ID

Idempotent creation

Network retries cannot accidentally create a second task when the same idempotency key is reused correctly.

FX

Effect verification

Executing or effect-unknown mutations are verified before retry instead of being blindly replayed.

Connect the first browser.

The dashboard handles pairing, agent keys, browser presence, approvals and task history.

Open BrowserPair