Skip to content
Agentmart
Submit a tool

Public Browser

Chrome over CDP for AI agents.

Connector by Silbercue · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 19
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/silbercue-public-browser

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Chrome over CDP for AI agents. Blind benchmark vs agent-browser: -33% tokens, -33% cost, -32% time

Use cases: browser-automation

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
11 read · 12 write · 2 delete
Secrets
None asked for
Install scripts
None found
Runs as
Node.js package

Tools by what they do 25

Read from the source code; the running server may list different tools.

Read 11 · Look things up without changing anything.

  • batch_evaluate
  • capture_image
  • configure_session
  • console_logs
  • dom_snapshot
  • network_monitor
  • observe
  • tab_status
  • view_page
  • virtual_desk
  • wait_for

Write 12 · Create, change, send or run things.

  • click
  • download
  • file_upload
  • fill_form
  • handle_dialog
  • navigate
  • press_key
  • run_plan
  • scroll
  • set_page_data
  • switch_tab
  • type

Delete 2 · Delete, drop, revoke or wipe things.

  • drag
  • evaluate

Network hosts it talks to 6

  • github.com · found in code
  • glama.ai · found in code
  • mcp-test.second-truth.com · found in code
  • raw.githubusercontent.com · found in code
  • saucedemo.com · found in code
  • the-internet.herokuapp.com · found in code

Files it touches

  • /opt/google/chrome/chrome
  • /tmp/bench-agent-browser-20260923-1029-Kv910B
  • /tmp/bench-agent-browser-20260923-1105-UCQqma
  • /tmp/bench-agent-browser-20260923-1148-gY4YdU
  • /tmp/bench-agent-browser-20260923-2150-skxKHe
  • /tmp/bench-agent-browser-20260923-2156-HaQ6SV
  • /tmp/bench-agent-browser-20260923-2203-mgJpV6
  • /tmp/bench-agent-browser-20260923-2214-a7tlSV
  • /tmp/bench-agent-browser-20260923-2220-ny9WGd
  • /tmp/bench-agent-browser-20260923-2227-6kGLyN
  • /tmp/bench-agent-browser-20260923-2234-okR85J
  • /tmp/bench-browser-use-1
  • /tmp/bench-browser-use-20260923-0913-J5w7e5
  • /tmp/bench-browser-use-20260923-0938-ClePkG
  • /tmp/bench-chrome-devtools-mcp-1
  • /tmp/bench-chrome-devtools-mcp-2
  • /tmp/bench-chrome-devtools-mcp-20260923-1056-0ESUcF
  • /tmp/bench-chrome-devtools-mcp-20260923-1139-ldAHsf
  • /tmp/bench-chrome-devtools-mcp-20260923-1215-A3X3MD
  • /tmp/bench-clitools/node_modules/@playwright/cli/skills/playwright-cli/SKILL.md
  • /tmp/bench-clitools/node_modules/agent-browser/skills/agent-browser/SKILL.md
  • /tmp/bench-playwright-cli-20260923-1036-ArkLkN
  • /tmp/bench-playwright-cli-20260923-1111-WNArIO
  • /tmp/bench-playwright-cli-20260923-1154-pYMbh1
  • /tmp/bench-playwright-mcp-1
  • /tmp/bench-playwright-mcp-2
  • /tmp/bench-playwright-mcp-20260923-1049-3n14aD
  • /tmp/bench-playwright-mcp-20260923-1130-Dl14ZW
  • /tmp/bench-playwright-mcp-20260923-1207-nF51Rp
  • /tmp/bench-public-browser-1
  • /tmp/bench-public-browser-1/cortex
  • /tmp/bench-public-browser-2
  • /tmp/bench-public-browser-2/cortex
  • /tmp/bench-public-browser-20260904-0959-tntMiS
  • /tmp/bench-public-browser-20260904-0959-tntMiS/cortex
  • /tmp/bench-public-browser-20260904-1005-NA4yES
  • /tmp/bench-public-browser-20260904-1005-NA4yES/cortex
  • /tmp/bench-public-browser-20260904-1223-FvARvq
  • /tmp/bench-public-browser-20260904-1223-FvARvq/cortex
  • /tmp/bench-public-browser-20260904-1229-ZqVAGb

