For agents

The signed-in tab, for your AI client

omnisnap-mcp reads the Chrome window you already have open, including a page behind SSO, and returns selectors ranked to survive the next redeploy. It does not drive the browser. The one tool that can click asks you first.

  1. 01 Add the server to your AI client. The same command works everywhere.
  2. 02 In the extension, turn on Connect to AI and type the six-digit code your client shows. Once.

Needs OmniSnap AI Studio 1.9 or later, Chrome 116 or newer, and Node.js 18 or newer. Package: npm. Source: GitHub.

Client config mcp.json
{
  "mcpServers": {
    "omnisnap": {
      "command": "npx",
      "args": ["-y", "omnisnap-mcp"]
    }
  }
}
Install

Where the config goes

Anything that speaks MCP over stdio takes the same command. These are the usual files.

MCP client config locations
Client Where it goes
Claude Code claude mcp add omnisnap -- npx -y omnisnap-mcp
Claude Desktop claude_desktop_config.json in Application Support on macOS, or %APPDATA%\Claude\ on Windows.
Cursor ~/.cursor/mcp.json, or .cursor/mcp.json in a project.
VS Code .vscode/mcp.json
Windsurf ~/.codeium/windsurf/mcp_config.json
Cline cline_mcp_settings.json, from the MCP Servers pane.
Codex ~/.codex/config.toml
Goose Settings, Extensions, Add, as a stdio command.
Tools

Twenty-two tools, three agreements

The tier is who has to agree. Reading needs no extra permission. Moving the camera changes what is on screen. Acting waits for a real click from you.

It reads

Tools that do not change the page
Tool What comes back
omnisnap_status Whether the bridge is paired, and how to fix it if not.
annotate_interactive A numbered screenshot, a selector for each number, and how much of the page you are seeing.
collect_selectors Every selector for an element, ranked, with the reason, and counted on the live page.
get_page_object A page object for Playwright, Selenium, Cypress or WebdriverIO.
verify_selectors Which of your existing selectors have rotted.
read_page The page as text, with a heading outline.
capture_page A screenshot of the page.
capture_element A screenshot of one element.
capture_matrix The page at three widths, side by side.
get_diagnostics Web Vitals, failed requests, console errors and storage.
watch_page Waits, then reports the errors, failed requests and layout shifts that happened.
get_design_tokens Palette with a contrast audit, type scale and spacing.
measure_accessibility WCAG failures, with selectors.
inspect_element Box model and computed styles for one element.
list_tabs Which tabs can be read.

It moves the camera

These change what is on screen, not what the page contains. One capture covers one viewport. On a long page that is a few percent of it.

Tools that change the view
Tool What it does
scroll_to See the rest of the page.
set_viewport Hold the page at 375, 768 or 1440, so later tools answer about that width.
set_color_scheme Light or dark. Dark mode is where contrast regressions hide.
hover Photograph a dropdown or a tooltip. An ordinary capture never sees them.
focus_element Photograph a focus ring.

It asks before it acts

Tools that wait for you
Tool What it does
propose_action Proposes a click or a keystroke. The extension outlines the element on the page. Nothing happens unless you approve.
await_user_selection You click the element you mean. The client gets it, with ranked selectors.

After annotate_interactive numbers an element, the other tools accept element: 5 instead of a selector you would otherwise retype.

Prompts

Four ways to start

Slash commands the server ships, so the client does not have to invent the job.

  • /write-test
  • /file-bug
  • /audit-accessibility
  • /extract-design-system
Limits

Off until you turn it on

The bridge binds to localhost. No web page can reach it. Pairing needs a code you carry across by hand. If your client is not showing a code, type nothing.

0 outside reach

The server listens on 127.0.0.1. A page in the browser cannot open that socket.

6 digits, by hand

You read the code from your AI client and type it into the extension. Single use.

A click you make

Approve accepts a real click from you. A script on the page cannot forge that.

No telemetry

No account and no remote config. The pairing token stays in a file on your machine.

The bridge stays on your machine. The AI client you pair is a different program. If that client uses a cloud model, the page you asked it to look at reaches that model. Leave Connect to AI off and nothing about the extension changes.

First-run check terminal
npx omnisnap-mcp --doctor

--doctor checks the port, then waits and prints the code to type. The extension guide on the homepage shows the same pairing in the product. Capture help lives on Support.

The extension comes first

The server has nothing to read until OmniSnap AI Studio is installed and Connect to AI is on. The shortcut is Alt + Shift + S.