Atlas / MCP servers / 263311487-ux / dsh-verify

dsh-verifySAFE

mcp/263311487-ux/dsh-verify

Browser acceptance checks for agent-built web apps. Zero-key starter, CLI, MCP and GitHub Action; inspect explicit assertions and reports.

Verdict
SAFE
Grade
B
Trust score
89 /100
Exposed tools
5 3r · 2w · 0d
Transport
stdio
License
MIT
Stars
2
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

中文 | English

Witness — Check the behavior your browser spec describes. Browser assertions can expose some implementation gaps; they do not prove an app is complete or independently reviewed. (Witness is the product name; `dsh-verify` is the package name — same thing.)

[](https://github.com/263311487-ux/dsh-verify/actions/workflows/ci.yml) [](https://www.npmjs.com/package/dsh-verify) [](https://glama.ai/mcp/servers/263311487-ux/dsh-verify) [](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) [](https://github.com/263311487-ux/dsh-verify/stargazers) [](https://github.com/263311487-ux/dsh-verify/actions/workflows/self-acceptance.yml)

If Witness catches something for you, ⭐ [star the repo](https://github.com/263311487-ux/dsh-verify) — it's how this project stays alive.

You asked an AI to build a web app. It said "done." Does it actually work?

dsh-verify opens a real browser and checks — so you never have to take the agent's word for it.

First success — no API key

Requires Node.js 20+ and a one-time Chromium download. Install the current npm release with npm install --save-dev [email protected], then run npx dsh-verify init. Alternatively, run from a clone checkout:

git clone https://github.com/263311487-ux/dsh-verify && cd dsh-verify
npm ci
npx playwright install chromium
node bin/verify.mjs init
cd dsh-verify-starter
node ../bin/verify.mjs --spec dsh-verify.spec.json
# PASS (5/5), exit 0 -> dsh-
Read from source at commit 210d5071dd95OBSERVED · 2026-10-12
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (npm)
claude mcp add dsh-verify -- npx -y [email protected]
03

Exposed tools (5)

3 read · 2 write · 0 destructive.

ToolRiskDescription
dsh_verifyreadWitness — independent browser acceptance testing for agent-built web apps. Runs the dsh-verify CLI (real browser; PASS/FAIL with evidence receipts). Use when the agent built or changed a web app and must prove it works in a real browser.
generate_and_verifyreadAI-drafts an acceptance checklist for a URL (LLM writes it, a real browser executes it), then immediately runs it in real Chromium.
healthwriteCheck that the dsh-verify MCP server and its Chromium browser are ready to run verifications.
verify_specwriteRun a dsh-verify acceptance spec (JSON file, or glob) against a real headless Chromium.
verify_urlreadVerify a live URL against a list of human-style checks, driven by a real headless Chromium.
04

Trust audit

SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (3 observation(s))
Shell
declared (5 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (6)

MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
bin/verify.mjs:98
return { url: `http://127.0.0.1:${server.address().port}`, close: () => server.close() };
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
evidence/buggy-report.html:29
<div class="detail">http://127.0.0.1:63342/index.html</div></div></div>
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
evidence/fixed-report.html:29
<div class="detail">http://127.0.0.1:63346/index.html</div></div></div>
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
tests/gen.test.mjs:50
baseUrl = `http://127.0.0.1:${server.address().port}`;
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
tests/gen.test.mjs:106
baseUrl = `http://127.0.0.1:${server.address().port}`;
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/sdk, playwright, pngjs
Why it matters. 3 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha 210d5071dd95full audit observations/trust-audit/mcp-server/263311487-ux__dsh-verify.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-12210d5071dd95SAFEB89first audit
06

Questions

What is the dsh-verify MCP server?

Browser acceptance checks for agent-built web apps. Zero-key starter, CLI, MCP and GitHub Action; inspect explicit assertions and reports.

What tools does dsh-verify expose?

5 in total: 3 read-only, 2 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is dsh-verify safe to connect to an agent?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B.

What credentials does dsh-verify need?

It reads DEEPSEEK_API_KEY, LLM_API_KEY and OPENAI_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does dsh-verify run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as dsh-verify at 0.9.6.

How current is this page?

The grade is for one exact copy of the source (210d5071dd95), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement