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.YawLabs/vew-mcp

NPM · @YAWLABS/VEW-MCP · SCANNED AUG 7

Browser MCP: drive a real Chromium via Playwright with compact ref-addressable page snapshots

Available components

+65 this week 66 Trust /100
Trust breakdown (6 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 →

Supply Chain Security87
  • No malware found by supply-chain analysis.Pass
  • Known CVEs were checked across the 97 of 101 dependencies we could resolve, so this covers what we could see, not the whole tree.Partial
  • No install/post-install scripts declared.Pass
  • Dependency health was assessed across the 97 of 101 dependencies we could resolve, so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency19
Schema Quality & AI Usability74
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2301 tokens (~143/item across 16 items; 16 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 Management40
  • Stability observed for 12 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

npm · @yawlabs/vew-mcp

# add to Claude Code
claude mcp add yawlabs-vew-mcp -- npx -y @yawlabs/vew-mcp
# add to Codex CLI
codex mcp add yawlabs-vew-mcp -- npx -y @yawlabs/vew-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "yawlabs-vew-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@yawlabs/vew-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add yawlabs-vew-mcp --command npx --arg -y --arg @yawlabs/vew-mcp
# ~/.hermes/config.yaml
mcp_servers:
  yawlabs-vew-mcp:
    command: "npx"
    args: ["-y", "@yawlabs/vew-mcp"]
// mcp.json
{
  "mcpServers": {
    "yawlabs-vew-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@yawlabs/vew-mcp"
      ]
    }
  }
}
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.

  • 7 Aug 26 +1

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

  • 5 Aug 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.

  • 3 Aug 26 +4
    • Stability: unverified → 0.27 functional
  • 2 Aug 26 +60
    • Provenance: unverified → fail security
    • Install scripts: unverified → pass security
    • Known CVEs: unverified → partial security
    • Malware scan: unverified → pass security
    • Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
    • Schema quality: unverified → excellent functional
    • License: unverified → pass functional
    • Dependency health: unverified → partial functional
    • Maintenance: unverified → pass functional
    • MCP protocol: unverified → pass functional
    • Tool coverage: unverified → 100 functional
    • Licence: MIT functional
  • 1 Aug 26 −1
    • Dependency health: partial → unverified functional
  • 31 Jul 26 −37
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 27 Jul 26 38

    First indexed and scored.

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 7 Aug 2026 · Analysed npm/@yawlabs/[email protected]

Provenance No attestation

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

Result No attestation
Ecosystem npm
Dependencies 97 packages
Packages resolved 97
Deprecated 95
Stale 30
Tree resolution Partial

The dependency tree was only partially resolved, so these counts may be incomplete.

MCP tools · 16 exposed · ~2,301 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.

Tool Tokens
browser_back ~39

Go back one entry in the browser history, then return a fresh snapshot of the page you land on. No-op error if there is no previous entry.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

browser_click ~98

Click the interactive element addressed by `ref` (from the most recent snapshot), then return a fresh snapshot of the resulting page. Use this for buttons, links, checkboxes, tabs, menu items.

NameTypeReqDescription
refstringyesElement ref from the most recent browser_snapshot (e.g. 'e3'). Stale refs from an older snapshot are invalid.
timeout_msintegerClick timeout in ms (default 10000).

No output schema declared.

No examples provided.

browser_evaluate ~248

Evaluate a JavaScript EXPRESSION in the current page's context and return the JSON-serializable result. This is the escape hatch for reading computed state or extracting structured data the snapshot does not surface -- e.g. 'document.title', 'location.href', or '({ count: document.querySelectorAll("a").length })'. Runs in the page sandbox (not the server process). The result must be JSON-serializable; DOM nodes and functions come back empty. Arbitrary JS can also mutate the page, so this is not a read-only call. The call is bounded by timeout_ms and returns an error if the expression has not resolved by then (note: a synchronous infinite loop pins the page's JS thread, so control returns to you but the page may need a re-navigate to fully recover -- prefer terminating expressions).

