SnapSweep
AIエージェント向けWeb QA:エビデンス付きの結果を伴う実ブラウザスキャン
ホスト型 MCP サーバー
npx add-mcp 'https://mcp.snapsweep.dev/mcp'Claude Code、Codex、Cursor などにインストールできます
ドキュメント
Markdown version of https://snapsweep.dev/. The HTML page is the canonical copy.
MCP server · read-only website checks
A real-browser smoke test your AI agent can run on your site.
SnapSweep is an MCP server that runs read-only checks on a public site in a real browser. It reports a failure as broken only after reproducing it. It never clicks, submits forms or logs in.
Read the docs · Pricing · For agents and tools
Install in one line · Claude Code
claude mcp add --transport http --scope user snapsweep https://mcp.snapsweep.dev/mcp --header "Authorization: Bearer YOUR_SNAPSWEEP_KEY"
--scope user makes the server available in every project. A key typed in a command line stays in your shell history; the quickstart shows how to avoid that.
Works with: Claude Code 2.1.284 on 2026-10-06, where it connected. Cursor and other clients are not yet verified; their config is in the docs.
A real scan of our demo site
- broken
- suspect
- present
- untested
The four verdict labels a finding carries today. What they mean:
- broken: Reproduced: an assertion failed and its paired control check held.
- suspect: Not proven either way. A passing check is labeled suspect too, so judge it by its outcome.
- present: The element exists. Nothing more is claimed.
- untested: The surface was not exercised.
Video of a real agent session scanning our demo site, shown sped up. The demo site is built from test pages on purpose, some of them traps meant to catch a false verdict. After the video: the four verdict labels a finding carries today, which are broken, suspect, present and untested.
What SnapSweep checks
Each check has a status. Included checks run on every scan. Limited checks run with a narrower reach than their name. Advisory results never change a verdict. Not yet means not supported today.
Browser checks
Real browser, read-only: the scan navigates, focuses and hovers. It never clicks, types or submits.
- Included Link navigation: final URL, HTTP status below 400, and the crawl stays in scope. A link is called broken only after it reproduces and its paired control check holds. Links that look state-changing (logout, delete, unsubscribe, cancel) are skipped, never followed.
- Included Focus on buttons, tabs, fields, selects, widgets, modals and collapsed disclosures; a disclosure must expand. Focus and hover only. Open shadow roots and same-origin iframes are supported.
- Included Hover: no page error or console error in the action window. Each failure is replayed (default 3 times). An ambiguous result is inconclusive, never a verdict.
- Limited UI states: explores up to 2 states per page, such as tabs, navigation and widgets. Per state, only the top 3 ranked surfaces are asserted. The next few are listed as present, not tested.
- Not yet Clicks, typing and form submits. Read-only by design. A scan never clicks, types or submits a form.
- Not yet Logins and authenticated pages. Scans reach public pages only.
- Not yet localhost and private networks. The hosted service refuses them. Each public host needs its own DNS TXT ownership proof.
- Not yet More than one browser viewport. Each scan uses one viewport. Lighthouse uses its own mobile emulation.
Page health and signals
Pages that cannot be tested are named, not skipped. Console and network signals come from assertions, not a page-load audit.
- Included Pages that fail to load, crash or time out are named with a reason and counted in pages_unusable. Never silently skipped. scan_verdict is partial or inconclusive when pages went untested.
- Included Console errors, from assertions made during each page's actions, with evidence logs. These are assertions, not a standalone page-load audit: a page is checked for console errors while the scan acts on it.
- Included Failed network requests, from assertions made during each page's actions, with evidence logs. The same limit as console errors: assertions during the scan's actions, not a standalone page-load audit.
- Not yet More than 10 pages in one scan. The hosted service caps a scan at 10 pages. A larger max_pages is clamped, and the report records a pages_capped note.
Named targets and specs
Check the elements and pages you name, or compile a spec document into assertions.
- Included Named elements: present, visible or enabled, with a per-target outcome. Element targets match by accessible role or label. Up to 50 targets per scan.
- Limited Plain CSS selectors and page targets. Playwright selector engines (chained, :has-text, xpath=) are refused. A selector that matches nothing the crawler recorded is reported not_testable.
- Limited Spec documents (markdown or plain text) compiled into source-linked assertions, with a coverage table. Compiled without a model. Cues the crawler cannot probe are reported not_testable.
- Not yet Static analysis of the site's source. The schema accepts the flag, but it never runs. The scan names it in checks_not_run.
Performance and accessibility
Lighthouse on the start page, with mobile emulation. Advisory: it never changes a verdict.
- Advisory Four category scores: performance, accessibility, best practices and SEO. Start page only. Accessibility is the Lighthouse score alone. Opt out per scan with checks.lighthouse set to false.
- Advisory Seven metrics: LCP, CLS, TBT, FCP, interactive, speed index and server response time. Measured on the start page only.
- Not yet Per-element accessibility rules. Accessibility is reported as the Lighthouse score only.
- Not yet Lighthouse on pages other than the start page. Lighthouse samples the start page only.
Security and edge
Advisory checks that cost 1 credit per scan. They are returned to agents by the tools and never change a verdict.
- Advisory Six headers: HSTS, CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy and Permissions-Policy. Deployment-enabled, with no per-scan flag.
- Advisory TLS certificate expiry: two warnings before the certificate lapses. Warnings are plain text notes, never severities or verdict inputs.
- Advisory Time to first byte (TTFB). One response's timing, sampled once per scan, never a verdict input.
Visual regression
Always on for hosted scans. Each page is compared with the previous scan of the same target.
- Advisory Per-page screenshot and DOM snapshot. Later scans diff pixels (0.5% gate) and DOM (over 10 nodes). Always on, 1 credit per page. A change gives one suspect or low finding with diff evidence. Baselines roll forward each scan, and dynamic pages can trip it.
The same list with the full limits is in the docs.
Good fit today
- Public marketing sites, docs, landing pages and the public pages of an app.
- A host where you can add one DNS TXT record (ownership proof, per exact host).
- A quick check after a deploy, or on a schedule with the report emailed to you.
Not yet
- localhost or private networks: the hosted service refuses them.
- Pages behind a login, and flows that need clicks or form submits.
- More than 10 pages in one scan.
Start in three steps
- Get a key. One API call with your email, then confirm from the email. The key is shown once, and verifying adds 1,000 free credits. Quickstart
- Connect your agent. Add
https://mcp.snapsweep.dev/mcpwith anAuthorization: Bearerheader holding your key. Claude Code is verified; Cursor and other clients are not yet. - Prove the host, then scan. SnapSweep scans only hosts you control: your agent calls
snapsweep_verify_domain, you publish one DNS TXT record, and it can start scanning. How the proof works
Broken means reproduced
SnapSweep reports broken only after an assertion failed and its paired control check held. Anything it could not prove stays unconfirmed, never a guess. It does not yet certify anything as working: judge each check by its outcome, passed or failed.
Built to be read-only
It loads pages with plain GET requests, focuses and hovers. It never clicks, submits forms or logs in, skips links whose path or query looks like logout, delete, unsubscribe or cancel, and follows your robots.txt. Scans only run on hosts you have proved you own. A data-changing link it does not recognize could still be hit, so exclude sensitive paths in robots.txt.
Results sized for an agent
Results come back paged, 50 findings at a time (100 at most) with a cursor. Ask for view: "summary" first: one small object with the verdict, exact counts and every defect. Then fetch only the findings you need.
Two optional extras build on this: scheduled scans, with each report emailed to you (monitoring), and auto-reload of credits, which is off by default. It turns on only when you opt in, and you can cancel any time (pricing).
What we can show you
-
We run it on this site. A daily scan of snapsweep.dev uses the same public service customers use, and the raw report is published, failures included.
56 passed, 0 failed, 6 inconclusive behavior checks across 10 of 10 pages tested. As of 2026-10-11 09:11 UTC. Read the full report.
-
Prices from measurements. 20 scans of one production Next.js site we operate, September 2026. Raw numbers are in pricing.json.
-
Named data processors. To help explain a finding, redacted page text (never screenshots) can go to
api.deepseek.comandopenrouter.ai. Privacy policy -
A polite crawler. It identifies itself as
SnapSweepBot/0.1and follows robots.txt. About the crawler -
Who we are. SnapSweep is a product of Loomworks Solutions LLC. To reach us, write to hello@snapsweep.dev.
What a scan costs
A 10-page scan cost about 210 credits ($0.21) with the hosted defaults (Lighthouse on) in our tests, and your site will differ. To start, a scan needs 340 credits free for 10 pages; they are held, released in full when the scan ends, and you pay for the work done. With max_credits set, a capped scan bills at most the lower of max_credits and its high estimate. Without it, the only limit is your balance, which the last step can take slightly negative. These figures are refined as more sites are measured. How billing works
Start here: docs · get a key · FAQ · For agents and tools