Skip to main content
Glama

snapdiff_verify_ui_change

Verify that a UI change matches your intended modification by comparing a page against its baseline, with intent hints to distinguish expected changes from regressions.

Instructions

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).

Input Schema

TableJSON 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.
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.

Install Server

Other Tools

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