@browserview/mcp
Official@browserview/mcp is an MCP server that lets AI agents create, inspect, share, and destroy disposable cloud Chromium browser sessions on browserview.io, enabling both programmatic browser control (over CDP) and human observation/control via a live viewer URL simultaneously.
Capabilities
Create browser sessions (
create_session): Spin up a disposable cloud Chromium browser with a configurable start URL, viewport dimensions (320–3840 × 240–2160), optional wait-for-ready blocking, and optional session recording. Returns a human-accessibleviewer_url, pluscdp_urlandcdp_tokenfor driving the browser via Playwright or Puppeteer.List active sessions (
list_sessions): Get a summary of all active sessions for your account (id, status, health, start_url, dimensions, created_at) — no URLs or tokens exposed.Inspect a session (
get_session): Fetch full details for a single session with freshly issued viewer/CDP URLs and tokens, plus health info:restartscount anddegradedflag (true once the in-session browser has restarted). Use this to refresh expired tokens.Destroy a session (
destroy_session): Permanently shut down a session — browser stops, all viewer/CDP connections drop, unrecoverable. Recorded replays remain available afterward.Mint scoped access tokens (
mint_session_token): Generate short-lived, scoped tokens (view,control, orcdp) to securely share a session without exposing your API key. Configurable TTL from 1 second to 7 days (default 1 hour).Retrieve session replays (
get_session_replay): Fetch the replay manifest for recorded sessions (works even after destruction): seekable WebM video, main-frame page navigation timeline, and per-stream JSONL event feeds (actions, console, network, errors), all with absolute epoch-ms timestamps for precise alignment with video. Supports optional polling (up to 2 min) while recording finalizes.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@browserview/mcpCreate a browser session for https://example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@browserview/mcp
MCP (Model Context Protocol) server for browserview.io — disposable cloud Chromium sessions. Humans watch and control a session through a live viewer URL; agents drive the same browser over the Chrome DevTools Protocol (CDP) using Playwright or Puppeteer (connectOverCDP). This server lets any MCP-capable agent (Claude, OpenAI agents, Cursor, and others) create, inspect, share, and destroy sessions.
Requirements
Node.js 18+
A browserview.io API key, provided via the
BROWSERVIEW_API_KEYenvironment variable. Keys are minted in the browserview.io console and look likebv_live_+ 40 hex chars.
Optional: set BROWSERVIEW_BASE_URL to override the API base URL (default https://sessions.browserview.io). The legacy BROWSERVIEW_API_URL variable is still honored as a fallback but is deprecated — prefer BROWSERVIEW_BASE_URL.
Related MCP server: RoxyBrowser MCP Server
Setup
Claude Code
claude mcp add browserview -e BROWSERVIEW_API_KEY=your-key-here -- npx -y @browserview/mcpClaude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"browserview": {
"command": "npx",
"args": ["-y", "@browserview/mcp"],
"env": {
"BROWSERVIEW_API_KEY": "your-key-here"
}
}
}
}Cursor
Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"browserview": {
"command": "npx",
"args": ["-y", "@browserview/mcp"],
"env": {
"BROWSERVIEW_API_KEY": "your-key-here"
}
}
}
}Generic stdio client
Run the server as a stdio subprocess:
BROWSERVIEW_API_KEY=your-key-here npx -y @browserview/mcpTools
Tool | Arguments | Description |
|
| Create a browser session. Server defaults: |
| — | List all sessions (no URLs/tokens; use |
|
| Fetch one session with freshly issued URLs and tokens, plus health details: |
|
| Permanently destroy a session. |
|
| Mint a scoped access token for sharing a session without exposing your API key. |
|
| Replay manifest of a recorded session (works after destruction): video URL (seekable WebM), pages timeline, and per-stream JSONL event URLs (actions/console/network/errors), all with absolute epoch-ms timestamps. With |
|
| Have the hosted AI agent carry out a natural-language browser task. Creates an |
|
| Send a follow-up instruction to an agent-enabled session's conversation and wait for the turn; steering when a turn is already running. Same result shape as |
|
| Answer the agent's pending question (after |
|
| Stop the running turn ( |
|
| Agent status ( |
| — | The hosted agent's model catalog: id, provider, display name, list pricing per 1M tokens, capabilities, availability, and the default model. |
Connecting to the browser
cdp_url is deliberately token-free; pass cdp_token as an x-session-token header or a ?token= query parameter:
// Playwright
const browser = await chromium.connectOverCDP(session.cdp_url, {
headers: { "x-session-token": session.cdp_token },
});
// Puppeteer
const browser = await puppeteer.connect({
browserURL: session.cdp_url + "?token=" + session.cdp_token,
});Tokens expire after token_ttl_seconds (1 hour by default) — call get_session or mint_session_token for fresh ones. Hand viewer_url to a human to let them watch and take control of the same browser while the agent works.
Hosted agent
Sessions created with agent: true include a hosted AI agent that drives the browser from natural-language instructions. run_agent_task is the one-shot path (create, run, destroy); agent_send_message / agent_reply continue a conversation in a session you keep. One conversation per session, one running turn at a time; the agent stops with stop_reason: needs_input and a pending_question when it needs a decision, and agent_reply resumes it. Turns can take minutes — the server heartbeats the stream and the tools block until turn.end. The message POST is never retried (a retry would double-send it); a dropped stream is resumed from the last seq via the events log. Usage is billed in agent credits (a 402 error names the deny_reason).
Behavior notes
Retries: requests that fail with 429 (
Retry-After: 30for session/capacity limits on create,Retry-After: 60for per-IP/per-owner rate limits) or 503 (Retry-After: 10when the auth backend is temporarily down,Retry-After: 60when the recording backend is unavailable) are retried automatically up to 3 times, honoring theRetry-Afterheader (capped at 30s per wait) or falling back to 1s/2s/4s backoff.Timeout: each request has a 90s timeout, sized for
create_sessionwithwait: true(which can block up to ~60s server-side).URLs: the API returns
viewer_url/watch_url/cdp_urlas paths relative to the API host; this server resolves them to absolute URLs before returning them.Errors: API errors surface the server's
detailmessage plus retry hints when rate limited.Lifecycle: sessions are disposable — destroy them when done; the server also reaps sessions automatically when idle or past their maximum lifetime, so a crashed agent never leaks a browser.
Development
npm install
npm run build
node dist/index.jsAvailable Tools
6 toolscreate_sessionCreate browser sessionA
Create a new disposable cloud Chromium browser session on browserview.io. Defaults: start_url "about:blank", 1280x800 viewport. Returns the session as JSON including: viewer_url (a link a human can open in any browser to watch and take control of the live session), cdp_url + cdp_token (drive the browser programmatically: Playwright chromium.connectOverCDP(cdp_url, {headers: {'x-session-token': cdp_token}}) or Puppeteer puppeteer.connect({browserURL: cdp_url + '?token=' + cdp_token})), and token_ttl_seconds (how long the returned tokens stay valid - call get_session or mint_session_token for fresh ones). Sessions are disposable; destroy them with destroy_session when done.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Block until the browser is ready to accept CDP connections, typically ~5s (default true). Set false to return immediately. | |
| width | No | Viewport width in pixels, 320-3840 (default 1280) | |
| height | No | Viewport height in pixels, 240-2160 (default 800) | |
| record | No | Record the session for replay: video plus action/console/network/error event streams, retrievable with get_session_replay after the session ends (default false). | |
| start_url | No | URL the browser should open on start (default: "about:blank") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so thoroughly. It discloses blocking behavior (wait), defaults (start_url, viewport), recording capability, return structure, token TTL, and the disposable nature of sessions, which are all critical behavioral traits beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is structured and front-loaded with purpose, using a clear list for return values. It's slightly long but each sentence provides actionable information, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema or annotations, the description provides a complete picture: creation, defaults, return format, token lifecycle, disposal, and recording. It equips the agent with essentially all needed information to invoke and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all 5 parameters with descriptions (100% coverage), so the baseline is 3. The description adds some context about how parameters tie to the returned data (e.g., record for replay, wait for blocking) but doesn't extend parameter semantics significantly beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Create a new disposable cloud Chromium browser session on browserview.io' with a specific verb and resource. It distinguishes from sibling tools by explicitly focusing on creation and enumerating the returned artifacts (viewer_url, cdp_url, cdp_token, token_ttl_seconds).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions lifecycle guidance: 'Sessions are disposable; destroy them with destroy_session when done' and notes token refresh via 'get_session or mint_session_token'. This provides useful context on when to use related tools, though it doesn't explicitly state when not to use create_session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
destroy_sessionDestroy browser sessionA
Permanently destroy a browserview.io browser session. The cloud browser shuts down immediately, all viewer and CDP connections are dropped, and the session cannot be recovered. Call this when the browsing task is finished to free resources. If the session was created with record: true, its replay remains available afterwards via get_session_replay.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | The id of the session to destroy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It does so thoroughly by stating the session shuts down immediately, all connections are dropped, the session is unrecoverable, and the replay may still exist. This goes beyond a simple 'destroys the session' and provides critical consequence information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each with a distinct purpose: state the action, describe the consequences, and provide usage guidance with a caveat. It is front-loaded with the primary verb and resource, avoiding redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description covers the purpose, timing, effects, and an edge case (replay). It is complete in context and complements the sibling tools. No additional information is necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes the single parameter (session_id) with a meaningful description. The tool description does not add parameter details, but with 100% schema coverage, the baseline of 3 is appropriate. The description's focus on the session lifecycle is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool destroys a browserview.io browser session permanently, using the specific verb 'destroy' and naming the resource. It distinguishes itself from sibling tools like create_session, get_session, and get_session_replay by focusing on the termination action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to call this tool ('when the browsing task is finished to free resources'). It does not explicitly mention when not to use it or alternative tools, but the context is clear. It also notes the replay availability caveat for record:true sessions, which helps the agent understand post-destruction behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sessionGet browser sessionA
Fetch a single browserview.io session by id, refreshing its URLs and access tokens. Use this to get a current viewer_url (for a human to watch or control the browser) and a current cdp_url + cdp_token (pass the token as an 'x-session-token' header or '?token=' query param when connecting Playwright/Puppeteer over CDP) when previously issued tokens have expired or were never captured. Also reports session health details: restarts (how many times the in-session browser has restarted; null if unknown) and degraded (true when the browser has restarted at least once).
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | The id of the session to fetch |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that fetching refreshes URLs/access tokens (a side effect) and explains health fields: 'restarts (how many times the in-session browser has restarted; null if unknown) and degraded (true when the browser has restarted at least once).' It stops short of mentioning whether old tokens are invalidated or any auth/permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, and each subsequent sentence adds useful usage or output context. The second sentence is long with parenthetical details, but it packs necessary token connection instructions without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter schema and lack of output schema, the description covers the important return elements (viewer_url, cdp_url, cdp_token, restarts, degraded) and the primary use case. It does not fully enumerate all possible response fields or error conditions, but it is sufficient for practical invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage with 'The id of the session to fetch.' The description only repeats 'by id' and does not add extra format hints or deeper parameter-specific context, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action: 'Fetch a single browserview.io session by id' and adds the important behavior of 'refreshing its URLs and access tokens.' It distinguishes itself from siblings like list_sessions (single vs. list) and create_session/destroy_session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells when to use this tool: 'when previously issued tokens have expired or were never captured,' and explains how to use the returned cdp_token with a header or query parameter. However, it does not explicitly mention alternatives like mint_session_token or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_session_replayGet session replayA
Fetch the replay manifest of a recorded browserview.io session (one created with record: true). Works after the session is destroyed. Returns {status: 'recording'} while the session is still running, and once ready: a video URL (seekable WebM of everything that happened on screen), a pages timeline (main-frame navigations with absolute epoch-ms timestamps), and per-stream event file URLs (actions, console, network, errors) — each fetchable as newline-delimited JSON where every line has an epoch-ms 'ts'. Align an event with the video via (ts - video.start_time_ms) / 1000 seconds. URLs expire at urls_expire_at_ms; call again for fresh ones. With wait: true, polls until the replay is ready (finalization typically takes <30s after session end).
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll until the replay is ready, up to 2 minutes (default false) | |
| session_id | Yes | The id of the (possibly destroyed) session |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the transparency burden. It discloses the 'recording' status while running, the final output shape (video URL, pages timeline, event file URLs), URL expiration, timestamp alignment logic, and polling behavior with a typical finalization time. This is exemplary behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed but each sentence earns its place: purpose, prerequisite, output structure, expiration behavior, and wait behavior. It is front-loaded with the main purpose and contains no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because there is no output schema, the description must explain return values, and it does so thoroughly: recording status, video URL, pages timeline with epoch-ms timestamps, per-stream NDJSON event files, ts-to-video alignment formula, URL expiration, and wait behavior. This is complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are already described in the schema. The description adds useful behavioral nuance (e.g., 'finalization typically takes <30s after session end') but does not add significant new meaning for the parameters themselves, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: 'Fetch the replay manifest of a recorded browserview.io session.' This clearly distinguishes it from sibling tools like get_session or destroy_session, and the qualifier '(one created with record: true)' sets exact scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: it applies only to sessions created with record: true, works after destruction, and explains the wait: true polling option. It doesn't explicitly name sibling alternatives, but the purpose and context make it obvious when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sessionsList browser sessionsA
List all active browserview.io browser sessions for this account. Returns an array of session summaries (id, status, health, start_url, dimensions, created_at). This listing does not include URLs or tokens - call get_session with a session_id to get a fresh viewer_url and cdp_url/cdp_token for a specific session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses what the tool returns (array of session summaries with listed fields) and what it intentionally omits (URLs, tokens). It does not mention pagination or rate limits, but for a simple list operation, the return shape and exclusions are the key behavioral details. This adds value beyond the schema (which is empty).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, then lists the return fields, and finally includes a crucial exclusion with a pointer to a sibling tool. Every sentence earns its place with no redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no annotations, and no output schema, the description is remarkably complete. It fully explains what is returned, what is not, and where to go for missing details. For a simple list tool, this is all the context an agent needs to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is no parameter detail to add. The description instead explains the return values, which is not technically parameter semantics, but the baseline for 0-parameter tools is 4 per the rubric. The description adds useful context about what is included in the response, even though it is not about parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'List all active browerview.io browser sessions for this account.' It specifies the resource (browser sessions) and the scope (all active for the account). It distinguishes itself from sibling tools by noting this listing does not include URLs or tokens, pointing to get_session for that, which separates it from get_session and other siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides alternative usage guidance: 'call get_session with a session_id to get a fresh viewer_url and cdp_url/cdp_token for a specific session.' It also implicitly tells when to use this tool (when session summaries are needed) and when not to (when URLs or tokens are needed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mint_session_tokenMint session tokenA
Mint a new scoped access token for an existing browserview.io session. Scopes: 'view' lets a human watch the session read-only, 'control' lets a human watch and take over mouse/keyboard, 'cdp' authorizes a Chrome DevTools Protocol connection (Playwright/Puppeteer). Use this to share a session with a person or service without exposing your API key, or to replace an expiring token. Returns the token, its scope, and its TTL in seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | Yes | Token scope: 'view' (watch only), 'control' (watch + take over input), or 'cdp' (DevTools Protocol access) | |
| session_id | Yes | The id of the session to mint a token for | |
| ttl_seconds | No | Token lifetime in seconds, 1 to 604800 (7 days). Default 3600. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full responsibility. It explains scopes and return values, but omits potential behavioral caveats like whether minting a new token invalidates existing tokens or whether session ownership is required. The description is honest but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, front-loaded with purpose, then scope definitions, then use cases and return value. Every sentence earns its place with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description states returned fields (token, scope, TTL) and gives enough context for correct invocation. It misses edge cases (e.g., errors, token revocation), but the core information needed is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all three parameters. The description adds narrative context for scopes ('lets a human watch...') but largely repeats the schema's enum descriptions. No new parameter-level meaning is added beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Mint a new scoped access token') and the resource ('for an existing browserview.io session'). It is immediately distinct from sibling tools that create, destroy, or retrieve sessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage guidance is provided: 'Use this to share a session with a person or service without exposing your API key, or to replace an expiring token.' This gives clear when-to-use context, though it doesn't mention when not to use or alternative tools (none are needed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.3.0- First observed
create_session - First observed
destroy_session - First observed
get_session - First observed
get_session_replay - First observed
list_sessions - First observed
mint_session_token
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: create, list, get, destroy, mint token, and replay. The slight overlap between list_sessions and get_session is resolved by descriptions clarifying summaries vs. full details with tokens. No ambiguity exists between any tools.
All tool names follow a consistent verb_noun pattern in snake_case (create_session, destroy_session, list_sessions, get_session, mint_session_token, get_session_replay). The pluralization of list_sessions is the only minor deviation, but it is conventional and does not break the pattern.
With 6 tools, the server is well-scoped for its purpose of managing cloud browser sessions. Each tool covers a distinct aspect of the session lifecycle and adds value without bloat.
The tool set covers the full session lifecycle: create, read (list and get), delete, token management, and replay for recorded sessions. No obvious gaps exist—session creation handles recording, and replay finalization is pollable. The surface is complete for the stated domain.
Maintenance
Related MCP Connectors
Browserless MCP — wraps the Browserless headless-Chromium REST API (browserless.io)
- TabfleetOAuthcom.tabfleet
Launch, inspect, control, and share isolated cloud browsers for your agents.
MCP server to assist with JxBrowser development.
MCP server for Superserve sandboxes: create, exec, and manage Firecracker microVMs
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceMCP server for browser automation, exposing tools for tab management, navigation, CDP, action plans, and cleanup.127 npm266MIT
- AlicenseBqualityBmaintenanceAn MCP server for managing RoxyBrowser browser instances and obtaining CDP endpoints for automation. Supports workspace management, proxy configuration, and account management.26422 npm37MIT
- FlicenseBqualityDmaintenanceAn MCP server for generic browser automation using Playwright. Enables MCP clients to navigate pages, inspect elements, execute JavaScript, capture screenshots, and monitor console logs and network traffic via a headless Chromium instance.7-
- AlicenseAqualityAmaintenanceAn MCP server that runs concurrent, session-isolated Playwright browser contexts, so many agents can each drive their own browser at the same time without colliding.2311 npm3MIT