Quick Start
Give your agent a supervised browser: it drives a real browser, you watch live and take control when it matters, then hand it back. The fastest way in is the MCP server and a prompt. No API key needed — your agent handles authentication.
Prompt your agent (recommended)
1. Install the MCP server in Claude Desktop, Cursor, or VS Code:
{
"mcpServers": {
"rove": {
"command": "npx",
"args": ["-y", "@roveapi/mcp"]
}
}
}
That's it. No API key. Your agent will authenticate on first use via the authenticate tool — just provide your email when asked.
2. Prompt your agent:
"Start a supervised browser session and book a flight to NYC next Friday. Ask me before paying."
Your agent will:
- Create a supervised session
- Give you a viewer link to watch live
- Pause for your approval at payment
- Let you take control of the browser anytime
What is a supervised session?
A supervised session is a browser your agent drives while you watch. You can:
- Watch live — see every page, click, and form fill as it happens
- Take control — grab the browser yourself for tricky parts (logins, CAPTCHAs, judgment calls)
- Hand back — return control to the agent when you're done
- Approve — the agent pauses for your confirmation before irreversible actions
This is different from headless automation. The browser is real, visible, and shared.
Manual API usage
If you're not using MCP, you can call the REST API directly. You'll need an API key from roveapi.com/login.
Create a supervised session
curl -X POST https://api.roveapi.com/v1/browser/session \
-H "Authorization: Bearer <redacted>" \
-H "Content-Type: application/json" \
-d '{"supervised": true}'
Get a viewer link
curl -X POST https://api.roveapi.com/v1/browser/sessions/sess_abc123/viewer-grants \
-H "Authorization: Bearer <redacted>" \
-H "Content-Type: application/json" \
-d '{"origin": "https://roveapi.com"}'
Open the viewer_url to watch and take control.
SDKs
- Node.js:
npm install @roveapi/browser - Python:
pip install roveapi
import { BrowserClient } from '@roveapi/browser'
const rove = new BrowserClient({ apiKey: process.env.ROVE_API_KEY! })
const session = await rove.session({ supervised: true })
const grant = await rove.createViewerGrant(session.id)
console.log('Watch live:', grant.viewerUrl)
from roveapi import BrowserClient
with BrowserClient(api_key="rvp_live_...") as rove:
session = rove.session(supervised=True)
grant = rove.create_viewer_grant(session.id)
print('Watch live:', grant['viewer_url'])
Next steps
- MCP Setup — detailed MCP configuration
- Supervised sessions — control states, handoff, viewer guide
- API reference — full REST API