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.Savvy-Tech-Sphere/usable-browser-agent

NPM · USABLE-BROWSER-AGENT

MCP server and Firefox add-on that let an AI agent drive your real, logged-in browser. Free tier.

0 this week 75 Trust /100

Last scanned (21 hours ago)

Scores higher than 50% 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 3.25.76, a direct dependency. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • 30 of 94 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency32
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Licence could not be checked: the licence is shipped as a file inside the package, not declared as a standard (SPDX) licence identifier, so we cannot tell whether it is OSI-approved.Unverified
  • Actively maintained (last published 42 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability81
  • AI-judged instruction clarity (excellent).Pass
  • Tool/resource definitions use about 3771 tokens (~71/item across 53 items; 53 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage88
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 64% 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_workflow_forget" implies "remove" 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 53 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
    • Stability: 0.97 → pass security
  • 1 Nov 26 −1
    • Stability: pass → 0.97 functional
  • 26 Oct 26 +1
    • Stability: 0.97 → pass security
  • 24 Oct 26 −5
    • CVE-2023-54404 affects this package: high ▼ security
    • Known CVEs: pass → fail ▼ security
  • 23 Oct 26 +1

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

  • 21 Oct 26 +1

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

  • 19 Oct 26 +1

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

  • 17 Oct 26 +1

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

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/usable-browser-agent@0.7.1

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 94 packages
Packages resolved 94
Stale 30
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 53 exposed · ~3,771 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 ~17

Go back in the active tab's history.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

browser_clear_http_auth ~34

Disarm previously-armed HTTP basic-auth answers (all domains, or specific ones).

NameTypeReqDescription
domainsarray––

No output schema declared.

No examples provided.

browser_click ~118

Click an element by its ref from the latest snapshot. Supports right/middle button, double-click, and modifier keys (ctrl/shift/alt/meta) for context menus, multi-select, and open-in-new-tab.

NameTypeReqDescription
buttonstring–Mouse button (default left). 'right' opens context menus.
countnumber–Click count; 2 = double-click.
modifiersarray–Modifier keys held during the click.
refstringyesElement ref, e.g. e12, from browser_snapshot.

No output schema declared.

No examples provided.

browser_clipboard_read ~45

Read text from the system clipboard. Use after the page put something on the clipboard (e.g. a 'Copy' button) or to move data between pages and apps.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

browser_clipboard_read_image ~47

Read an image from the system clipboard (e.g. after a 'Copy image' action) and return it as a PNG/JPEG. Errors if the clipboard holds no image.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

browser_clipboard_write ~24

Write text to the system clipboard.

NameTypeReqDescription
textstringyes–

No output schema declared.

No examples provided.

browser_clipboard_write_image ~43

Put a local image file onto the system clipboard so it can be pasted into a page.

NameTypeReqDescription
pathstringyesAbsolute path to a local image file.

No output schema declared.

No examples provided.

browser_close_tab ~29

Close a tab by id (defaults to the active tab).

NameTypeReqDescription
tabIdnumber––

No output schema declared.

No examples provided.

browser_dialogs ~43

List native JS dialogs (alert/confirm/prompt) the page tried to open and how they were auto-answered. Use this to see if the page asked something.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

browser_download ~95

Download a file to disk WITHOUT the OS save dialog, and return its local path so you can read it. Use for PDFs, exports, attachments — the file lands in the browser's downloads folder.

NameTypeReqDescription
filenamestring–Optional filename (relative to the downloads folder).
timeoutnumber–Max ms to wait for completion (default 60000).
urlstringyesFull URL of the file to download.

No output schema declared.

No examples provided.

browser_downloads_list ~29

List recent downloads with their on-disk paths and state.

NameTypeReqDescription
limitnumber––

No output schema declared.

No examples provided.

browser_drag ~75

Drag one element onto another (kanban cards, sortable lists, file tiles, sliders). Fires both HTML5 drag-and-drop and a pointer-drag sequence so native and JS-library targets both respond.

NameTypeReqDescription
fromRefstringyesRef of the element to drag.
toRefstringyesRef of the drop target.

No output schema declared.

No examples provided.

browser_eval ~109

Run JavaScript in the page and return the result. Disabled under hardened mode, which is the default; the operator enables it by setting UBA_STRICT_SECRETS=0 in the server environment. On Firefox the code runs in the content-script sandbox; on Chrome it runs in the page's own realm, where the page can observe it and its CSP applies. Use only when no dedicated tool fits.

NameTypeReqDescription
codestringyesJS body; use `return value;` to return data.

No output schema declared.

No examples provided.

browser_fill_form ~46

Fill multiple fields in one call. Pass fields as an array of {ref, text}. Faster and more reliable than many browser_type calls for forms.

NameTypeReqDescription
fieldsarrayyes–

No output schema declared.

No examples provided.

browser_fill_secret ~88

Fill a username or password field from the server-side credential broker. Pass only a secret alias; secret values are never accepted as tool input or returned.

NameTypeReqDescription
fieldstring–Which secret field to fill (default password).
refstringyesElement ref, e.g. e12, from browser_snapshot.
secretstringyesSecret alias from the server-side secrets vault.

No output schema declared.

No examples provided.

browser_focus_browser ~38

Bring the connected browser (Firefox or Chrome, per the bridge connection) to the foreground so OS-level input lands in it. macOS only.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

browser_forward ~17

Go forward in the active tab's history.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

browser_get_value ~29

Get the current value/text of a field or element by ref.

NameTypeReqDescription
refstringyes–

No output schema declared.

No examples provided.

browser_hover ~24

Hover the pointer over an element by ref.

NameTypeReqDescription
refstringyes–

No output schema declared.

No examples provided.

browser_http_auth ~93

Arm answers for HTTP basic-auth prompts (the native username/password dialog) from a server-side secret alias, scoped to that secret's domains. Pass only the alias; the credential value is never accepted as input or returned. Call before navigating to the protected URL.

NameTypeReqDescription
onceboolean–Answer only the next auth challenge, then disarm.
secretstringyesSecret alias from the server-side secrets vault.

No output schema declared.

No examples provided.

browser_info ~31

Get the active tab's url, title, load state, scroll position, and short workflow-memory hints when available.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

browser_list_tabs ~22

List all open tabs with their ids, urls, and titles.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

browser_login ~126

Atomically fill username/password fields from a server-side secret alias and submit the login form. Pass only refs and the secret alias; secret values are never accepted as tool input or returned.

NameTypeReqDescription
password_refstringyesPassword field ref, e.g. e12, from browser_snapshot.
secretstringyesSecret alias from the server-side secrets vault.
submit_refstring–Submit button ref. If omitted, the password field's enclosing form is submitted.
username_refstring–Username field ref. Filled only when provided and the secret has a username.

No output schema declared.

No examples provided.

browser_mock_geolocation ~91

Make navigator.geolocation return a fixed position (so location-gated tasks proceed without the native permission prompt). Pass clear=true to stop mocking. Applies to the current page; re-set after navigation.

NameTypeReqDescription
accuracynumber–Accuracy in meters (default 20).
clearboolean–Stop mocking and restore real geolocation.
latitudenumber––
longitudenumber––

No output schema declared.

No examples provided.

browser_native_dialog ~133

Inspect or operate a NATIVE browser dialog that no extension can touch — the file picker, print dialog, basic-auth popup, or 'Leave page?'. action='list' shows the dialog's buttons; 'click_button' presses one by name (e.g. 'Open', 'Save', 'Don't Save'); 'set_text' types into the focused dialog field. macOS only; needs Accessibility permission.

NameTypeReqDescription
actionstring––
buttonstring–Button label for click_button.
processstring–Process name (default firefox).
textstring–Text for set_text.

No output schema declared.

No examples provided.

browser_native_status ~50

Report which OS-level input capabilities are available (trusted keystrokes, native-dialog control, raw clicks) and any setup needed. Check this before relying on the browser_os_* / browser_native_dialog tools.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

browser_navigate ~43

Navigate the active tab to a URL and wait for it to finish loading.

NameTypeReqDescription
timeoutnumber––
urlstringyesFull URL including https://

No output schema declared.

No examples provided.

browser_network_log ~120

Inspect recent network requests (method, URL, status, type, errors) the browser made. Use to diagnose why a button 'did nothing', find an API endpoint, or confirm a request succeeded.

NameTypeReqDescription
filterstring–Only requests whose URL contains this substring.
limitnumber–Max requests to return (default 50).
onlyErrorsboolean–Only failed requests (network error or status >= 400).
typestring–Resource type, e.g. xmlhttprequest, script, document, image.

No output schema declared.

No examples provided.

browser_new_tab ~31

Open a new tab, optionally at a URL, and make it active.

NameTypeReqDescription
urlstring––

No output schema declared.

No examples provided.

browser_os_click ~81

Click at absolute screen coordinates with a REAL OS mouse event. Prefer browser_click; use this only for trusted clicks or native chrome. macOS only; raw clicks need `brew install cliclick`.

NameTypeReqDescription
buttonstring––
countnumber–2 = double-click.
xnumberyes–
ynumberyes–

No output schema declared.

No examples provided.

browser_os_click_ref ~174

Click a page element by ref with a REAL, OS-trusted mouse event (for elements that ignore synthetic clicks). Computes the element's on-screen position via the connected browser, raises its window, then clicks. On Firefox coordinates are exact; on Chrome they are approximate (refused unless allowApproximate is set) and iframe elements are not supported. macOS only; needs cliclick + Accessibility permission.

NameTypeReqDescription
allowApproximateboolean–Chrome only: opt in to clicking at APPROXIMATE screen coordinates (no exact viewport-origin API exists there). Only set this after visually confirming the window is a normal browser window (no docked…
buttonstring––
countnumber––
refstringyes–

No output schema declared.

No examples provided.

browser_os_key ~66

Press a REAL OS key (Enter, Tab, Escape, ArrowDown, F1-F8, or a single char), optionally with modifiers. For native UI and isTrusted-checking pages. macOS only.

NameTypeReqDescription
keystringyes–
modifiersarray––

No output schema declared.

No examples provided.

browser_os_type ~83

Type text using REAL OS keystrokes into whatever currently has focus. Use only when in-page typing fails because the element checks event.isTrusted (some payment fields, editors, games). Focus the field first (e.g. browser_click), then call this. macOS only; needs Accessibility permission.

NameTypeReqDescription
modifiersarray––
textstringyes–

No output schema declared.

No examples provided.

browser_paste ~81

Paste into an element by ref as a real paste event — rich editors (Google Docs, Notion, contenteditable) handle this better than typing. Pastes the given text, or the current clipboard contents when text is omitted.

NameTypeReqDescription
refstringyes–
textstring–Text to paste. Omit to paste the current clipboard contents.

No output schema declared.

No examples provided.

browser_press_key ~53

Press a key (Enter, Tab, Escape, ArrowDown, etc.). Optionally target an element by ref; otherwise the focused element receives it.

NameTypeReqDescription
keystringyes–
refstring––

No output schema declared.

No examples provided.

browser_read_text ~52

Get the visible text of the page (or of one element by ref). Use for reading article/content; use browser_snapshot for interactive structure.

NameTypeReqDescription
maxCharsnumber––
refstring––

No output schema declared.

No examples provided.

browser_reload ~13

Reload the active tab.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

browser_request_human_help ~142

Hand control to the human for something automation must not or cannot do — CAPTCHAs, anti-bot 'verify you're human' walls, 2FA approvals, or a deliberate judgment call. Sends a desktop notification and returns a message you should relay to the user, then STOP and wait for them to act before continuing. Do not attempt to bypass CAPTCHAs yourself.

NameTypeReqDescription
messagestringyesWhat you need the human to do, e.g. 'Solve the CAPTCHA on the login page, then tell me to continue.'
reasonstring–Short category, e.g. 'captcha', '2fa', 'permission'.

No output schema declared.

No examples provided.

browser_save_pdf ~59

Save the current tab as a PDF to the downloads folder (dialog-free). Useful to capture a rendered page. If your Firefox build still shows a save dialog, use browser_native_dialog to confirm it.

NameTypeReqDescription
filenamestring–Optional output filename.

No output schema declared.

No examples provided.

browser_screenshot ~40

Capture a PNG screenshot of the visible part of the active tab. Use only when the snapshot is insufficient (e.g. canvas, charts, visual layout).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

browser_scroll ~112

Scroll the page or a specific scrollable container. Pass a ref to scroll that container (inner panes, virtualized/infinite lists); omit it to scroll the window. Use to='bottom' to jump to the end (e.g. trigger infinite-scroll loading).

NameTypeReqDescription
amountnumber––
directionstring––
refstring–Scroll this container (or, with no direction/to, just reveal it).
tostring–Jump to the top or bottom of the target.

No output schema declared.

No examples provided.

browser_select ~37

Choose an option in a <select> dropdown by visible label or value.

NameTypeReqDescription
refstringyes–
valuestringyes–

No output schema declared.

No examples provided.

browser_select_tab ~32

Make a tab active by id (the agent acts on the active tab).

NameTypeReqDescription
tabIdnumberyes–

No output schema declared.

No examples provided.

browser_set_dialog_policy ~118

Set how native JS dialogs are auto-answered so they never block the agent. accept=true confirms (default), promptText sets what prompt() returns, suppress=true neutralizes 'Leave page?' beforeunload guards. Applies to the current page; re-set after navigation if needed.

NameTypeReqDescription
acceptboolean–Answer confirm()/prompt() affirmatively (default true).
promptTextstring–Value returned from prompt() when accepted.
suppressboolean–Neutralize beforeunload 'leave page?' guards (default true).

No output schema declared.

No examples provided.

browser_snapshot ~96

Capture an accessibility/DOM snapshot of the active Firefox tab as a structured tree. Each interactive element gets a stable [ref=eN] handle. USE THIS to understand the page before acting, and re-run it after the page changes — refs become stale after navigation or DOM updates. If workflow-memory hints appear, call browser_workflow_recall before continuing.

NameTypeReqDescription
maxNodesnumber–Max nodes to include (default 1500).

No output schema declared.

No examples provided.

browser_status ~31

Check the bridge connection and the current active tab. If the active tab has workflow memories, this returns short hints.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

browser_type ~75

Focus a text field by ref and type text into it. Set submit=true to press Enter afterward (e.g. to submit a search).

NameTypeReqDescription
clearboolean–Clear the field first (default true).
refstringyes–
submitboolean–Press Enter after typing.
textstringyes–

No output schema declared.

No examples provided.

browser_upload_file ~163

Attach local file(s) to the page WITHOUT opening the OS file picker (the picker cannot be automated — never click elements that open it). Pass the ref of a file input (hidden ones appear in snapshots as 'file-input ... [hidden]'), or of an upload button/dropzone near it, plus absolute local file paths. Sets the input's files directly, or simulates a drag-and-drop when no file input is found.

NameTypeReqDescription
modestring–auto (default): find and fill the file input. drop: force a drag-and-drop onto the ref'd element (for dropzones).
pathsarrayyesAbsolute paths of local files to attach.
refstringyesRef of the file input, upload button, or dropzone.

No output schema declared.

No examples provided.

browser_wait ~26

Wait a fixed number of milliseconds (use sparingly).

NameTypeReqDescription
msnumberyes–

No output schema declared.

No examples provided.

browser_wait_for_text ~38

Wait until the given text appears anywhere on the page (or timeout).

NameTypeReqDescription
textstringyes–
timeoutnumber––

No output schema declared.

No examples provided.

Install

How do I install the io.github.Savvy-Tech-Sphere/usable-browser-agent MCP server?

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

npm · usable-browser-agent

# add to Claude Code
claude mcp add savvy-tech-sphere-usable-browser-agent -- npx -y usable-browser-agent
Common questions

What is the io.github.Savvy-Tech-Sphere/usable-browser-agent MCP server?

io.github.Savvy-Tech-Sphere/usable-browser-agent is an MCP server listed in the public MCP registry as io.github.Savvy-Tech-Sphere/usable-browser-agent. MCP server and Firefox add-on that let an AI agent drive your real, logged-in browser. Free tier. This page covers its npm package (usable-browser-agent).

Is the io.github.Savvy-Tech-Sphere/usable-browser-agent MCP server safe to use?

io.github.Savvy-Tech-Sphere/usable-browser-agent scores 75 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.Savvy-Tech-Sphere/usable-browser-agent MCP server expose?

io.github.Savvy-Tech-Sphere/usable-browser-agent exposes 53 tools: browser_workflow_recall, browser_workflow_remember, browser_workflow_forget, browser_native_status, browser_os_type, and 48 more. Their descriptions and schemas cost roughly 3,771 tokens of context every time the server is loaded.

Is the io.github.Savvy-Tech-Sphere/usable-browser-agent MCP server still maintained?

io.github.Savvy-Tech-Sphere/usable-browser-agent 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.