Skip to content
SnapDOMGitHub★ 8K
@zumer/snapsurf 0.1.2 · experimental

Web navigation and verification for agents.

SnapSurf tells an agent what its last action changed: a compact semantic digest of the page, a typed diff after each action, and assertions over that exact diff. It runs locally as an MCP server or CLI with its own Chromium session.

Built on SnapDOM, released from its own repository.Separate projectExperimental

What it does

  • browser_open returns a compact semantic digest of the page with element ids.
  • browser_verify returns a typed diff after each action: content, state, layout, clickability.
  • browser_assert checks that exact diff by its id, including changes beyond the displayed list.

Add it to your MCP client

{
  "command": "npx",
  "args": ["-y", "-p", "@zumer/snapsurf@latest", "snapsurf-mcp"]
}

Requires Node.js 22 or newer. The first launch installs Playwright’s Chromium. The server uses its own browser session; it does not inherit your browser’s logins.

Use it

# terminal 1: the daemon
npx -y @zumer/snapsurf serve
# terminal 2: a local smoke check
npx -y @zumer/snapsurf open 'data:text/html,<h1>Local%20check</h1>'
npx -y @zumer/snapsurf assert '{"exists":"Local check"}'
npx -y @zumer/snapsurf stop

Where it fits

A semantic diff answers whether the observed page changed. It does not replace a pixel comparison against a saved visual baseline.

SnapSurf runs its own Chromium session with its own cookies and storage, so it cannot use your everyday browser’s sign-ins. Its observation code also works as an in-page library built on SnapDOM.

Bundles its own SnapDOM runtime; installing another SnapDOM version does not replace it.

SnapSurf MCP server