Skip to main content
Glama

@corralimited/snapdiff-mcp

Standalone MCP server for SnapDiff. Exposes four tools to local agents:

  • Compare two web pages visually — diff percentage plus a highlighted diff image

  • Capture a screenshot of any URL

  • Check whether a page changed vs. a previous capture

  • Render HTML/CSS to an image (OG cards, social images, email headers)

Hits the public SnapDiff REST API. Bring your own API key.


Quickstart

Get an API key at https://snapdiff.ai/dashboard, then drop the snippet for your agent below.

Claude Code

claude mcp add snapdiff -e SNAPDIFF_API_KEY=sk_live_... -- npx -y @corralimited/snapdiff-mcp

Or edit ~/.claude/settings.json:

{
  "mcpServers": {
    "snapdiff": {
      "command": "npx",
      "args": ["-y", "@corralimited/snapdiff-mcp"],
      "env": { "SNAPDIFF_API_KEY": "sk_live_..." }
    }
  }
}

Cursor

~/.cursor/mcp.json (or project-level .cursor/mcp.json):

{
  "mcpServers": {
    "snapdiff": {
      "command": "npx",
      "args": ["-y", "@corralimited/snapdiff-mcp"],
      "env": { "SNAPDIFF_API_KEY": "sk_live_..." }
    }
  }
}

Cline (VS Code)

Cline > MCP Servers > Edit Config:

{
  "mcpServers": {
    "snapdiff": {
      "command": "npx",
      "args": ["-y", "@corralimited/snapdiff-mcp"],
      "env": { "SNAPDIFF_API_KEY": "sk_live_..." }
    }
  }
}

Zed

~/.config/zed/settings.json:

{
  "context_servers": {
    "snapdiff": {
      "command": {
        "path": "npx",
        "args": ["-y", "@corralimited/snapdiff-mcp"],
        "env": { "SNAPDIFF_API_KEY": "sk_live_..." }
      }
    }
  }
}

Continue

~/.continue/config.yaml:

mcpServers:
  - name: snapdiff
    command: npx
    args: ["-y", "@corralimited/snapdiff-mcp"]
    env:
      SNAPDIFF_API_KEY: sk_live_...

Anything else with a generic stdio MCP slot

command: npx
args:    -y @corralimited/snapdiff-mcp
env:     SNAPDIFF_API_KEY=sk_live_...

Related MCP server: screenshot-feedback-hook-mcp

Tools

Name

Purpose

snapdiff_verify_ui_change

Checks whether a visual change matches the agent's stated intent. Returns verdict (pass / expected_change_detected / unexpected_regression / no_change_detected / needs_human_review) and a next_action. Requires a project + baseline. Use this in the verification loop.

snapdiff_compare_pages

Raw visual diff between two URLs, or a URL vs. a stored project baseline. Use for ad-hoc diffs that don't fit the verify-ui-change verdict shape.

snapdiff_capture_screenshot

Single screenshot of a URL.

snapdiff_html_to_image

Render HTML/CSS to an image (OG cards, social images, email headers).

Schemas live in src/tools/ and are exported from @corralimited/snapdiff-mcp/tools. The hosted SnapDiff backend imports the same schemas so its in-process /mcp endpoint and this standalone stdio server expose an identical surface — agents see the same tool names, descriptions, and parameters whether they connect to https://api.snapdiff.ai/mcp or run this server locally.


HTTP transport (advanced)

Besides stdio, if you're hosting an MCP gateway and need a streamable HTTP server, run with --http:

SNAPDIFF_API_KEY=sk_live_... npx @corralimited/snapdiff-mcp --http --port 8787

Then point clients at http://localhost:8787/mcp with the standard MCP HTTP transport.


Configuration

Env var

Required

Notes

SNAPDIFF_API_KEY

yes

Get one at https://snapdiff.ai/dashboard

SNAPDIFF_API_URL

no

Override the API base. Defaults to https://api.snapdiff.ai/v1.

CLI flags (HTTP mode only):

Flag

Default

Notes

--http

off

Run as a streamable HTTP server instead of stdio.

--port <n>

8787

Port for --http mode.

--host <h>

127.0.0.1

Bind address for --http mode.


License

MIT — see LICENSE.

Available Tools

6 tools
snapdiff_capture_baselineA