Tools (25)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • batch_evaluate

    Visit several URLs in sequence and run the same JS expression on each. For controlled checks across known pages where view_page/run_plan would be too chatty; not for normal reading, clicking or form work.

  • capture_image

    Pixel-level screenshot (WebP, max 800px, <100KB). Only for canvas or chart content without DOM text, pixel-level rendering or animation checks, or when the user explicitly asks for a screenshot. Returns no refs and reads no text — that is view_page.

  • click

    Click an element by ref, CSS selector, visible text, or viewport x/y (canvas, pixel-precise targets). Dispatches real CDP mouse events. A click that opens a new tab is reported in the response. The DOM diff (NEW/REMOVED/CHANGED) arrives with the next page action, or here with wait_for_diff: true.

  • configure_session

    View or set session defaults for recurring parameters (tab, timeout, …). Without params: show current defaults and auto-promote suggestions; autoPromote: true applies them. Set profile BEFORE any browser interaction to launch Chrome with a named profile.

  • console_logs

    Read collected browser console logs; filter by level (info/warning/error/debug) and/or regex; optionally clear the buffer after reading.

  • dom_snapshot

    Structured layout data: bounding boxes, computed styles, paint order, colors; refs match view_page. Only for spatial questions view_page cannot answer (is A above B? what color?).

  • download

    Wait for pending downloads or list this session's downloaded files. Downloads start by themselves when you click a download link or open a file URL (PDF, CSV, …); this tool never triggers them. download() waits for a pending download to finish; download({ action: 'list' }) returns at once.

  • drag

    Drag a source onto a target: HTML5 drag-and-drop (draggable lists, SortableJS, React DnD) and mouse drags (sliders, canvas, resize handles). Scrolls the source into view; says when no page reaction was detected. Source: from_ref/from_selector or from_x+from_y; target: to_ref/to_selector or to_x+to_y.

  • evaluate

    Run JavaScript in the page. Good uses: computation, style mutations (.style.X = ..., classList), shadow-root traversal, in-page fetch(), app-specific side effects no dedicated tool covers. Scope is shared between calls; top-level const/let/class are wrapped in an IIFE. If/else blocks may return undefined — use a ternary or an explicit return.

  • file_upload

    Upload file(s) to an <input type='file'> identified by ref or CSS selector; file paths must be absolute.

  • fill_form

    Fill a whole form in one call: text inputs, <select> (by value or visible label), checkboxes (boolean) and radio buttons. One round-trip; partial errors do not abort and each field reports its own status. On per-field errors call view_page and retry the failing fields.

  • handle_dialog

    Configure handling of alerts, confirms and prompts. Set it BEFORE triggering the action that opens the dialog. Uses CDP Page.javascriptDialogOpening, so it works even while the dialog blocks all JS.

  • navigate

    Navigate the active tab to a URL, or action 'back' / 'reload' (all refs become stale after reload). Waits for settle. Overwrites the user's active tab — check virtual_desk first; the first call per session is redirected to virtual_desk.

  • network_monitor

    Capture network requests via CDP, including those the page issues itself. Workflow: start → trigger the action → get(pattern: 'api').

  • observe

    Watch an element for changes instead of polling with MutationObserver/setInterval code in evaluate. collect: record text/attribute changes for 'duration' ms. until: wait for a condition, then optionally click at once (then_click). click_first fires the triggering action after the observer is armed, so nothing is missed.

Show 10 more tools
  • press_key

    Press a key or shortcut (Enter, Escape, Tab, arrows, Ctrl+K). Optionally focus an element first via ref or selector.

  • run_plan

    Batch the next 2+ known actions (click, type, scroll, view_page chains) here instead of N separate calls: a sequence of tool steps, executed server-side in one call. Variables via vars and saveAs ($name), conditions (if), suspend/resume to ask the agent mid-plan, and errorStrategy abort | continue | capture_image.

  • scroll

    Scroll the page, a container, or an element into view. Reports the position and content growth (scrollHeight delta — detects lazy-loaded content) and handles settle timing. Use container_ref/container_selector plus direction to scroll inside a container.

  • set_page_data

    Write a payload larger than 1 MB into window.__pb_data[key], chunked past the CDP 1 MB message limit. Source: inline (`data`) or file (absolute `path`, read as binary). The page reads window.__pb_data[key] (string or ArrayBuffer per encoding) and window.__pb_data[key + '__complete'] === true. Never write one key from parallel calls — they race. Under ~200 KB use evaluate; for a real <input type=file> use file_upload.

  • switch_tab

    Open a new tab, switch to a tab by ID (from virtual_desk), or close one. Prefer 'open' over navigate when the user's active tab must stay untouched. Refs from the previous tab are invalid afterwards — call view_page before acting.

  • tab_status

    Active tab's cached URL, title, ready state and errors — a cheap mid-workflow sanity check ('did my click navigate?'). Not for tab discovery or page content.

  • type

    Type text into an input identified by ref or CSS selector. For 2+ fields use fill_form; for special keys (Enter, Escape, Tab, arrows) or shortcuts (Ctrl+K) use press_key.

  • view_page

    See what is on the page: text plus stable element refs for click/type/fill_form. Default filter 'interactive' lists actionable elements; for paragraphs or table cells call view_page(ref, filter: 'all'). Collapsed containers show as [eXX role, N items] — expand with view_page(ref: 'eXX', filter: 'all').

  • virtual_desk

    List all open tabs with IDs, URLs and state. Call it first in every session, after a reconnect, or when unsure; reuse a listed tab ID instead of opening duplicates. Cheap, call liberally.

  • wait_for

    Wait until a condition holds: element visible, page text present, URL match, network idle, or a JS expression true. Prefer condition 'text' over a JS expression for 'has the page said X yet'. assert: true checks once and fails instead of waiting.

Compare and alternatives

    Featured in

    Signals

    Stars
    19
    Forks
    1
    Open issues
    2
    Contributors
    1
    Last commit
    Oct 22, 2026 (6 days ago)
    Last release
    Sep 24, 2026 (1 month ago)

    From GitHub (fetched Oct 24, 2026).

    Details

    Registry name
    io.github.Silbercue/public-browser
    Version
    3.0.0
    Auth
    No auth
    Packages
    npm public-browser
    License
    MIT
    First seen
    Oct 24, 2026
    Last checked
    Oct 24, 2026

    More from Silbercue

    Cite this page

    Public Browser MCP server. Agent Mart. https://agentmart.dev/connectors/silbercue-public-browser (last updated 2026-10-24)