npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@nyx-intelligence/val-mcp

v0.12.0

Published

Val: a 100% MCP QA agent for vibecoders. Drives a real browser to catch UX bugs (broken links, 404s, console errors, broken images) so your coding agent can fix them.

Readme

Val: QA agent for vibecoded apps

Val is a paid MCP server that turns your coding assistant (Claude, Cursor, Codex, Windsurf) into a real QA engineer. It drives a real browser, reads your pull requests, runs deep audits, and files findings as PR comments with screenshots and reproduction steps.

npx -y @nyx-intelligence/val-mcp     # MCP server on stdio

Requires VAL_LICENSE_KEY. Subscribe at val.nyx-intelligence.com.

What makes Val different

Val is host-driven. The reasoning happens in your IDE's agent (Claude Opus 4.7, GPT-5, Cascade), and Val supplies the eyes, hands, and notebook:

  • Eyes: real Chromium via Playwright. Screenshots, DOM, console, network.
  • Hands: click every button, fill every form, walk multi-step funnels.
  • Notebook: read PR diff via gh, file findings as PR comments, dedupe against existing issues, sign 30-day screenshot URLs in Supabase.

You do not pay for an LLM on top of Val. Your coding agent does the reasoning over Val's structured output.

Install (MCP)

Add to your MCP client config (Claude Code, Cursor, Windsurf, Codex):

{
  "mcpServers": {
    "val": {
      "command": "npx",
      "args": ["-y", "@nyx-intelligence/val-mcp"],
      "env": { "VAL_LICENSE_KEY": "vk_..." }
    }
  }
}

First run downloads Chromium if needed (npx playwright install chromium).

Tools

Passive crawl

| Tool | What it does | |---|---| | val_scan | Crawl an app, same-origin links, report broken links, JS errors, broken images, layout overflow, CLS, a11y essentials | | val_scan_devices | Same crawl on multiple device profiles (desktop, iPhone 14, Pixel 7). Mobile-only and desktop-only bugs are tagged accordingly | | val_check | Re-run passive checks on a single page (fix verification) | | val_screenshot | Capture a PNG of a URL (full-page or viewport, optional device emulation) |

Interactive session

| Tool | What it does | |---|---| | val_open | Open a URL in the persistent browser session | | val_snapshot | List every clickable / fillable element with a stable [ref] | | val_click | Click an element by [ref] or visible text. Reports nav, mutations, errors | | val_type | Fill an input by [ref] or label | | val_exercise | Click every visible button on the current page, flag dead controls | | val_exercise_forms | Find every form, fill it with plausible data, submit, classify outcome | | val_state | Current URL + title + any errors since the last action | | val_close | Close the browser session |

Agentic QA

| Tool | What it does | |---|---| | val_review | One-shot: pass a URL or PR, Val runs the full battery and returns a structured report (status green / yellow / red, findings, markdown summary), posts to the PR if the target is one | | val_pr_context | Read a PR via gh: title, body, files, diff, commits, linked issues, preview URL | | val_describe | Structured snapshot of a page for the LLM: screenshot (signed 30d URL), DOM outline, visible text, console / page / network errors | | val_act | Execute a planned sequence (click / type / scroll / wait / open / screenshot), returns a transcript with a screenshot per step | | val_invariants | Watch a page for NaN / undefined / null / [object Object] / 5xx / page errors | | val_a11y_audit | Run axe-core (WCAG 2.0/2.1 A + AA + best-practice). Returns each violation with impact, help, offending elements | | val_lighthouse | Run a full Lighthouse audit (performance, accessibility, best-practices, SEO). Returns category scores and the core Web Vitals (LCP, FCP, TBT, CLS, Speed Index, TTI) | | val_capture_network | Record every HTTP request the page fires for N seconds. Catches the "HTTP 200 with { ok: false }" class of bug | | val_console | Record every console.log / warn / error / info plus uncaught errors for N seconds | | val_compare | Snapshot two URLs (before / after) and diff their visible text. The host LLM judges if a fix actually landed | | val_login | Log into an app with an email and password so every subsequent val tool runs as the authenticated user | | val_detect_paywall | Detect Stripe, Paddle, LemonSqueezy, or Gumroad on the current page. Reports mode (test / live for Stripe) and whether Val can safely bypass with a test card | | val_pay_stripe_test | If Stripe is in test mode, fill the Elements iframe with the 4242 test card. Refuses on live mode so a real charge never fires | | val_file_finding | Post a finding as a PR comment (updating in place) or open a new issue | | val_dedupe | Search existing issues before filing a duplicate | | val_verify_fix | Bundle: read PR, infer touched routes, run describe + invariants on each, return for LLM judgement |

End-to-end agentic loop

You: "Test PR #42 on val.nyx-intelligence.com"

Claude → val_pr_context(#42)
  → "PR changes apps/web/src/app/checkout/page.tsx. Preview = pr-42.vercel.app."

Claude → val_describe(pr-42.vercel.app/checkout)
  → Screenshot + DOM. "Pay button looks like a placeholder Lorem ipsum."

Claude → val_act(pr-42.vercel.app/checkout, [
    { action: "click", target: "Pay" },
    { action: "type", target: "card", text: "4242 4242 4242 4242" },
    { action: "click", target: "Confirm" }
  ])
  → Transcript. "After Confirm, page went blank. Console error: undefined is not a function."

Claude → val_capture_network(pr-42.vercel.app/checkout, 8000)
  → "POST /api/checkout responded HTTP 200 with body { ok: false, error: STRIPE_KEY missing }."

Claude → val_dedupe("owner/repo", "checkout undefined function")
  → "No existing issue."

Claude → val_file_finding(#42, {
    title: "Checkout fails with undefined error on Pay",
    body: "Repro: ...",
    screenshotUrl: "<from val_act>"
  })
  → PR comment posted.

Push the fix → Claude calls val_verify_fix(#42) → bundle → LLM judges "fixed" or "still broken".

Configuration

| Env var | Purpose | |---|---| | VAL_LICENSE_KEY | Your vk_... license. Required for every call. | | VAL_API_BASE | Override the Val backend (default https://val.nyx-intelligence.com). For self-hosted only. |

The gh CLI must be installed and authenticated (gh auth login) on the machine running Val. PR comments and issues are posted as the authenticated user. A managed nyx-intelligence GitHub App is on the roadmap.

Test without an MCP client

val-mcp scan https://example.com 20
val-mcp scan-devices https://example.com "desktop,iPhone 14" 10
val-mcp exercise https://example.com
val-mcp exercise-forms https://example.com

License

Source-available, commercial use requires an active Val subscription.