Capture the current state of a page as the visual baseline for a SnapDiff project. Call this once per page before using snapdiff_verify_ui_change — the baseline is the reference screenshot that all future verifications diff against.

For localhost URLs, the page is captured locally with a headless browser (no tunnel needed). For public URLs, the SnapDiff backend captures it. Returns when the baseline is confirmed in place.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject slug or ID (prj_xxx).
page_nameYesPage name within the project (e.g. "account", "homepage"). Used to match this baseline when verifying.
urlYesURL of the page to capture as the baseline. Localhost URLs are captured locally — no tunnel required.
branchNoBranch to store the baseline on. Defaults to the project's default branch.

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description carries full burden. It mentions that baseline is a reference screenshot and that the tool returns when confirmed, but does not disclose if calling multiple times overwrites the baseline or potential side effects. Adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four concise sentences with front-loaded purpose. No redundant information; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All 4 parameters are described in schema, and description adds context for two of them. No output schema, but description mentions return behavior. Adequate for a tool with moderate complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and description adds extra meaning: explains that 'url' parameter for localhost does not require a tunnel, and 'page_name' is used to match during verification. Exceeds baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool's purpose: capture current page state as a visual baseline for SnapDiff. It distinguishes from sibling tools like snapdiff_verify_ui_change by explaining it is a prerequisite.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Call this once per page before using snapdiff_verify_ui_change' and explains difference between localhost and public URLs, giving clear guidance on when to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snapdiff_capture_screenshotA

Take a screenshot of a web page. Use this when you need to see what a webpage looks like right now — to inspect layout, verify rendering, or capture a baseline for later comparison.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe full URL to screenshot
full_pageNoCapture the entire scrollable page. Default false
dark_modeNoForce dark color scheme. Default false
selectorNoCSS selector to capture only a specific element
widthNoViewport width in pixels. Default 1280

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It states 'Take a screenshot' which implies read-only, but does not elaborate on side effects, permissions, rate limits, or response format. For a simple screenshot operation, this is minimally acceptable but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero wasted words. First sentence states the action. Second sentence lists use cases. Information is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the basic purpose and usage context. However, given the presence of sibling tools with overlapping purposes, it does not hint at when to choose this tool over alternatives. No information about return values or output, which might be inferred but is not explicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds no parameter-specific information beyond the schema; it merely states the overall action. No extra semantics are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states tool takes a screenshot of a web page and lists use cases (inspect layout, verify rendering, capture baseline). It partially distinguishes from sibling 'snapdiff_capture_baseline' by emphasizing current state, but the phrase 'capture a baseline for later comparison' overlaps with that sibling's likely purpose, preventing a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear when-to-use context: 'when you need to see what a webpage looks like right now.' However, it does not mention when not to use this tool (e.g., for baseline comparison or verification) nor direct users to alternatives among siblings, leaving the agent without explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snapdiff_check_buildA

Capture every page in the list and diff them all against their baselines in one build. Use this after editing a shared component or design token to check whether the change affected pages you did not directly modify.

Returns a per-page summary of changed vs unchanged. If any page changed, a review URL is included so a human can approve or reject before the baseline moves.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject slug or ID (prj_xxx).
pagesYesPages to capture and diff. Pass every route in your page map.
branchNoBranch to look up baselines on. Defaults to the project's default branch.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the full burden of behavioral disclosure. It explains the tool captures pages, diffs against baselines, returns a per-page summary, and includes a review URL if changes are detected. It also notes that localhost URLs are captured locally without a tunnel. This adequately informs the agent about the tool's behavior without contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with no wasted words. It consists of two short paragraphs: the first defines the action and use case, the second describes the output. Every sentence adds value, and the structure is easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 parameters and no output schema, the description does a good job covering essential aspects: the batch nature, the return format (per-page summary), and the inclusion of a review URL. It also addresses the niche case of localhost. However, it does not explain what 'baselines' are or how to interpret the summary, but this is likely common knowledge in the domain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema description coverage is 100%, the description adds meaningful context beyond the schema. It advises to 'Pass every route in your page map' for the pages parameter and clarifies that localhost URLs are handled without a tunnel. This helps the agent understand the intended usage beyond the raw parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Capture every page in the list and diff them all against their baselines in one build.' It uses a specific verb ('capture' and 'diff') and identifies the resource (pages in a project). The phrase 'in one build' distinguishes it from sibling tools like snapdiff_compare_pages, which likely handles individual comparisons.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: 'Use this after editing a shared component or design token to check whether the change affected pages you did not directly modify.' This tells the agent when to use the tool and implies that for single-page changes, a different tool might be more appropriate. However, it does not explicitly list alternatives or situations to avoid.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snapdiff_compare_pagesA

