Skip to main content
Glama
browserview

@browserview/mcp

Official
by browserview

@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_KEY environment variable. Keys are minted in the browserview.io console and look like bv_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/mcp

Claude 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/mcp

Tools

Tool

Arguments

Description

create_session

start_url?, width?, height?, wait?, record?, agent?

Create a browser session. Server defaults: start_url about:blank, 1280×800 viewport, wait true (blocks until the browser accepts CDP, typically ~5s), record false (set true to capture a session replay). Returns the session as JSON with an absolute viewer_url (a human can open it to watch/control), watch_url (view-only), and cdp_url + cdp_token (for Playwright/Puppeteer connectOverCDP). agent: true (or {model, effort, max_steps, allowed_domains}) enables the hosted agent for the session.

list_sessions

List all sessions (no URLs/tokens; use get_session for those).

get_session

session_id

Fetch one session with freshly issued URLs and tokens, plus health details: restarts (int, or null if unknown) and degraded (true once the in-session browser has restarted).

destroy_session

session_id

Permanently destroy a session.

mint_session_token

session_id, scope (view | control | cdp | agent), ttl_seconds?

Mint a scoped access token for sharing a session without exposing your API key. ttl_seconds must be 1–604800 (7 days); default 3600.

get_session_replay

session_id, wait?

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 wait: true, polls up to 2 minutes while the recording finalizes; a live session created without record: true fails immediately instead of polling.

run_agent_task

task, session_id?, start_url?, keep_session?, model?, effort?, max_steps?, budget_credits?, allowed_domains?

Have the hosted AI agent carry out a natural-language browser task. Creates an agent: true session when session_id is omitted (destroyed afterwards unless keep_session is true or the agent asked a question). Blocks until the turn ends; returns answer, stop_reason, steps, cost_usd, usage, session_id, viewer_url, and pending_question when the agent needs input.

agent_send_message

session_id, content, model?, effort?, max_steps?, budget_credits?, allowed_domains?

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 run_agent_task.

agent_reply

session_id, content

Answer the agent's pending question (after stop_reason: needs_input); starts and waits for the next turn. 409 when nothing is pending.

agent_interrupt

session_id

Stop the running turn (stop_reason: interrupted). Returns {ok, state}.

get_agent_conversation

session_id, after?, turn?, include_deltas?

Agent status (disabled | idle | running | needs_input), model, usage totals, pending question, and the event log condensed into a transcript (user messages, steps, questions, turn results). after pages by seq; last_seq is where to resume.

list_agent_models

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: 30 for session/capacity limits on create, Retry-After: 60 for per-IP/per-owner rate limits) or 503 (Retry-After: 10 when the auth backend is temporarily down, Retry-After: 60 when the recording backend is unavailable) are retried automatically up to 3 times, honoring the Retry-After header (capped at 30s per wait) or falling back to 1s/2s/4s backoff.

  • Timeout: each request has a 90s timeout, sized for create_session with wait: true (which can block up to ~60s server-side).

  • URLs: the API returns viewer_url/watch_url/cdp_url as paths relative to the API host; this server resolves them to absolute URLs before returning them.

  • Errors: API errors surface the server's detail message 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.js

Available Tools

6 tools
create_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoBlock until the browser is ready to accept CDP connections, typically ~5s (default true). Set false to return immediately.
widthNoViewport width in pixels, 320-3840 (default 1280)
heightNoViewport height in pixels, 240-2160 (default 800)
recordNoRecord the session for replay: video plus action/console/network/error event streams, retrievable with get_session_replay after the session ends (default false).
start_urlNoURL the browser should open on start (default: "about:blank")

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesThe id of the session to destroy

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesThe id of the session to fetch

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoPoll until the replay is ready, up to 2 minutes (default false)
session_idYesThe id of the (possibly destroyed) session

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYesToken scope: 'view' (watch only), 'control' (watch + take over input), or 'cdp' (DevTools Protocol access)
session_idYesThe id of the session to mint a token for
ttl_secondsNoToken lifetime in seconds, 1 to 604800 (7 days). Default 3600.

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 6 tool updatesv0.3.0
    • First observedcreate_session
    • First observeddestroy_session
    • First observedget_session
    • First observedget_session_replay
    • First observedlist_sessions
    • First observedmint_session_token

TDQS

A4.4/5.0

Scored across 6 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness5/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers