Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.IGELHARINE/cdpm

NPM · CDPM-MCP

Lets many Claude Code sessions and subagents share numbered, logged-in Chrome instances over CDP

Available components

+3 this week 68 Trust /100

Last scanned (21 hours ago)

Scores higher than 36% of npm servers

Category Browser Automation

Trust breakdown (7 categories)

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 Security81
  • No malware found by supply-chain analysis.Pass
  • CVE check failed: a known high-severity CVE affects zod 4.6.5, a direct dependency. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • 30 of 114 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability58
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 11607 tokens (~322/item across 36 items; 36 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management60
  • Stability observed for 18 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
  • 97% of tools have a non-trivial description (not blank, and not just the tool's name).Partial
  • 99% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "browser_eval" implies "eval" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 37 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
Changelog

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.

  • 2 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.

  • 31 Oct 26 +1
    • Security disclosure: unverified → fail ▼ functional
  • 29 Oct 26 +1
    • Security disclosure: fail → unverified ▼ functional
  • 27 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.

  • 25 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

  • 24 Oct 26 −5
    • CVE-2023-54404 affects this package: high ▼ security
    • Known CVEs: pass → fail ▼ security
  • 22 Oct 26 +3
    • Stability: unverified → 0.17 ▲ functional
  • 18 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
Diagnostics

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 4 Nov 2026 · Analysed npm/cdpm-mcp@0.1.9

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Vulnerabilities 1 finding
ID CVE Severity Vector Fix available
GHSA-mrhx-c7xc-m3w5 CVE-2023-54404 high CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H yes

Background: What a vulnerability scan can and cannot prove →

Dependencies 114 packages
Packages resolved 114
Stale 30
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 36 exposed · ~10,032 tokens

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 →

Tool Tokens
browser_back ~269

Go back.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
readstring–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…
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
summarystring–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.
tabstring|number–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.

No output schema declared.

No examples provided.

browser_block ~356

Blocks tab network requests matching URL patterns (they fail). add adds, remove removes, clear removes all rules you set. Patterns: * any chars, ? one char. A bare domain matches every request containing it ("ads.example.com" → "*ads.example.com*"). A trailing * is added automatically so query strings still match ("*.png" → "*.png*"). The tab skips the cache while rules exist. Rules last only while this Claude session is alive and are shown to other agents in the header. With no args, shows current rules.

NameTypeReqDescription
addarray–URL patterns to block
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
clearboolean–Remove all rules set by this session
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
removearray–Patterns to unblock
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
summarystring–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.
tabstring|number–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.

No output schema declared.

No examples provided.

browser_click ~375

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. Clicking a file input or "attach" button intercepts the OS file picker (not shown); then use browser_upload. Doesn't click <select> dropdowns (they open a list popup on the user's screen); use browser_select.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
doubleboolean–Double-click
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
readstring–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…
refstringyesref from browser_snapshot (e.g. "e12")
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
summarystring–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.
tabstring|number–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.

No output schema declared.

No examples provided.

browser_close ~114

Closes slot Chrome cleanly (session and cookies saved). The profile (logins) is kept. Reports if another agent used it recently.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.

No output schema declared.

No examples provided.

browser_dialog ~407

Accepts (accept: true) or dismisses (accept: false) an open dialog (alert/confirm/prompt/beforeunload). The tab is frozen while a dialog is open. Usually judge from its content and handle it yourself (accept if it is part of the requested task; close unneeded notices/ads). Ask the user only when it confirms an irreversible action they didn't request (payment, deletion, etc.). beforeunload: accept = leave page (input lost), dismiss = stay. For prompt, text is the input.

NameTypeReqDescription
acceptbooleanyestrue = OK, false = cancel
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
readstring–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…
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
summarystring–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.
tabstring|number–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.
textstring–Text for a prompt dialog (used only when accepting)

No output schema declared.

No examples provided.

browser_download_wait ~138

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.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
timeoutnumber–Max wait in seconds (default 120)

No output schema declared.

No examples provided.

browser_drag ~414

Drags with the real mouse (press → move in steps → release): drag and drop, sliders, reordering, drag CAPTCHAs, etc. Target: to (element ref), to_text (text at the drop spot), or dx/dy (pixels from from). HTML drag is handled without starting an OS drag.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
dxnumber–Horizontal pixels (right +)
dynumber–Vertical pixels (down +)
fromstringyesref of the element to drag (including ones marked draggable)
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
readstring–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…
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
summarystring–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.
tabstring|number–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.
tostring–ref of the drop target
to_textstring–Text shown at the drop spot (when it has no ref, e.g. "Drop here")

No output schema declared.

No examples provided.

browser_eval ~280

Evaluates a JavaScript expression in the tab and returns the result as JSON. Escape hatch only when other tools can't do it. Runs in an isolated world: DOM can be read and modified, but globals created by page scripts (window.appVar, etc.) are not visible.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
expressionstringyesJS expression (Promises are awaited)
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
summarystring–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.
tabstring|number–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.

No output schema declared.

No examples provided.

browser_fill ~366

Fills several inputs on the same page in order (each cleared, typed with real key events, value verified). Stops on page change, dialog, or any failed field, and reports how far it got. submit="Enter" presses Enter in the last field; a button ref clicks that button. For dropdowns use browser_select.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
fieldsarrayyesFields to fill (top to bottom)
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
readstring–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…
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
submitstring–After filling: "Enter" or a button ref to click
summarystring–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.
tabstring|number–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.

No output schema declared.

No examples provided.

browser_forward ~273

Go forward (after going back).

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
readstring–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…
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
summarystring–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.
tabstring|number–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.

No output schema declared.

No examples provided.

browser_hover ~308

Moves the real mouse over a ref element (no click). For hover menus and tooltips. Use read=changes to see the opened menu.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
readstring–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…
refstringyesref of the element to hover
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
summarystring–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.
tabstring|number–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.

No output schema declared.

No examples provided.

browser_launch ~520

Starts slot Chrome. Call only when the user explicitly asks (other tools never start a closed slot). Without slot, uses the lowest free slot. If already running, just attaches. The user decides windowed (visible) vs headless (hidden): headless: true only if they say "headless/hidden". If unstated, don't guess; ask first, then call with headless. Starting a closed slot without headless only returns a confirmation request. Start several slots at once with slots (list) or count (lowest first). For different jobs per slot, after launching give each slot its own subagent in parallel.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
countinteger–When the user gives only a count ("start 3"): starts that many free slots, lowest first
headlessboolean–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…
proxiesarray–Per-slot proxies, paired in slots order (count: launch order)
proxystring–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 l…
slotinteger–One slot to start (1-30). Omit if the user gave no number → lowest free slot
slotsarray–Slot numbers to start at once (e.g. [1,2,3]), lowest first
urlstring–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
urlsarray–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

No output schema declared.

No examples provided.

browser_navigate ~293

Navigates the tab to a URL and waits for the body to load.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
readstring–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…
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
summarystring–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.
tabstring|number–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.
urlstringyesURL to go to

No output schema declared.

No examples provided.

browser_network ~293

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.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
failedboolean–Failed requests only
filterstring–Only requests whose URL contains this
limitinteger–Max count (default 40, newest first)
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
tabstring|number–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.
typestring–Request type (e.g. XHR, Fetch, Document, Script, Image)

No output schema declared.

No examples provided.

browser_network_detail ~226

Shows one request's headers, sent data and response body (start of it, if text). id is the n-number from browser_network.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
bodyboolean–Include response body (default true)
idstringyesRequest number (e.g. "n12")
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
tabstring|number–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.

No output schema declared.

No examples provided.

browser_pdf ~229

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.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
pathstring–File path to save (e.g. C:\Users\me\Desktop\receipt.pdf)
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
tabstring|number–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.

No output schema declared.

No examples provided.

browser_permission ~292

Lists or answers Chrome permission bubbles ("site wants to: access other apps and services on this device / show notifications / know your location…"). They are browser UI: not in snapshot/screenshot, page tools can't click them, and the page often waits until they are answered. The header warns when one is open. Without button: shows the open bubbles with their exact button names. With button: presses that button (exact name as listed, e.g. "허용", "Allow", "Block", "Allow while visiting the site"). Windows, windowed slots only.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
buttonstring–Exact button name to press, as listed in the header or by calling without button
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
sitestring–Only when several bubbles are open: part of the bubble title (e.g. the site host) to pick one
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.

No output schema declared.

No examples provided.

browser_press_key ~316

Presses a key on the focused element. E.g. Enter, Tab, Escape, ArrowDown, PageDown, Control+A, Shift+Tab.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
keystringyesKey name or combo (e.g. "Control+A")
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
readstring–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…
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
summarystring–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.
tabstring|number–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.

No output schema declared.

No examples provided.

browser_reload ~311

Reloads the page (same as Chrome reload). ignore_cache=true bypasses the cache. Careful: unsaved user input on the page is lost.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
ignore_cacheboolean–Bypass cache (hard reload)
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
readstring–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…
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
summarystring–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.
tabstring|number–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.

No output schema declared.

No examples provided.

browser_screenshot ~210

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

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
tabstring|number–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.

No output schema declared.

No examples provided.

browser_scroll ~311

Scrolls a ref element into view, or by dy pixels (positive = down, negative = up, default 600). Reports the actual resulting position.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
dynumber––
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
readstring–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…
refstring––
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
summarystring–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.
tabstring|number–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.

No output schema declared.

No examples provided.

browser_select ~355

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.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
optionstringyesOption value or text
readstring–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…
refstringyesref of the dropdown (combobox)
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
summarystring–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.
tabstring|number–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.

No output schema declared.

No examples provided.

browser_snapshot ~360

Reads the tab as accessibility-tree text. Clickable/typable elements get refs like [e12]. Long pages are split; only page 1 (top) is shown (page=2 to continue; refs stay the same across pages). find="text" shows only matching elements with their parent context; ref="e40" shows only that element's subtree. Refs change when the page changes, so re-snapshot before acting.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
findstring–Only lines containing this text, with parent context (ignores case and spaces). If unsure of site language, use | for alternatives, e.g. "제목|subject"
interactiveboolean–Only actionable elements (lines with refs): inputs, buttons, links. Use first to find inputs on big pages like Gmail
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
pageinteger–Page number for long output (default 1)
refstring–Only this ref element and its subtree
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
tabstring|number–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.

No output schema declared.

No examples provided.

browser_status ~114

Shows running Chrome slots (1-30) with their tabs, opener, last action and one-line summary. Pass slot for just that slot.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
slotinteger–Browser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.

No output schema declared.

No examples provided.

browser_tab_close ~114

Closes a tab. tab is required.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
tabstring|numberyesTab to close: number or ID ("t7")

No output schema declared.

No examples provided.

browser_tab_new ~176

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.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
summarystring–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.
urlstring–URL to open (omit for blank tab)

No output schema declared.

No examples provided.

browser_tab_select ~150

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

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
tabstring|numberyesTab to bring forward: number or ID

No output schema declared.

No examples provided.

browser_tabs ~131

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

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.

No output schema declared.

No examples provided.

browser_text ~234

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.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
pageinteger–Page number for long output (default 1)
refstring–Only this element's text
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
tabstring|number–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.

No output schema declared.

No examples provided.

browser_type ~421

Types text into a ref element, sending real key events (keydown/keypress/input/keyup) per character like a human. clear=true clears existing content; submit=true presses Enter after. Verifies the resulting value and reports a mismatch. fast=true inserts very long text at once without key events. Date/time inputs get the value set directly in their format (time "19:30", date "2026-10-08"; change event then has isTrusted=false).

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
clearboolean–Clear existing content
fastboolean–Very long text: insert at once without key events
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
readstring–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…
refstringyesref of the element to type into
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
submitboolean–Press Enter after
summarystring–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.
tabstring|number–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.
textstringyesText to type

No output schema declared.

No examples provided.

browser_upload ~377

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 for a site's custom "attach" button, click it first with browser_click (CDPM intercepts the picker) and call without ref. The site gets the same events as a human file pick.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
filesarrayyesFile paths on this PC (absolute recommended)
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
readstring–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…
refstring–File input ref. Omit to use the file picker just opened by a click
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
summarystring–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.
tabstring|number–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.

No output schema declared.

No examples provided.

browser_wait ~581

Waits until text appears; gone: that text disappears; url: the URL changes; enabled: that button/input becomes enabled; response: a network response for that URL completes (returns its body); network_idle: the network goes quiet; otherwise for seconds. For SPAs (search results, lists, etc.), instead of reading the page, getting the data response (JSON) with response="/api/search" after a click is faster and more accurate (it searches from this agent's last action on that tab, so responses that arrived during the click are caught). Only reads, never touches the page, so the user's input is not lost (use it to detect login: url, gone="Password" or text="Inbox"). Returns as soon as the condition is met or another agent's message arrives. Keep waits minimal: long waits only for humans (login, etc.); to wait for other agents use slot_inbox wait.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
enabledstring–Until this ref element (button/input) becomes enabled
gonestring–Until this text disappears from the page (e.g. login form's "Password" gone = logged in)
multiSlotboolean–true only when one agent must handle several slots together (e.g. comparing). Normally omit (one agent = one slot; use subagents for the rest)
network_idleboolean–Until no network requests for 0.5s (before capture/read)
responsestring–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
secondsnumber–Plain wait in seconds. Avoid: wait on a condition (text/gone/url) or slot_inbox wait instead
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
tabstring|number–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.
textstring–Text to wait for
timeoutnumber–Max wait in seconds for text/gone/url/enabled/response/network_idle. 300-600 when waiting for a human login, etc.
urlstring–Until the URL contains this (e.g. "mail.google.com/mail"). "" = until it differs from the current URL

No output schema declared.

No examples provided.

slot_inbox ~174

Shows your unread messages. With wait (seconds), waits up to that long for a new message (for real-time conversation). Messages already delivered in another tool's header are not unread; when there are no new ones, recently received ones are noted for reference.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
waitnumber–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)

No output schema declared.

No examples provided.

slot_pause ~186

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. An action already sent to Chrome finishes. Reading still works. Applies immediately to agents in other Claude sessions too. all=true pauses every running slot.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
allboolean–All running slots
slotinteger–Browser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
slotsarray–Multiple slots (e.g. [1,2,3])

No output schema declared.

No examples provided.

slot_resume ~173

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.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
allboolean–All paused slots
slotinteger–Browser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
slotsarray–Multiple slots (e.g. [1,2,3])

No output schema declared.

No examples provided.

slot_send ~185

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. Recipients get it instantly if waiting in slot_inbox wait, otherwise in their next tool result header (a running browser_wait stops at once). When you finish a step, notify waiting agents right away.

NameTypeReqDescription
agentstring–Your display name, shown to other agents. Subagents must always set it. Default "claude-84f3".
slotintegeryesBrowser slot 1-30. "3", "slot 3", "browser 3" → 3. If the user gives a port like 14052, subtract 14049.
textstringyes–
tostring–Recipient agent name

No output schema declared.

No examples provided.

Install

How do I install the io.github.IGELHARINE/cdpm MCP server?

io.github.IGELHARINE/cdpm runs locally as an npm package, launched with npx -y cdpm-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · cdpm-mcp

# add to Claude Code
claude mcp add igelharine-cdpm -- npx -y cdpm-mcp
Common questions

What is the io.github.IGELHARINE/cdpm MCP server?

io.github.IGELHARINE/cdpm is an MCP server listed in the public MCP registry as io.github.IGELHARINE/cdpm. Lets many Claude Code sessions and subagents share numbered, logged-in Chrome instances over CDP. This page covers its npm package (cdpm-mcp).

Is the io.github.IGELHARINE/cdpm MCP server safe to use?

io.github.IGELHARINE/cdpm scores 68 out of 100 on VerifyMCP. We recorded 1 known advisory against it as of 4 November 2026. It declares no install or post-install scripts. 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 io.github.IGELHARINE/cdpm MCP server expose?

io.github.IGELHARINE/cdpm exposes 36 tools: browser_status, browser_launch, browser_close, browser_tabs, browser_tab_new, and 31 more. Their descriptions and schemas cost roughly 10,032 tokens of context every time the server is loaded.

Is the io.github.IGELHARINE/cdpm MCP server still maintained?

io.github.IGELHARINE/cdpm is still listed as active in the MCP registry. We last reached this channel on 4 November 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 io.github.IGELHARINE/cdpm MCP server under?

io.github.IGELHARINE/cdpm declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.