NameTypeReqDescription
expressionstringyesA JavaScript expression evaluated in the page. Wrap an object literal in parens, e.g. '({a: 1})'; this is an expression, not a statement block.
timeout_msintegerMax ms to wait for the expression to resolve before returning a timeout error (default 30000).

No output schema declared.

No examples provided.

browser_file_upload ~140

Set one or more local files on the file input addressed by `ref` (from the most recent snapshot). Paths resolve on the machine running the browser. The ref must point at an <input type=file> (it appears in the snapshot as a textbox). Returns a fresh snapshot.

NameTypeReqDescription
pathsarrayyesAbsolute path(s) to the file(s) to upload, on the machine running the browser.
refstringyesElement ref from the most recent browser_snapshot (e.g. 'e3'). Stale refs from an older snapshot are invalid.
timeout_msintegerAction timeout in ms (default 10000).

No output schema declared.

No examples provided.

browser_forward ~39

Go forward one entry in the browser history, then return a fresh snapshot of the page you land on. No-op error if there is no forward entry.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

browser_get_text ~92

Return the readable text (innerText) of the current page, normalized and clamped to a character budget. Use this when you want the page content WITHOUT the interactive-element list that browser_snapshot includes.

NameTypeReqDescription
text_budgetintegerMax characters of NORMALIZED text to return (default 8000). The cap is applied after whitespace normalization, so a page with heavy indentation may produce less output than the budget.

No output schema declared.

No examples provided.

browser_handle_dialog ~291

Configure how the browser answers the next native JS dialog (alert / confirm / prompt / beforeunload), and report the most recent dialog seen. By default vew auto-ACCEPTS dialogs when driving its own launched browser (so a confirm()-gated action proceeds and alert() text is captured) and auto-DISMISSES them when attached to an existing browser (VEW_CDP_URL) so it does not hijack the human's dialogs. Pass `accept` to override that for the next dialog (and `prompt_text` to answer a prompt()); the override stays armed until a dialog actually fires (then it reverts to the mode default) or you call this again -- so if the action you expected to raise a dialog does not, re-issue or clear the override before the next one. Calling with NO arguments does NOT change the disposition -- it just reports the last dialog, leaving the mode default in place (important in attach mode, where a stray accept would auto-confirm the human's dialogs). This call never opens a dialog or changes the page.

NameTypeReqDescription
acceptbooleanAccept (true) or dismiss/cancel (false) the next dialog. Omit to leave the mode default in place (accept in launched mode, dismiss when attached).
prompt_textstringText to enter into a prompt() dialog before accepting it. Ignored when accept is false.

No output schema declared.

No examples provided.

browser_hover ~104

Hover the pointer over the element addressed by `ref` (from the most recent snapshot), then return a fresh snapshot. Use this to reveal hover-only menus, tooltips, or action icons that are not in the page until hovered.

NameTypeReqDescription
refstringyesElement ref from the most recent browser_snapshot (e.g. 'e3'). Stale refs from an older snapshot are invalid.
timeout_msintegerAction timeout in ms (default 10000).

No output schema declared.

No examples provided.

browser_navigate ~184

Navigate the persistent browser page to a URL and return a fresh snapshot of the resulting page. This is usually the first call: it loads the page and immediately gives you the ref-addressable element list + readable text so you can act without a second round-trip. Waits for the load event by default. The page renders at Playwright's default 1280x720 viewport. The snapshot lists every rendered element with a recognized interactive role (button, link, textbox, checkbox, ...), including ones below the fold; scroll only to load content injected lazily as you scroll.

NameTypeReqDescription
timeout_msintegerNavigation timeout in ms (default 30000).
urlstringyesAbsolute http(s) URL to navigate to.
wait_untilstringWhen to consider navigation finished (default 'load'). Use 'networkidle' for SPA-heavy pages.

No output schema declared.

No examples provided.

browser_press_key ~222

Press a single keyboard key, optionally on the element addressed by `ref`. Use Playwright key names: Enter, Tab, Escape, Backspace, Delete, ArrowUp/Down/Left/Right, Home, End, PageUp/PageDown, or a single character; combos use '+', e.g. 'Control+A'. With a `ref` the element is focused first (e.g. to submit a field or drive a focused widget); without one the key goes to whatever currently has focus (e.g. Escape to close a modal). Returns a fresh snapshot.

