BrowserMesh
NPM · BROWSERMESH · SCANNED SEP 20
Isolated multi-session Chromium runtime for external MCP clients over stdio.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 32 of 99 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency74
- Repository check failed: the declared repository URL redirects; it must resolve directly. See how to fix → View diagnostics → Fail
- Cryptographically verified build provenance (signed, bound to scrollDynasty/multi-agent-browser-mcp). View diagnostics → Pass
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 12 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability82
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 3047 tokens (~84/item across 36 items; 35 tools + 1 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management90
- Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 36 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the BrowserMesh MCP server?
BrowserMesh runs locally as an npm package, launched with npx -y browsermesh. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · browsermesh
claude mcp add scrolldynasty-browsermesh -- npx -y browsermesh
{
"mcpServers": {
"scrolldynasty-browsermesh": {
"command": "npx",
"args": [
"-y",
"browsermesh"
]
}
}
} {
"servers": {
"scrolldynasty-browsermesh": {
"command": "npx",
"args": [
"-y",
"browsermesh"
]
}
}
} codex mcp add scrolldynasty-browsermesh -- npx -y browsermesh
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"scrolldynasty-browsermesh": {
"type": "local",
"command": [
"npx",
"-y",
"browsermesh"
],
"enabled": true
}
}
} openclaw mcp add scrolldynasty-browsermesh --command npx --arg -y --arg browsermesh
mcp_servers:
scrolldynasty-browsermesh:
command: "npx"
args: ["-y", "browsermesh"] {
"McpServers": {
"scrolldynasty-browsermesh": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"browsermesh"
]
}
}
} assistant mcp add scrolldynasty-browsermesh -t stdio -c npx -a -y browsermesh
{
"mcpServers": {
"scrolldynasty-browsermesh": {
"command": "npx",
"args": [
"-y",
"browsermesh"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Sept 26 −3
- Stability: pass → 0.80 functional
- 16 Sept 26 +1
- Stability: 0.97 → pass security
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 10 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.
- 8 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.
- 6 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed npm/browsermesh@0.2.1
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | scrollDynasty/multi-agent-browser-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/scrollDynasty/multi-agent-browser-mcp/.github/workflows/publish.yml@refs/tags/v0.2.1 |
| Rekor log index | 2498006008 |
| Predicate type | https://slsa.dev/provenance/v1 |
| Subject digest | sha512:95185f1612f89b8a83e8712186ae553740ba577bf5543f7e11a9cb929b01ce26fecee4a3eca0a0d1de89908427d6011329222c9ae5042111c7852912c |
Background: How many MCP packages publish verified provenance →
Dependencies 99 packages
| Packages resolved | 99 |
|---|---|
| Stale | 32 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
browser_action_and_wait Perform browser action and wait ~156
Atomically register a navigation, response, popup, or dialog waiter first, then click or press on the explicitly addressed page under one shared deadline; the action locator may use a bounded semantic iframe chain. Popup pages receive a new BrowserMesh pageId in the same session with isDefault=false and are closed if the page limit is exceeded. Dialogs must be handled atomically because they cannot be inspected later; specify the expected type and accept/dismiss action. Returned dialog text is bounded. Use this instead of parallel same-session calls when an action triggers the event.
| Name | Type | Req | Description |
|---|---|---|---|
| action | – | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| wait | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| event | – | yes | – |
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
No examples provided.
browser_back Navigate browser page back ~52
Navigate backward in the history of one explicitly addressed page without affecting pages or sessions used by other roles.
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | yes | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
| url | string | yes | – |
No examples provided.
browser_check Check page control ~82
Ensure a checkbox or radio located semantically or by CSS is checked on one explicitly addressed page. The operation is idempotent, bounded by timeoutMs, and isolated to the supplied session.
| Name | Type | Req | Description |
|---|---|---|---|
| locator | – | – | – |
| pageId | string | yes | – |
| ref | string | – | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| completed | boolean | yes | – |
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
No examples provided.
browser_click Click page element ~125
Click exactly one semantic/CSS locator or short-lived snapshot ref on one explicitly addressed page. A locator may select the top document or a bounded outer-to-inner semantic iframe chain. Role locator names match exactly by default and every iframe-chain selector must resolve exactly; ambiguous locators return LOCATOR_AMBIGUOUS and stale or cross-page refs return STALE_ELEMENT_REFERENCE. Prefer semantic locators for durable workflows.
| Name | Type | Req | Description |
|---|---|---|---|
| locator | – | – | – |
| pageId | string | yes | – |
| ref | string | – | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| completed | boolean | yes | – |
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
No examples provided.
browser_double_click Double-click page element ~93
Double-click a semantic or CSS locator on one explicitly addressed page. Use this only when the application assigns distinct double-click behavior; the action is serialized with all browser work in that session and an ambiguous locator returns LOCATOR_AMBIGUOUS.
| Name | Type | Req | Description |
|---|---|---|---|
| locator | – | – | – |
| pageId | string | yes | – |
| ref | string | – | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| completed | boolean | yes | – |
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
No examples provided.
browser_drag_and_drop Drag and drop page element ~80
Drag one semantic or CSS-located element onto another on one explicitly addressed page. Source and target are resolved in the same page and session, with bounded timeout and strict ambiguity errors.
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | yes | – |
| sessionId | string | yes | – |
| source | – | yes | – |
| target | – | yes | – |
| timeoutMs | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| completed | boolean | yes | – |
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
No examples provided.
browser_fill Fill page field ~78
Fill a form field located on one explicitly addressed page. The value is entered only in that session; use separate sessions for different identities.
| Name | Type | Req | Description |
|---|---|---|---|
| locator | – | – | – |
| pageId | string | yes | – |
| ref | string | – | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| value | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| completed | boolean | yes | – |
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
No examples provided.
browser_focus Focus page element ~87
Focus a semantic or CSS locator on one explicitly addressed page without entering a value. Use this for focus-driven UI state or before a separate key action; the locator remains scoped to the supplied sessionId and pageId.
| Name | Type | Req | Description |
|---|---|---|---|
| locator | – | – | – |
| pageId | string | yes | – |
| ref | string | – | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| completed | boolean | yes | – |
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
No examples provided.
browser_forward Navigate browser page forward ~48
Navigate forward in the history of one explicitly addressed page without affecting other isolated sessions.
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | yes | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
| url | string | yes | – |
No examples provided.
browser_get_title Get browser page title ~47
Read the title of one explicitly addressed page in its owning isolated session.
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | yes | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
| title | string | yes | – |
No examples provided.
browser_get_url Get browser page URL ~59
Read the current URL of one explicitly addressed page. Use the IDs returned for the intended session; there is no global current page.
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | yes | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
| url | string | yes | – |
No examples provided.
browser_hover Hover over page element ~81
Move the pointer over a semantic or CSS locator on one explicitly addressed page. Use this to reveal hover-driven controls or state before inspecting or interacting; BrowserMesh preserves same-session accepted order.
| Name | Type | Req | Description |
|---|---|---|---|
| locator | – | – | – |
| pageId | string | yes | – |
| ref | string | – | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| completed | boolean | yes | – |
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
No examples provided.
browser_navigate Navigate browser page ~76
Navigate one explicitly addressed page to an absolute HTTP(S) URL. Keep using the sessionId/pageId pair for the intended account or role; navigation never changes a global active page.
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | yes | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| url | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
| url | string | yes | – |
No examples provided.
browser_observe Read page observations ~239
Read bounded observations recorded for one explicitly addressed page. Choose source: 'console' for console events, 'pageError' for uncaught page errors, 'network' for correlated request/response metadata, or 'requestFailed' for transport-level failures. HTTP error responses such as 500 are 'network' response events, not 'requestFailed'. Console and page-error results are metadata-only unless includeText=true, which the network sources reject because they carry no text; exposed text is best-effort redacted and bounded, and console argument objects and raw stacks are never captured. Network URLs remove credentials and fragments and redact sensitive query values; headers, cookies, bodies, storage, WebSockets, service-worker traffic, data URLs, and blob URLs are never captured. Use sinceEventId as a non-destructive checkpoint and inspect gap and droppedCount before treating the evidence as complete.
| Name | Type | Req | Description |
|---|---|---|---|
| includeText | boolean | – | – |
| limit | integer | – | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
| sinceEventId | string | – | – |
| source | string | yes | – |
| timeoutMs | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| droppedCount | – | yes | – |
| events | array | yes | – |
| gap | boolean | yes | – |
| nextCursor | string|null | yes | – |
| operationId | – | yes | – |
| pageId | – | yes | – |
| sessionId | – | yes | – |
| source | string | yes | – |
No examples provided.
browser_page_close Close browser page ~49
Close one explicitly addressed page in its owning session. Supply both IDs because BrowserMesh has no global current session or page.
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | yes | – |
| sessionId | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| closed | boolean | yes | – |
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
No examples provided.
browser_page_create Create browser page ~55
Create an additional page inside one explicitly addressed session. Use it for another tab that must share that session's cookies and storage; use a separate session instead when identity or authentication must be isolated.
| Name | Type | Req | Description |
|---|---|---|---|
| sessionId | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| operationId | string | yes | – |
| page | object | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
No examples provided.
browser_page_list List browser pages ~49
List pages belonging only to the addressed session. Session creation already returns the initial pageId; use this tool to rediscover or inspect all pages in that session.
| Name | Type | Req | Description |
|---|---|---|---|
| sessionId | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| operationId | string | yes | – |
| pages | array | yes | – |
| sessionId | string | yes | – |
No examples provided.
browser_press Press key on page element ~98
Press a key on a locator within one explicitly addressed page, preserving deterministic ordering with other operations in that session. A missing or unsuitable element returns OPERATION_TIMEOUT within timeoutMs (10 seconds by default) without closing MCP or browser sessions.
| Name | Type | Req | Description |
|---|---|---|---|
| key | string | yes | – |
| locator | – | – | – |
| pageId | string | yes | – |
| ref | string | – | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| completed | boolean | yes | – |
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
No examples provided.
browser_reload Reload browser page ~46
Reload one explicitly addressed page in its existing isolated session and authentication state.
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | yes | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
| url | string | yes | – |
No examples provided.
browser_runtime_info Inspect BrowserMesh runtime ~58
Report bounded, read-only BrowserMesh version, launch state, effective configuration, and session counts without launching Chromium. Use this to diagnose setup and capacity safely; it never returns paths, launch arguments, environment values, browser state, or raw errors.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| activeSessions | integer | yes | – |
| browserLaunchState | string | yes | – |
| browserProduct | string | yes | – |
| browserVersion | – | yes | – |
| defaultTimeoutMs | – | yes | – |
| failedSessions | integer | yes | – |
| headless | boolean | yes | – |
| maxPagesPerSession | – | yes | – |
| maxSessions | – | yes | – |
| nodeVersion | string | yes | – |
| persistenceEnabled | boolean | yes | – |
| playwrightVersion | string | yes | – |
| resourceLimits | object | yes | – |
| serverVersion | string | yes | – |
No examples provided.
browser_screenshot Capture page screenshot ~106
Capture a bounded in-memory PNG screenshot of one explicitly addressed page, either as the viewport/full page or one semantic element optionally reached through a bounded iframe chain. Full-page and element capture use an immutable measured CSS-pixel clip plus encoded-byte validation. BrowserMesh returns image content and does not write to a caller-controlled path or inspect another session.
| Name | Type | Req | Description |
|---|---|---|---|
| capture | – | – | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| bytes | – | yes | – |
| height | – | yes | – |
| mimeType | string | yes | – |
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
| width | – | yes | – |
No examples provided.
browser_scroll Scroll browser page ~87
Scroll an explicitly addressed page by bounded integer pixel deltas. Use deltaX for horizontal and deltaY for vertical movement; this typed operation exposes no arbitrary JavaScript and remains serialized within the session.
| Name | Type | Req | Description |
|---|---|---|---|
| deltaX | integer | yes | – |
| deltaY | integer | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| completed | boolean | yes | – |
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
No examples provided.
browser_scroll_into_view Scroll page element into view ~85
Scroll one semantic or CSS locator into the viewport of an explicitly addressed page. Use this before inspection or interaction when an off-screen target must become visible; it never accepts arbitrary JavaScript or coordinates.
| Name | Type | Req | Description |
|---|---|---|---|
| locator | – | – | – |
| pageId | string | yes | – |
| ref | string | – | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| completed | boolean | yes | – |
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
No examples provided.
browser_select_option Select page option ~96
Select an option on one explicitly addressed page using a semantic or CSS locator. A missing or unsuitable select returns OPERATION_TIMEOUT within timeoutMs (10 seconds by default), and the supplied session plus all other sessions remain usable.
| Name | Type | Req | Description |
|---|---|---|---|
| locator | – | – | – |
| pageId | string | yes | – |
| ref | string | – | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| value | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| completed | boolean | yes | – |
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
No examples provided.
browser_session_close Close browser session ~44
Close one explicitly addressed session and release all of its pages and isolated browser context. Close each role/account session when its workflow is complete.
| Name | Type | Req | Description |
|---|---|---|---|
| sessionId | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| operationId | string | yes | – |
| session | object | yes | – |
| sessionId | string | yes | – |
No examples provided.
browser_session_create Create isolated browser session ~188
Create a new isolated browser session with its own cookies, storage, pages, and optional validated contextSettings (viewport, scale, locale, timezone, color scheme, reduced motion, user agent, geolocation, and explicit origin-scoped geolocation grants). Only the geolocation permission is supported; each grant must name one absolute HTTP(S) origin, never a wildcard. Create a separate session whenever a task involves a different user, account, role, authentication state, device profile, accessibility preference, permission profile, or independent parallel workflow; never reuse one session for identities or context settings that must remain isolated. The response directly returns both sessionId and the deterministic initial pageId plus normalized effective settings. Pass stateId only to restore previously saved browser state.
| Name | Type | Req | Description |
|---|---|---|---|
| contextSettings | object | – | – |
| metadata | object | – | – |
| name | string | – | – |
| stateId | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| initialPage | object | yes | – |
| operationId | string | yes | – |
| session | object | yes | – |
No examples provided.
browser_session_get Get browser session ~39
Inspect one explicitly addressed browser session. Session names and metadata are workflow labels, not internal AI agents or owners.
| Name | Type | Req | Description |
|---|---|---|---|
| sessionId | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| operationId | string | yes | – |
| session | object | yes | – |
| sessionId | string | yes | – |
No examples provided.
browser_session_list List browser sessions ~48
List every browser session with its explicit sessionId, lifecycle status, name, and neutral workflow metadata. Use this to recover the correct session for each role/account; there is no global active session.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| operationId | string | yes | – |
| sessions | array | yes | – |
No examples provided.
browser_snapshot Get accessibility snapshot ~256
Inspect a bounded accessibility-oriented snapshot of one explicitly addressed page, optionally scoped by a locator including a bounded semantic iframe chain. BrowserMesh rejects oversized DOM sources before native ARIA serialization. Use interactiveOnly to retain interactive nodes with ancestor context and maxChildren to limit every node after filtering. A nextCursor continues the immutable captured serialization without rereading a changed DOM; cursors are page-scoped, expire after 30 seconds, and become stale on navigation or close. Semantic scope, depth, boxes, character/byte bounds, omissions, and truncation are explicit; partial content is aria-yaml-fragment. Non-empty password-input values are redacted before content crosses MCP. Optional 30-second element refs are separate short-lived action conveniences.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | – |
| includeBoundingBoxes | boolean | – | – |
| includeRefs | boolean | – | – |
| interactiveOnly | boolean | – | – |
| maxBytes | integer | – | – |
| maxChars | integer | – | – |
| maxChildren | integer | – | – |
| maxDepth | integer | – | – |
| maxRefs | integer | – | – |
| pageId | string | yes | – |
| scope | – | – | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| appliedBounds | object | yes | – |
| contentFormat | string | yes | – |
| omissions | object | yes | – |
| operationId | string | yes | – |
| pageId | string | yes | – |
| pagination | object | yes | – |
| partial | boolean | yes | – |
| refs | array | yes | – |
| sessionId | string | yes | – |
| snapshot | string | yes | – |
| truncation | object | yes | – |
No examples provided.
browser_state_list List saved browser states ~33
List logical saved-state IDs available for optional restoration when creating a new isolated session; state contents and secrets are not returned.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| operationId | string | yes | – |
| states | array | yes | – |
No examples provided.
browser_state_remove Remove saved browser state ~46
Delete persisted browser state by its safe logical stateId when it should no longer be restorable. This does not close or alter currently live sessions.
| Name | Type | Req | Description |
|---|---|---|---|
| stateId | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| operationId | string | yes | – |
| removed | boolean | yes | – |
| stateId | string | yes | – |
No examples provided.
browser_state_save Save browser state ~57
Save cookies and supported storage from one explicitly addressed session under a safe logical stateId. Use this only when a later new isolated session should restore that authentication state.
| Name | Type | Req | Description |
|---|---|---|---|
| sessionId | string | yes | – |
| stateId | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| operationId | string | yes | – |
| sessionId | string | yes | – |
| state | object | yes | – |
No examples provided.
browser_uncheck Uncheck page control ~81
Ensure a checkbox located semantically or by CSS is unchecked on one explicitly addressed page. The operation is idempotent, bounded by timeoutMs, and isolated to the supplied session.
| Name | Type | Req | Description |
|---|---|---|---|
| locator | – | – | – |
| pageId | string | yes | – |
| ref | string | – | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| completed | boolean | yes | – |
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
No examples provided.
browser_visible_text Get visible page text ~80
Read visible text from a semantic or CSS locator on one explicitly addressed page. A locator may select the top document or a bounded outer-to-inner semantic iframe chain; the lookup remains confined to that page and session.
| Name | Type | Req | Description |
|---|---|---|---|
| locator | – | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| operationId | string | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
| text | string | yes | – |
| truncation | object | yes | – |
No examples provided.
browser_wait Wait for browser condition ~123
Wait for one deterministic passive condition on an explicitly addressed page: an exact/safe-glob URL, domcontentloaded/load state, locator state (optionally through a bounded semantic iframe chain), or case-sensitive top-document text presence/absence. The wait occupies that session queue, is bounded by timeoutMs, and must not depend on a later action queued in the same session; use browser_action_and_wait for action-triggered events.
| Name | Type | Req | Description |
|---|---|---|---|
| condition | – | yes | – |
| pageId | string | yes | – |
| sessionId | string | yes | – |
| timeoutMs | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| operationId | string | yes | – |
| pageId | string | yes | – |
| satisfied | boolean | yes | – |
| sessionId | string | yes | – |
No examples provided.
What is the BrowserMesh MCP server?
BrowserMesh is an MCP server listed in the public MCP registry as io.github.scrollDynasty/browsermesh. Isolated multi-session Chromium runtime for external MCP clients over stdio. This page covers its npm package (browsermesh).
Is the BrowserMesh MCP server safe to use?
BrowserMesh scores 87 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the BrowserMesh MCP server expose?
BrowserMesh exposes 35 tools: browser_runtime_info, browser_session_create, browser_session_list, browser_session_get, browser_session_close, and 30 more. Their descriptions and schemas cost roughly 3,027 tokens of context every time the server is loaded.
Is the BrowserMesh MCP server still maintained?
BrowserMesh is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the BrowserMesh MCP server under?
BrowserMesh declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.