UI Verify
MCP server for visual regression testing: triage a PR's UI diffs from your coding agent.
Connect it
Settings → Connectors → Add custom connector
URL: https://uiverify.ai/api/mcpSettings → Apps & Connectors → Advanced → Developer mode
Create connector with URL: https://uiverify.ai/api/mcp{
"mcpServers": {
"uiverify": {
"url": "https://uiverify.ai/api/mcp",
"headers": {
"Authorization": "<YOUR_AUTHORIZATION>"
}
}
}
}claude mcp add --transport http uiverify https://uiverify.ai/api/mcp --header "Authorization: <value>"{
"servers": {
"uiverify": {
"type": "http",
"url": "https://uiverify.ai/api/mcp",
"headers": {
"Authorization": "<YOUR_AUTHORIZATION>"
}
}
}
}15 tools, verified live
list_projectsread-onlyEvery UI Verify project you can access, across all the teams you are a member of, most recently built first. Each row carries the projectId to pass to list_builds, or to a commitSha/prNumber lookup, when you can access several projects, plus the team and project slugs, name, type (storybook | playwright | vitest | screenshot), repo, and lastBuildAt. Calls that take a buildId, diffResultId, or comm
list_buildsread-onlyRecent UI Verify builds for one project, newest first. Each row is a one-line verdict (gateStatus: passed | changed | failed) for a commit/PR â use it to find the build to inspect. No image URLs or per-story detail here: call get_build for the changed-story list, get_diff for images.
get_buildread-onlyTriage one build, resolved by commitSha, prNumber, or buildId (exactly one). Returns the gate verdict and counts (total/changed/failed/unchanged), then the FIRST page (25) of the changed stories (story id, viewport, % pixels changed, review decision, the AI verdict aiVerdict=intended|regression + aiConfidence, and for a regression the judge's one-line aiFlagReason=what-looks-unintended, when AI re
list_build_storiesread-onlyPage through one build's stories filtered by status (resolved by commitSha/prNumber/buildId). Use it to read past get_build's first page, or to browse the unchanged/passed stories get_build only counts. status='changed' returns changed stories (same shape + order as get_build, regression-first, each with its comments {total, unresolved}; unresolved>0 means an open review note - read it with list_c
get_pr_changesetread-onlyThe cumulative 'this PR vs base' visual changeset (resolved by commitSha/prNumber/buildId) - what the whole PR does to the UI versus the branch it merges into, INDEPENDENT of what is left to review on the latest build. Unlike get_build (this commit vs the branch's own accepted baseline), this survives in-PR accepts: a story accepted mid-PR still shows under `changed` with status=accepted, so it an
list_commentsread-onlyEvery review comment on a build's changed stories (resolved by commitSha/prNumber/buildId), each carrying its diffResultId, author (human name or 'agent'), body, createdAt, and anchor - where on the candidate image it points: null (whole diff), {type:'point',x,y}, {type:'rect',x,y,w,h}, or {type:'path',points,closed}, all normalized 0..1 to the candidate image. Use it to read what a designer/QA (o
list_pr_storiesread-onlyPage through the PR-vs-base changeset stories of one kind (resolved by commitSha/prNumber/buildId) - use it to read past get_pr_changeset's first page. kind='new' returns stories the PR adds that the base branch has no baseline for; kind='changed' returns stories whose image differs from the base branch's accepted image (even if accepted mid-PR, with status=accepted); kind='removed' returns storie
get_diffread-onlyPer-story diff detail for a build (resolved by commitSha/prNumber/buildId). Returns diff metrics and presigned, time-limited URLs (download them to a file, or link them in a PR comment) for the baseline, candidate, and diff PNGs. Defaults to the changed stories; pass storyId for one specific story. When that storyId is an UNCHANGED story it returns its baseline (diffResultId null, changed false, t
render_diff_imageread-onlyFetch a story's image as an INLINE image (base64 pixels, not a URL) so a vision model can look at it directly. Needs a native MCP client that renders image content; piped through raw curl it is useless (use get_diff's URLs there instead). Two ways to address it: (1) diffResultId + which for a CHANGED story - which is baseline|candidate|diff (the triptych) or before_after, the baseline and candidat
review_diffRecord a review on a single diff result (get diffResultId from get_build/get_diff). 'accept' makes the candidate the new baseline for that story on its branch, so the next build is clean; 'deny' records the rejection without changing the baseline; 'ignore' excludes the story from the gate persistently (the snapshot keeps differing on future builds but no longer flags the check) â use it for an i
accept_buildAccept ALL changed stories in one build at once (resolved by commitSha/prNumber/buildId), advancing each story's per-branch baseline so the next build is clean. This is the bulk form of review_diff='accept' â use it when you've decided the whole build's changes are intended. It accepts every changed story, including stories that already have a prior denied review; failed stories are unaffected.
post_commentLeave a review comment on one of a build's changed-story diffs (resolve the build by commitSha/prNumber/buildId, target the diff by diffResultId from get_build/get_diff). The comment is authored as the agent. Optionally anchor it to a spot on the candidate image with `anchor`: omit or null for a whole-diff comment, {type:'point',x,y} to pin a point, {type:'rect',x,y,w,h} for a box, or {type:'path'
update_commentReplace the body of a comment (get its id from list_comments). An agent can edit only agent-authored comments, never a human's. Requires the image comments feature.
resolve_commentMark a comment thread resolved or reopen it (get the id from list_comments). Resolving stamps the thread ROOT, so pass a root comment's id - a reply id is a no-op. Any team writer may toggle this. Requires the image comments feature.
delete_commentcan modifySoft-delete a comment (get its id from list_comments). An agent can delete only agent-authored comments, never a human's. Deleting a thread root removes its replies too. Requires the image comments feature.
Change history
Alternatives in Developer Tools
Compare →MLMicrosoft Learn MCPOfficialA
Official Microsoft Learn MCP Server – real-time, trusted docs & code samples for AI and LLMs.
GIGitHubOfficialA
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
GIGitDiagramA
Architecture diagrams, explanations and Mermaid source for public GitHub repositories.
MDMCP Docs ServerOfficialA
AI access to Mapbox docs, API references, style specs, and guides. No token required.
MGMCP GrafanaOfficialA
An MCP server giving access to Grafana dashboards, data and more.
MDMCP Devkit ServerOfficialA
Provides AI assistants with direct access to Mapbox developer APIs and documentation.