NameTypeReqDescription
keystringyesKey to press, e.g. 'Enter', 'Escape', 'ArrowDown', 'Control+A'.
refstringOptional. Element ref from the most recent browser_snapshot (e.g. 'e3'). Stale refs from an older snapshot are invalid. If omitted, the key goes to the currently focused element.
timeout_msintegerAction timeout in ms (default 10000). Applies only when a ref is given.

No output schema declared.

No examples provided.

browser_screenshot ~89

Capture a PNG screenshot of the current page and return it as an image. Defaults to the viewport; set full_page to capture the entire scrollable page. Prefer browser_snapshot for acting on the page -- a screenshot is for when you need to SEE pixels (layout, charts, visual verification).

NameTypeReqDescription
full_pagebooleanCapture the full scrollable page instead of just the viewport (default false).

No output schema declared.

No examples provided.

browser_scroll ~70

Scroll the page one viewport in the given direction, then return a fresh snapshot. Useful to bring lazily-loaded content (infinite scroll, IntersectionObserver widgets) into the DOM so it appears in the snapshot.

NameTypeReqDescription
directionstringyesScroll direction. 'top'/'bottom' jump to page extremes.

No output schema declared.

No examples provided.

browser_select_option ~152

Select an option in a native <select> dropdown addressed by `ref` (from the most recent snapshot). The `value` is matched against each option's visible label OR its value attribute. browser_type cannot fill a <select> -- use this instead. On a <select multiple>, this selects only the matching option and clears any others. Returns a fresh snapshot.

NameTypeReqDescription
refstringyesElement ref from the most recent browser_snapshot (e.g. 'e3'). Stale refs from an older snapshot are invalid.
timeout_msintegerAction timeout in ms (default 10000).
valuestringyesOption to select, matched against its visible label or its value attribute.

No output schema declared.

No examples provided.

browser_snapshot ~165

Return a compact, token-efficient view of the CURRENT page: a ref-tagged list of interactive elements (each line is `[ref] role "name"`, optionally with value/checked/disabled) followed by the readable page text. This is the core capability -- prefer it over a raw DOM dump. Refs (e1, e2, ...) are stable within this snapshot and RENUMBER on the next one; always act off the most recent snapshot. Pass a ref to browser_click / browser_type. Lists every rendered element with a recognized interactive role, including below-the-fold ones; scroll only to surface content that loads lazily on scroll.

NameTypeReqDescription
text_budgetintegerMax characters of page text to include (default 8000). Lower it to save tokens.

No output schema declared.

No examples provided.

browser_type ~138

Type `text` into the textbox/searchbox/combobox addressed by `ref` (from the most recent snapshot). The field is cleared first. Set `submit: true` to press Enter afterward (e.g. to run a search). Returns a fresh snapshot.

NameTypeReqDescription
refstringyesElement ref from the most recent browser_snapshot (e.g. 'e3'). Stale refs from an older snapshot are invalid.
submitbooleanPress Enter after typing (default false).
textstringyesText to type into the field.
timeout_msintegerAction timeout in ms (default 10000).

No output schema declared.

No examples provided.

browser_wait_for ~230

Wait for a condition on the current page, then return a fresh snapshot. Provide at least one of: `text` (wait until that text becomes visible), `text_gone` (wait until that text is no longer visible), or `time_ms` (wait a fixed time); when several are given they apply in that order. Use this after an action that triggers async / SPA rendering so the next snapshot reflects the settled page instead of racing a half-rendered DOM.

NameTypeReqDescription
textstringWait until this (substring) text becomes visible on the page.
text_gonestringWait until this (substring) text is no longer visible anywhere in the page's rendered text. Returns immediately if the text is not currently visible (so a typo or already-gone text is a fast no-op, n…
time_msintegerInstead of a text condition, just wait this many ms (max 30000).
timeout_msintegerMax time to wait for a text / text_gone condition in ms (default 10000).

No output schema declared.

No examples provided.