Control a real Chrome browser to complete any task: fill forms, extract data, book flights.
Cdpm is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Lets many Claude Code sessions and subagents share numbered, logged-in Chrome instances over CDP
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user cdpm-mcp '--' npx -y cdpm-mcp
# 2 — ask your agent for something these tools do
# browser_status, browser_launch, browser_close and 33 more
Cdpm costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. This one runs on your machine: your client starts Cdpm as a process under your own user, with your files and your network, so the tool surface below is what it can do to your computer rather than to a server somewhere else. Its scan result is on the Security tab — read the surface before you approve it.
This is a public server: you run it yourself and this marketplace is not in the path. You need Node.js — the current LTS (24) is the safe choice; npx comes with it. Claude Code registers it in one command; --scope user makes it available in every project. The '--' is in quotes so that PowerShell passes it on.
claude mcp add --scope user cdpm-mcp '--' npx -y cdpm-mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry your client uses to start the process locally. A local server runs with your file system and your network, which is why it is priced without metering.
36 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Read from its source code. A server that builds its tool list when it starts can list more tools than this.
Shows running Chrome slots (1-30) with their tabs, opener, last action and one-line summary. Pass slot for just that slot.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | no | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
Starts slot Chrome. Call only when the user explicitly asks (other tools never start a closed slot).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | no | One slot to start (1-30). Omit if the user gave no number → lowest free slot |
| slots | array | no | Slot numbers to start at once (e.g. [1,2,3]), lowest first |
| count | integer | no | When the user gives only a count ("start 3"): starts that many free slots, lowest first |
| url | string | no | Same start URL for every launched slot (e.g. "https://mail.google.com"). For per-slot or partial URLs use urls instead. Pass it when the start page is known so subagents need no separate navigation |
| urls | array | no | Per-slot start URLs, paired in slots order (count: launch order). "" = blank tab. E.g. slots [1,2], urls ["https://www.wehago.com", "https://test.igel.kr"] → 1 opens wehago, 2 opens test.igel.kr |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| headless | boolean | no | false = windowed (visible), true = headless (hidden). true only if the user says "headless/hidden/no window", false for "visible/headful". If unstated, omit and ask first (no guessing). Applies only o |
| proxy | string | no | Only when the user asks for a proxy (never otherwise). As given: "1.2.3.4:8080", "http://user:pass@host:port", "socks5://host:port", "host:port:user:pass", etc. Applies to all launched slots, first la |
| proxies | array | no | Per-slot proxies, paired in slots order (count: launch order) |
Closes slot Chrome cleanly (session and cookies saved). The profile (logins) is kept. Reports if another agent used it recently.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
Slot tab list: number, ID, title, URL, opener, last action, per-tab summary (updated only by actions with summary). "·front" marks the tab currently in front in its window (one per window).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
Opens a new tab in the slot and returns its ID. When agents share a slot, open your own tab and work only by its ID to avoid mixing.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| url | string | no | URL to open (omit for blank tab) |
| summary | string | no | One-line note of what you are doing (e.g. "comparing laptop prices"). Shown in browser_status (not the status line). Omit to keep the previous one. |
Closes a tab. tab is required.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | yes | Tab to close: number or ID ("t7") |
Brings a tab to the front of its Chrome window. Changes what the user sees, so use only when the user wants it. (Background tabs can be read, operated and captured; no need to bring them forward to work.)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | yes | Tab to bring forward: number or ID |
Reads the tab as accessibility-tree text. Clickable/typable elements get refs like [e12].
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| page | integer | no | Page number for long output (default 1) |
| find | string | no | Only lines containing this text, with parent context (ignores case and spaces). If unsure of site language, use | for alternatives, e.g. "제목|subject" |
| interactive | boolean | no | Only actionable elements (lines with refs): inputs, buttons, links. Use first to find inputs on big pages like Gmail |
| ref | string | no | Only this ref element and its subtree |
Reads the page body text (main/article if present). With ref, only that element's text. Shorter and easier than a snapshot for articles/documents. Use page for long text.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| ref | string | no | Only this element's text |
| page | integer | no | Page number for long output (default 1) |
Captures the visible area of the tab as PNG, even background tabs (without switching). Never changes window size or viewport, so full-page capture is unsupported (scroll then capture, or use snapshot/text).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
Navigates the tab to a URL and waits for the body to load.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| url | string | yes | URL to go to |
| read | string | no | Append the page after the action (no separate read needed): text=body text, snapshot=snapshot page 1 (with refs), changes=only lines added/removed since your last snapshot (shortest; full page if the |
| summary | string | no | One-line note of what you are doing (e.g. "comparing laptop prices"). Shown in browser_status (not the status line). Omit to keep the previous one. |
Go back.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| read | string | no | Append the page after the action (no separate read needed): text=body text, snapshot=snapshot page 1 (with refs), changes=only lines added/removed since your last snapshot (shortest; full page if the |
| summary | string | no | One-line note of what you are doing (e.g. "comparing laptop prices"). Shown in browser_status (not the status line). Omit to keep the previous one. |
Go forward (after going back).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| read | string | no | Append the page after the action (no separate read needed): text=body text, snapshot=snapshot page 1 (with refs), changes=only lines added/removed since your last snapshot (shortest; full page if the |
| summary | string | no | One-line note of what you are doing (e.g. "comparing laptop prices"). Shown in browser_status (not the status line). Omit to keep the previous one. |
Reloads the page (same as Chrome reload). ignore_cache=true bypasses the cache. Careful: unsaved user input on the page is lost.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| ignore_cache | boolean | no | Bypass cache (hard reload) |
| read | string | no | Append the page after the action (no separate read needed): text=body text, snapshot=snapshot page 1 (with refs), changes=only lines added/removed since your last snapshot (shortest; full page if the |
| summary | string | no | One-line note of what you are doing (e.g. "comparing laptop prices"). Shown in browser_status (not the status line). Omit to keep the previous one. |
Accepts (accept: true) or dismisses (accept: false) an open dialog (alert/confirm/prompt/beforeunload). The tab is frozen while a dialog is open.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| accept | boolean | yes | true = OK, false = cancel |
| text | string | no | Text for a prompt dialog (used only when accepting) |
| read | string | no | Append the page after the action (no separate read needed): text=body text, snapshot=snapshot page 1 (with refs), changes=only lines added/removed since your last snapshot (shortest; full page if the |
| summary | string | no | One-line note of what you are doing (e.g. "comparing laptop prices"). Shown in browser_status (not the status line). Omit to keep the previous one. |
Lists or answers Chrome permission bubbles ("site wants to: access other apps and services on this device / show notifications / know your location…").
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| button | string | no | Exact button name to press, as listed in the header or by calling without button |
| site | string | no | Only when several bubbles are open: part of the bubble title (e.g. the site host) to pick one |
Moves the real mouse over a ref element (no click). For hover menus and tooltips. Use read=changes to see the opened menu.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| ref | string | yes | ref of the element to hover |
| read | string | no | Append the page after the action (no separate read needed): text=body text, snapshot=snapshot page 1 (with refs), changes=only lines added/removed since your last snapshot (shortest; full page if the |
| summary | string | no | One-line note of what you are doing (e.g. "comparing laptop prices"). Shown in browser_status (not the status line). Omit to keep the previous one. |
Drags with the real mouse (press → move in steps → release): drag and drop, sliders, reordering, drag CAPTCHAs, etc.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| from | string | yes | ref of the element to drag (including ones marked draggable) |
| to | string | no | ref of the drop target |
| to_text | string | no | Text shown at the drop spot (when it has no ref, e.g. "Drop here") |
| dx | number | no | Horizontal pixels (right +) |
| dy | number | no | Vertical pixels (down +) |
| read | string | no | Append the page after the action (no separate read needed): text=body text, snapshot=snapshot page 1 (with refs), changes=only lines added/removed since your last snapshot (shortest; full page if the |
| summary | string | no | One-line note of what you are doing (e.g. "comparing laptop prices"). Shown in browser_status (not the status line). Omit to keep the previous one. |
Waits for the most recently started download to finish and returns the saved file path (user's Chrome download folder). Call after clicking the download button. Returns as soon as it finishes.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| timeout | number | no | Max wait in seconds (default 120) |
Saves the page as a PDF (receipts, articles, etc.). Without path, saves to the user's Downloads folder named after the page title. Doesn't change the screen or window.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| path | string | no | File path to save (e.g. C:\Users\me\Desktop\receipt.pdf) |
Clicks a ref element with real mouse events. If another element covers it, doesn't click and reports it. Waits for loading if the click navigates; reports new tabs.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| ref | string | yes | ref from browser_snapshot (e.g. "e12") |
| double | boolean | no | Double-click |
| read | string | no | Append the page after the action (no separate read needed): text=body text, snapshot=snapshot page 1 (with refs), changes=only lines added/removed since your last snapshot (shortest; full page if the |
| summary | string | no | One-line note of what you are doing (e.g. "comparing laptop prices"). Shown in browser_status (not the status line). Omit to keep the previous one. |
Types text into a ref element, sending real key events (keydown/keypress/input/keyup) per character like a human.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| ref | string | yes | ref of the element to type into |
| text | string | yes | Text to type |
| clear | boolean | no | Clear existing content |
| submit | boolean | no | Press Enter after |
| fast | boolean | no | Very long text: insert at once without key events |
| read | string | no | Append the page after the action (no separate read needed): text=body text, snapshot=snapshot page 1 (with refs), changes=only lines added/removed since your last snapshot (shortest; full page if the |
| summary | string | no | One-line note of what you are doing (e.g. "comparing laptop prices"). Shown in browser_status (not the status line). Omit to keep the previous one. |
Fills several inputs on the same page in order (each cleared, typed with real key events, value verified).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| fields | array | yes | Fields to fill (top to bottom) |
| submit | string | no | After filling: "Enter" or a button ref to click |
| read | string | no | Append the page after the action (no separate read needed): text=body text, snapshot=snapshot page 1 (with refs), changes=only lines added/removed since your last snapshot (shortest; full page if the |
| summary | string | no | One-line note of what you are doing (e.g. "comparing laptop prices"). Shown in browser_status (not the status line). Omit to keep the previous one. |
Puts files into a file input (no OS file picker shown to the user). Give ref of the file input (<input type=file> or its label), or
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| files | array | yes | File paths on this PC (absolute recommended) |
| ref | string | no | File input ref. Omit to use the file picker just opened by a click |
| read | string | no | Append the page after the action (no separate read needed): text=body text, snapshot=snapshot page 1 (with refs), changes=only lines added/removed since your last snapshot (shortest; full page if the |
| summary | string | no | One-line note of what you are doing (e.g. "comparing laptop prices"). Shown in browser_status (not the status line). Omit to keep the previous one. |
Picks an option in a <select> dropdown (by value or visible text; partial match OK). Focuses the dropdown and moves with keys (arrow keys on Windows/Linux, typing the first letters on macOS), so the page gets real events and no list popup opens. If nothing matches, lists the available options.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| ref | string | yes | ref of the dropdown (combobox) |
| option | string | yes | Option value or text |
| read | string | no | Append the page after the action (no separate read needed): text=body text, snapshot=snapshot page 1 (with refs), changes=only lines added/removed since your last snapshot (shortest; full page if the |
| summary | string | no | One-line note of what you are doing (e.g. "comparing laptop prices"). Shown in browser_status (not the status line). Omit to keep the previous one. |
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| key | string | yes | — |
| read | string | no | Append the page after the action (no separate read needed): text=body text, snapshot=snapshot page 1 (with refs), changes=only lines added/removed since your last snapshot (shortest; full page if the |
| summary | string | no | One-line note of what you are doing (e.g. "comparing laptop prices"). Shown in browser_status (not the status line). Omit to keep the previous one. |
Scrolls a ref element into view, or by dy pixels (positive = down, negative = up, default 600). Reports the actual resulting position.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| ref | string | no | — |
| dy | number | no | — |
| read | string | no | Append the page after the action (no separate read needed): text=body text, snapshot=snapshot page 1 (with refs), changes=only lines added/removed since your last snapshot (shortest; full page if the |
| summary | string | no | One-line note of what you are doing (e.g. "comparing laptop prices"). Shown in browser_status (not the status line). Omit to keep the previous one. |
Waits until text appears; gone: that text disappears; url: the URL changes; enabled: that button/input becomes enabled;
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| text | string | no | Text to wait for |
| url | string | no | Until the URL contains this (e.g. "mail.google.com/mail"). "" = until it differs from the current URL |
| gone | string | no | Until this text disappears from the page (e.g. login form's "Password" gone = logged in) |
| seconds | number | no | Plain wait in seconds. Avoid: wait on a condition (text/gone/url) or slot_inbox wait instead |
| timeout | number | no | Max wait in seconds for text/gone/url/enabled/response/network_idle. 300-600 when waiting for a human login, etc. |
| network_idle | boolean | no | Until no network requests for 0.5s (before capture/read) |
| enabled | string | no | Until this ref element (button/input) becomes enabled |
| response | string | no | Until a network response whose URL contains this completes (e.g. "/api/search"). * ? wildcards work (matched against the full URL, e.g. "*api.example.com/v1/items*"). Returns the response body |
Evaluates a JavaScript expression in the tab and returns the result as JSON. Escape hatch only when other tools can't do it.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| expression | string | yes | JS expression (Promises are awaited) |
| summary | string | no | One-line note of what you are doing (e.g. "comparing laptop prices"). Shown in browser_status (not the status line). Omit to keep the previous one. |
Tab network request list (newest at bottom). Records the latest 500 since CDPM first attached to the tab. Filter with filter (URL part), type (Document, XHR, Fetch, Script, Image, etc.), failed (failures only). For details pass the n-number to browser_network_detail.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| filter | string | no | Only requests whose URL contains this |
| type | string | no | Request type (e.g. XHR, Fetch, Document, Script, Image) |
| failed | boolean | no | Failed requests only |
| limit | integer | no | Max count (default 40, newest first) |
Shows one request's headers, sent data and response body (start of it, if text). id is the n-number from browser_network.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| id | string | yes | Request number (e.g. "n12") |
| body | boolean | no | Include response body (default true) |
Blocks tab network requests matching URL patterns (they fail). add adds, remove removes, clear removes all rules you set.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| tab | no | Target tab: number (1, 2…) or ID ("t7"). Use the stable ID when agents share a slot. Required for action tools when there are multiple tabs. | |
| multiSlot | boolean | no | true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest) |
| add | array | no | URL patterns to block |
| remove | array | no | Patterns to unblock |
| clear | boolean | no | Remove all rules set by this session |
| summary | string | no | One-line note of what you are doing (e.g. "comparing laptop prices"). Shown in browser_status (not the status line). Omit to keep the previous one. |
Use only when the user says to pause (e.g. "pause 3"); agents never call it on their own. All action tools on the slot are refused and any browser_wait in progress stops at once.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | no | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| slots | array | no | Multiple slots (e.g. [1,2,3]) |
| all | boolean | no | All running slots |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
Use only when the user says to resume (e.g. "continue 3"); the agent owning a paused slot never calls it on its own. Unpauses and messages every agent on the slot to wake it (agents re-read the page and continue). all=true resumes every paused slot.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | no | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| slots | array | no | Multiple slots (e.g. [1,2,3]) |
| all | boolean | no | All paused slots |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
Sends a message to other agents (real-time collaboration). slot = the slot the recipient owns (to reach another slot's agent, use that slot number). Omit to to send to everyone on that slot.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| text | string | yes | — |
| to | string | no | Recipient agent name |
Shows your unread messages. With wait (seconds), waits up to that long for a new message (for real-time conversation).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slot | integer | yes | Browser slot …-…. "3", "slot 3", "browser 3" → 3. If the user gives a port like …, subtract …. |
| agent | string | no | Your display name, shown to other agents. Subagents must always set it. Default "claude-…". |
| wait | number | no | Max seconds to wait for a new message; returns as soon as one arrives (use this instead of repeatedly checking the page while waiting for another agent) |
- Every tool, no call limit
- No card, and mcprush charges nothing for it
- Source published under MIT
- Runs on your machine — nothing of it reaches our gateway
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Cdpm or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | high | capability blast radius (high) — client exposure if the model is manipulated | −6 |
| verification-discount | repo | publisher verification (public source) — no provenance, but the source is public and inspectable | −1 |
| coverage-honesty | source | inspection depth (source) — how much of the target the scan could see | −0 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
Tools were statically extracted from the published source (36 recovered), not enumerated from a running server. Tool-poisoning, Unicode-smuggling, capability and toxic-flow analysis ran on this inferred surface, but a mis-parsed registration could be missed or mis-attributed, so tool-derived findings are capped below “confirmed”. To grade the real runtime surface, scan the running server: --command "npx -y <package>".
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. high is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| browser_status | no tags | |
| browser_launch | no tags | |
| browser_close | no tags | |
| browser_tabs | no tags | |
| browser_tab_new | no tags | |
| browser_tab_close | no tags | |
| browser_tab_select | no tags | |
| browser_snapshot | no tags | |
| browser_text | no tags | |
| browser_screenshot | no tags | |
| browser_navigate | no tags | |
| browser_back | no tags | |
| browser_forward | no tags | |
| browser_reload | no tags | |
| browser_dialog | no tags | |
| browser_permission | no tags | |
| browser_hover | no tags | |
| browser_drag | no tags | |
| browser_download_wait | untrusted-input | untrusted-input: keyword "download" |
| browser_pdf | no tags | |
| browser_click | no tags | |
| browser_type | no tags | |
| browser_fill | no tags | |
| browser_upload | no tags | |
| browser_select | no tags | |
| browser_press_key | no tags | |
| browser_scroll | no tags | |
| browser_wait | no tags | |
| browser_eval | code-exec | code-exec: keyword "eval" in tool name |
| browser_network | no tags | |
| browser_network_detail | no tags | |
| browser_block | no tags | |
| slot_pause | no tags | |
| slot_resume | no tags | |
| slot_send | no tags | |
| slot_inbox | untrusted-input | untrusted-input: keyword "read_message" |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
Always latest — the install command names no version, so it installs the newest release when it runs; the current release on file is 0.1.9. Pin a release below and the command asks for exactly that one.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Cdpm can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.