Deputy
NPM · DEPUTY-MCP
Any web page as a typed tool call, run in your own logged-in Chrome. Free to start; Pro adds more.
Available components
Last scanned (5 hours ago)
Scores higher than 36% of npm servers
Category Browser Automation
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 Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency6
- Repository check failed: no source repository is declared. See how to fix → View diagnostics → Fail
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: the license (PolyForm-Shield-1.0.0) isn't a recognized OSI-approved license. See how to fix → Fail
- Actively maintained (last published 0 days ago).Pass
- Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability64
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 3325 tokens (~123/item across 27 items; 27 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 Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage84
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 51% 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 1 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 28 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
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.
- 23 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.
- 22 Oct 26 0
- Stability: 0.20 → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- First check of Schema quality: unverified functional
- Package version: 0.1.3 → 0.1.5 functional
- Package version: 0.1.3 → 0.1.4 functional
- 21 Oct 26 +16
- Malware scan: unverified → pass ▲ security
- 20 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- Package version: 0.1.2 → 0.1.3 functional
- 19 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Oct 26 +1
- Stability: unverified → 0.07 ▲ functional
- Package version: 0.1.1 → 0.1.2 functional
- 15 Oct 26 58
First indexed and scored.
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 23 Oct 2026 · Analysed npm/deputy-mcp@0.1.5
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 →
Dependencies 0 packages
| Packages resolved | 0 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
answer_task Answer a paused task ~50
Resume a task that stopped because it needed a human — a confirmation, or a sign-in that has now been completed in the browser.
| Name | Type | Req | Description |
|---|---|---|---|
| answer | string | yes | – |
| taskId | string | yes | – |
No output schema declared.
No examples provided.
browser_act Act on an element ~308
Do one thing to an element: click, double_click, right_click, hover, focus, type (value; replaces unless append), press (keys like "Enter", "Tab", "Escape", "ArrowDown", "Control+a"; without a target, presses on the focused element), check, uncheck, select (value = option label or value, native or custom dropdown), clear, scroll_into_view. Typing is sent key by key so autocompletes react. The result reports any dialog or error the action caused. For whole forms, prefer browser_invoke with the typed tool.
| Name | Type | Req | Description |
|---|---|---|---|
| acceptDialog | boolean | – | Accept the confirm/prompt dialog this action opens (dialogs are dismissed by default). |
| action | string | – | – |
| append | boolean | – | For type: add to the existing text instead of replacing it. |
| dialogText | string | – | With acceptDialog: what to type into a prompt. |
| keys | string | – | For press: e.g. "Enter" or "Shift+Tab". |
| ref | string | – | Element ref from browser_find or browser_capabilities. |
| selector | string | – | CSS selector, if you have no ref. |
| steps | array | – | Several actions in order, in one call (e.g. open a dropdown, pick an option, press Join). Stops at the first that fails. |
| tabId | number | – | – |
| value | string | – | Text to type, or the option to select. |
No output schema declared.
No examples provided.
browser_ask Ask about a page instead of looking at it ~117
Ask a question about what is on a browser tab. Deputy reads the page itself and returns a short answer. Use this instead of screenshotting or dumping the DOM — the page never enters your context, so a lookup costs a couple of hundred tokens rather than tens of thousands. Without a model, it returns the passages relevant to your question instead.
| Name | Type | Req | Description |
|---|---|---|---|
| question | string | yes | What you want to know, e.g. "what is the cheapest result?" |
| tabId | number | – | Tab to read. Defaults to the active tab. |
No output schema declared.
No examples provided.
browser_capabilities What can the browser do right now? ~172
The full contract of every open tab: each form as a typed tool with its JSON Schema (types, allowed values, min/max, required fields), what those fields currently hold, and every button and link with a ref you can click. This is what you read instead of a screenshot — it is complete, so you should not need to probe. Long pages return a window of their links: the reply always states the true total, and you can narrow with actionQuery or page with actionOffset.
| Name | Type | Req | Description |
|---|---|---|---|
| actionLimit | number | – | How many actions to return (default 25). |
| actionOffset | number | – | Skip this many actions, for paging through a long list. |
| actionQuery | string | – | Only return buttons/links whose label contains this text. Use it when you know what you want. |
No output schema declared.
No examples provided.
browser_click Click a button or link ~46
Click something browser_capabilities listed under "actions", by its ref.
| Name | Type | Req | Description |
|---|---|---|---|
| ref | string | yes | Action ref, e.g. "a10". |
| tabId | number | – | – |
No output schema declared.
No examples provided.
browser_console Console and errors ~106
Console messages and page errors: uncaught exceptions with stacks, unhandled rejections, failed resources, and console output from when an agent started driving the tab. Filter by levels (error, warn, info, log, debug). Browser-internal messages (CSP, CORS) are not visible without the debugger.
| Name | Type | Req | Description |
|---|---|---|---|
| clear | boolean | – | Empty the log after reading. |
| levels | array | – | – |
| limit | number | – | – |
| tabId | number | – | – |
No output schema declared.
No examples provided.
browser_dialog Answer dialogs ~101
Decide how alert/confirm/prompt dialogs are answered on a tab you are driving. By default they are dismissed (a confirm returns false) and reported in the action result. Call this BEFORE the action that opens the dialog: accept for the next dialog, persist to keep answering that way.
| Name | Type | Req | Description |
|---|---|---|---|
| accept | boolean | yes | – |
| persist | boolean | – | – |
| tabId | number | – | – |
| text | string | – | What to type into a prompt. |
No output schema declared.
No examples provided.
browser_downloads Downloads ~103
Files the browser downloaded. "list" shows recent downloads; "wait" waits for the one just started (by a click) to finish; "read" returns a finished download by id (the newest if no id): text files as text, PDFs as extracted text, other files as their path, type and size.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| id | number | – | – |
| timeoutMs | number | – | For wait (default 30000). |
No output schema declared.
No examples provided.
browser_drag Drag and drop ~70
Drag one element onto another (HTML5 drag-and-drop, or pointer-driven libraries such as kanban boards).
| Name | Type | Req | Description |
|---|---|---|---|
| fromRef | string | – | – |
| fromSelector | string | – | – |
| tabId | number | – | – |
| toRef | string | – | – |
| toSelector | string | – | – |
No output schema declared.
No examples provided.
browser_eval Run JavaScript in the page ~107
Run JavaScript in the page and return its JSON-serialisable result. An expression returns its value; for statements, use return. Promises are awaited. Runs in the page's own world by default (sees its globals); world "isolated" keeps it apart. Needs Chrome's "Allow User Scripts" switch for Deputy; the error says how to turn it on.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | – |
| tabId | number | – | – |
| world | string | – | – |
No output schema declared.
No examples provided.
browser_extract Extract data ~128
Turn a table, or a repeated list (search results, product cards, feed items), into JSON rows; or list the links. kind "auto" picks the biggest table, else the biggest repeated list. Scope it with a ref or selector. Pair with browser_scroll untilStable for infinite feeds.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | – |
| limit | number | – | Rows to return (default 50). |
| ref | string | – | Element ref from browser_find or browser_capabilities. |
| selector | string | – | CSS selector, if you have no ref. |
| tabId | number | – | – |
No output schema declared.
No examples provided.
browser_fill Fill one field by ref ~132
Set a single field to a value, addressed by the ref browser_capabilities gave it. Use this on pages Deputy could not graft into a typed tool — apps that build a form out of divs, or inputs sitting outside any <form>. For a checkbox pass "true"/"false"; for a <select> pass an option value or its visible text. When a typed tool exists, browser_invoke is better.
| Name | Type | Req | Description |
|---|---|---|---|
| ref | string | yes | Field ref from browser_capabilities actions, e.g. "a13". |
| tabId | number | – | – |
| value | string | yes | Value to set. |
No output schema declared.
No examples provided.
browser_find Find elements ~160
Find elements by visible text, role (button, link, textbox, checkbox, combobox, option, heading, tab, menuitem, dialog, img, row, cell) or CSS selector. Returns refs you can pass to browser_act, browser_inspect or browser_screenshot, with label, state and value. Reaches inside forms, open and closed shadow roots, and elements off screen.
| Name | Type | Req | Description |
|---|---|---|---|
| exact | boolean | – | Match the whole text exactly. |
| includeHidden | boolean | – | – |
| limit | number | – | Default 20. |
| role | string | – | – |
| selector | string | – | – |
| tabId | number | – | – |
| text | string | – | Visible text or accessible name to match (substring, case-insensitive). |
No output schema declared.
No examples provided.
browser_inspect Inspect layout and CSS ~163
With a ref or selector: the element's box model, position, computed CSS (or the properties you name), flex/grid layout, visibility, text contrast, overflow, and what is covering it. With no target: a layout audit of the whole page — horizontal overflow and its culprits, clipped text, broken images, missing alt text, small tap targets, low-contrast text, layout shift, fonts. Numbers instead of a screenshot, for CSS debugging.
| Name | Type | Req | Description |
|---|---|---|---|
| properties | array | – | CSS properties to report, e.g. ["gap", "margin-top"]. |
| ref | string | – | Element ref from browser_find or browser_capabilities. |
| selector | string | – | CSS selector, if you have no ref. |
| tabId | number | – | – |
No output schema declared.
No examples provided.
browser_invoke Do something on the page ~80
Call one of the tools browser_capabilities listed, with arguments matching its inputSchema. This acts in the real logged-in browser: it fills and submits the actual form.
| Name | Type | Req | Description |
|---|---|---|---|
| args | object | – | Arguments matching the tool inputSchema. |
| tabId | number | – | – |
| tool | string | yes | Tool name exactly as browser_capabilities reported it. |
No output schema declared.
No examples provided.
browser_look Look at the page (Pro) ~82
A vision model looks at the page and answers in text: describe it, or answer your question about what is visible (layout, images, charts, whether something looks broken). Costs you a few hundred tokens instead of an image, and works in clients that cannot show images. Deputy Pro.
| Name | Type | Req | Description |
|---|---|---|---|
| question | string | – | – |
| tabId | number | – | – |
No output schema declared.
No examples provided.
browser_navigate Open a URL, or go back, forward or reload ~103
Point a tab at a URL and wait for it to load, or move through its history with action "back" / "forward", or "reload" it. Deputy re-reads what the new page can do, so call browser_capabilities afterwards to see the tools that appeared.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | Instead of a URL: move through history, or reload. |
| tabId | number | – | – |
| url | string | – | Absolute URL to open. |
No output schema declared.
No examples provided.
browser_network Network requests ~125
Requests the page made: method, URL, status, time, type, size, for fetch/XHR and every resource (documents, scripts, styles, images). failedOnly shows 4xx/5xx and network errors. includeBodies adds text/JSON response bodies (first 4 KB) captured while an agent drives the tab.
| Name | Type | Req | Description |
|---|---|---|---|
| clear | boolean | – | – |
| failedOnly | boolean | – | – |
| filter | string | – | Only URLs containing this. |
| includeBodies | boolean | – | – |
| limit | number | – | – |
| tabId | number | – | – |
No output schema declared.
No examples provided.
browser_read Read a page as text ~94
Return the page as plain text for you to read yourself. Use browser_ask instead when you only need one fact: with a model (Deputy Pro or OPENROUTER_API_KEY) Deputy reads the page and answers in a sentence. Use this when you genuinely need the content to reason over.
| Name | Type | Req | Description |
|---|---|---|---|
| maxChars | number | – | Cap the returned text (default 6000). |
| tabId | number | – | – |
No output schema declared.
No examples provided.
browser_resize Resize the viewport ~95
Set the page viewport to a width and height in CSS pixels, e.g. 375×812 to check a mobile layout. This resizes the user's real window: call with reset: true when done to put it back.
| Name | Type | Req | Description |
|---|---|---|---|
| height | integer | – | – |
| reset | boolean | – | Put the window back to its size before Deputy first resized it. |
| tabId | number | – | – |
| width | integer | – | – |
No output schema declared.
No examples provided.
browser_screenshot See the page ~220
Take a screenshot and return the image to you. An image costs you roughly 1,000-1,600 tokens, so use it when you need to SEE something: visual or frontend work, layout and styling, charts, images, canvas. For facts on a page prefer browser_ask or browser_read; to act, prefer browser_capabilities. fullPage stitches the whole scrollable page, including anything off the right edge (costs more). ref or selector captures a single element whole, even one wider or taller than the viewport.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | jpeg (default, small) or png (sharper text, much larger). |
| fullPage | boolean | – | Capture the whole scrollable page, not just the viewport. |
| maxDimension | number | – | Longest edge in pixels (default 1280). |
| ref | string | – | Capture only this element (a ref from browser_capabilities). |
| selector | string | – | Capture only the first element matching this CSS selector. |
| tabId | number | – | – |
No output schema declared.
No examples provided.
browser_scroll Scroll ~156
Scroll the page (or an element) down/up, by pixels, or to top/bottom. untilStable keeps scrolling to the bottom while an infinite feed keeps loading, and reports how much it grew. Finds the real scroll container in app layouts where the window itself does not scroll.
| Name | Type | Req | Description |
|---|---|---|---|
| by | number | – | Pixels (default: most of a screen). |
| direction | string | – | – |
| maxRounds | number | – | For untilStable (default 10). |
| ref | string | – | Element ref from browser_find or browser_capabilities. |
| selector | string | – | CSS selector, if you have no ref. |
| tabId | number | – | – |
| to | string | – | – |
| untilStable | boolean | – | – |
No output schema declared.
No examples provided.
browser_tabs List, open, switch or close tabs ~91
Work with browser tabs. "list" shows every tab; "open" opens a URL in a new tab and makes it active; "select" makes a tab active (other tools act on the active tab by default); "close" closes one.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| tabId | number | – | For "select" and "close". |
| url | string | – | For "open". |
No output schema declared.
No examples provided.
browser_upload Upload files ~79
Attach local files (absolute paths, 25 MB total) to a file input, or drop them onto a drop zone.
| Name | Type | Req | Description |
|---|---|---|---|
| paths | array | yes | – |
| ref | string | – | Element ref from browser_find or browser_capabilities. |
| selector | string | – | CSS selector, if you have no ref. |
| tabId | number | – | – |
No output schema declared.
No examples provided.
browser_wait Wait for the page ~141
Wait until text appears, text disappears, or an element becomes visible — for pages that load content after the fact (search results, spinners, SPAs). With no condition, waits timeoutMs. Fails with a clear message on timeout.
| Name | Type | Req | Description |
|---|---|---|---|
| selector | string | – | Wait until an element matching this CSS selector is visible. |
| tabId | number | – | – |
| text | string | – | Wait until this text is on the page. |
| textGone | string | – | Wait until this text is gone (e.g. "Loading…"). |
| timeoutMs | number | – | Give up after this long (default 10000, max 60000). |
No output schema declared.
No examples provided.
delegate_goal Delegate a goal to the browser ~98
Hand the browser agent a goal in plain language and let it work. It knows the page, the session you are signed into, and what each form accepts. Prefer this over driving the browser yourself — you never need to see the page.
| Name | Type | Req | Description |
|---|---|---|---|
| goal | string | yes | What you want done, e.g. "search for a cordless drill under $80". |
| tabId | number | – | Tab to work in. Defaults to the active tab. |
No output schema declared.
No examples provided.
task_status Check a delegated task ~33
Poll a task by id. Use when a delegation is still running or was interrupted.
| Name | Type | Req | Description |
|---|---|---|---|
| taskId | string | yes | – |
No output schema declared.
No examples provided.
How do I install the Deputy MCP server?
Deputy runs locally as an npm package, launched with npx -y deputy-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 · deputy-mcp
claude mcp add zraisan-deputy -- npx -y deputy-mcp
What is the Deputy MCP server?
Deputy is an MCP server listed in the public MCP registry as io.github.zraisan/deputy. Any web page as a typed tool call, run in your own logged-in Chrome. Free to start; Pro adds more. This page covers its npm package (deputy-mcp).
Is the Deputy MCP server safe to use?
Deputy scores 62 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 23 October 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 Deputy MCP server expose?
Deputy exposes 27 tools: browser_capabilities, browser_invoke, browser_fill, browser_click, browser_read, and 22 more. Their descriptions and schemas cost roughly 3,160 tokens of context every time the server is loaded.
Is the Deputy MCP server still maintained?
Deputy is still listed as active in the MCP registry. We last reached this channel on 23 October 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 Deputy MCP server under?
Deputy declares the PolyForm-Shield-1.0.0 licence, which is not on the OSI-approved list. Read the terms before using it at work, and note this covers the source only, not the cost of any service it calls.