Visually compare two web pages to detect differences. Use this to verify that a code change didn't break the UI, compare staging vs production, or check if a page changed. Captures both pages as screenshots, runs pixel-level comparison, and returns a diff percentage plus a highlighted diff image showing exactly what changed. This is the primary tool — use it whenever you need to verify visual output.

Two modes:

  1. Ad-hoc compare: pass before + after URLs.

  2. Baseline compare: pass after URL + project (slug or ID) + page_name. Compares against the last-accepted baseline for that page on the project's default branch. Use this when the user has set up a SnapDiff project and you want to verify a page still matches its approved state.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterYesURL of the "after" page (e.g. staging URL or localhost) — the page to check
beforeNoURL of the "before" page to compare against. Omit when using baseline mode.
projectNoProject slug or ID for baseline mode. When set with page_name, diffs against the stored baseline.
page_nameNoPage name within the project (e.g. "homepage", "pricing"). Required for baseline mode.
branchNoBranch name for baseline lookup. Defaults to the project's default branch.
thresholdNoPixel sensitivity 0.0-1.0. Lower = more sensitive. Default 0.1
ignore_selectorsNoCSS selectors to exclude from comparison (e.g. timestamps, ads)
full_pageNoCompare full scrollable pages. Default false

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description takes the full burden. It explains the process (captures screenshots, pixel-level comparison, returns diff percentage and highlighted image) and the two modes. It does not disclose potential side effects (e.g., storing screenshots) or return format details, but covers the main behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with a clear opening sentence, bullet points for modes, and every sentence adds necessary information. It is front-loaded with the core purpose, making it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 parameters, two modes, no output schema), the description covers the essential aspects: modes, parameter usage, default behavior (branch defaults to default branch), and output (diff percentage and image). It could be more explicit about the exact return format, but overall it is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The tool description adds value by explaining the two modes, which connects how parameters like `before`, `project`, and `page_name` are used together. This context goes beyond individual parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Visually compare two web pages to detect differences.' It lists specific use cases (verify code changes, compare staging vs production) and explicitly identifies itself as 'the primary tool' for visual verification, distinguishing it from its siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: 'use it whenever you need to verify visual output' and explains two modes (ad-hoc and baseline) with conditions for each. However, it does not explicitly state when not to use this tool or suggest alternatives beyond implying it is the primary one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snapdiff_html_to_imageA

Render HTML/CSS directly to an image. Use this to generate social cards, OG images, email headers, or any visual from code without needing a hosted URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
htmlYesThe HTML to render
cssNoCSS to apply
widthNoViewport width. Default 1200
heightNoViewport height. Default 630 (OG image standard)

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose any behavioral traits such as whether the tool is destructive, rate limits, authentication needs, or limitations on HTML/CSS support. This is a significant gap for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two clear sentences, front-loading the purpose and use cases. No unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, so the description should explain what is returned (e.g., image format, URL or binary). It does not. Also missing constraints on HTML content (self-contained, external resources, size limits). However, for a simple rendering tool, the core purpose is clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description adds limited value over the schema. It does provide default values for width and height (1200 and 630) and context about OG image standards, which is helpful but not essential.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool renders HTML/CSS to an image with specific use cases like social cards and OG images. It distinguishes from sibling screenshot tools by noting 'without needing a hosted URL'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use (generating images from code) and hints at alternatives (for URLs use screenshot). However, it does not name sibling tools or provide explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snapdiff_verify_ui_changeA

Verify a UI change you just made matches what you intended. Use this whenever you modify a route, page, or component and need to confirm the visual result.

Returns a verdict (pass, expected_change_detected, unexpected_regression, no_change_detected, or needs_human_review), a next_action, and a review_url. Always surface review_url to the user — it is the human-reviewable dashboard page showing the before/after/diff. Do not share raw image URLs (diff_url, before_url, after_url) — those are internal references.

Requires a SnapDiff project + page baseline. Pass intent to describe in one sentence what you meant to change. For sharper verdicts, pass intent_regions with either a CSS selector (recommended for code-editing agents — SnapDiff resolves it to a bbox during capture) or a bbox directly (when your agent drives a browser and already knows pixel coordinates).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject slug or ID (prj_xxx).
page_nameYesPage name within the project (e.g. "account", "pricing").
afterYesURL of the page after your change (preview URL, staging, or localhost).
intentYesOne sentence describing what you intended to change. Example: "added a Cancel subscription button to the bottom of the account page". Required — without it, the verdict cannot distinguish intended changes from regressions.
intent_regionsNoOptional but recommended. Hints about where on the page your change should appear. Pass `selector` (resolved server-side) or `bbox` (already in pixels) — both produce geometric verdict matching. Without intent_regions the verdict falls back to conservative `needs_human_review`.
branchNoBranch to look up the baseline on. Defaults to the project's default branch.
thresholdNoPer-pixel color sensitivity 0.0-1.0 (pixelmatch threshold). Lower = more sensitive. Default 0.1.
match_tolerance_percentNoMaximum diff percentage that still counts as 'no change.' Defaults to 0.01% for verifications (10x stricter than the diff engine's general 0.1% noise floor) so subtle styling regressions don't slip through as no_change_detected. Raise it for noisier pages, lower it for ultra-strict gates. You almost never need to set this — the default is calibrated for the agent verification flow.
ignore_selectorsNoCSS selectors to mask out before comparison (e.g. timestamps, ads, dynamic counters).
full_pageNoCompare full scrollable pages. Default false.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses key behaviors: requires a project and page baseline, explains the verdict values (pass, expected_change_detected, etc.), and instructs the agent to surface review_url while not sharing raw image URLs. It also describes how intent_regions affect verdict accuracy. While not exhaustive (e.g., missing error handling or rate limits), it provides substantial context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and usage guideline, then provides return value info, then parameter details. It is somewhat lengthy but each sentence adds value. Minor redundancy could be trimmed, but overall it is well-organized and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (10 parameters, no annotations, no output schema), the description covers the return values and gives guidance on when to use optional parameters. It assumes baseline existence, which is reasonable given sibling tools. Some missing details (e.g., how to set up a baseline) are outside the scope of this tool's description, so completeness is good.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds significant value. For 'intent', it explains why it's required ('without it, the verdict cannot distinguish intended changes from regressions'). For 'intent_regions', it details the trade-off between selector and bbox, including how selector is resolved server-side. For 'match_tolerance_percent', it explains the default and when to adjust. This goes well beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with 'Verify a UI change you just made matches what you intended.' This clearly states the action and resource. It also explains when to use it: 'Use this whenever you modify a route, page, or component and need to confirm the visual result.' The purpose is specific and distinct from sibling tools like snapdiff_capture_baseline or snapdiff_check_build.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: 'Use this whenever you modify a route, page, or component and need to confirm the visual result.' It does not explicitly mention when not to use it or provide direct alternatives, but the context is clear enough for an agent to understand the primary usage scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 6 tool updatesv0.4.2
    • First observedsnapdiff_capture_baseline
    • First observedsnapdiff_capture_screenshot
    • First observedsnapdiff_check_build
    • First observedsnapdiff_compare_pages
    • First observedsnapdiff_html_to_image
    • First observedsnapdiff_verify_ui_change

TDQS

A3.9/5.0
Disambiguation3/5

There is overlap between snapdiff_compare_pages (baseline compare mode) and snapdiff_verify_ui_change, both comparing against a baseline. Also snapdiff_capture_screenshot and snapdiff_capture_baseline both capture screenshots, but baseline is project-specific. Descriptions help disambiguate but some tools have similar functionality.

Naming Consistency4/5

All tools share the 'snapdiff_' prefix and follow a verb_noun pattern (capture_baseline, capture_screenshot, check_build, compare_pages, verify_ui_change). 'html_to_image' deviates slightly but remains clear. Overall consistent.

Tool Count5/5

With 6 tools, the set covers core visual testing workflows (baseline capture, ad-hoc screenshots, page comparison, build checks, HTML rendering, and verification with intent) without being bloated. Appropriate for the domain.

Completeness4/5

Covers main visual testing operations. Missing explicit baseline management (list, delete) or approval tools, but the review_url in verify_ui_change suggests human approval is external. Minor gap but workflow is functional.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/corralimited/snapdiff-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server