UI Verify is an MCP server with 9 tools an agent can call, among them accept_build, get_build, get_diff. It answers at https://uiverify.ai/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 11 September 2026; the last check, on 22 October 2026, succeeded.
Visual testing for coding agents: your agent sees every UI change it makes and triages each diff.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
accept_build | Accept 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 Inputs: commitSha, prNumber, buildId |
get_build | Triage 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 Inputs: commitSha, prNumber, buildId |
get_diff | Per-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 t Inputs: commitSha, prNumber, buildId, storyId |
get_pr_changeset | The 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 (thi Inputs: commitSha, prNumber, buildId |
list_build_stories | Page 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 stor Inputs: commitSha, prNumber, buildId, status, cursor, limit |
list_builds | Recent UI Verify builds for your 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 Inputs: branch, status, limit |
list_pr_stories | Page 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='c Inputs: commitSha, prNumber, buildId, kind, cursor, limit |
render_diff_image | Fetch 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). T Inputs: diffResultId, which, commitSha, prNumber, buildId, storyId |
review_diff | Record 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 ba Inputs: diffResultId, decision |
Every block below points at https://uiverify.ai/mcp. Pick your client and copy.
claude mcp add --transport http ui-verify https://uiverify.ai/mcp
{
"mcpServers": {
"ui-verify": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://uiverify.ai/mcp"]
}
}
}{
"mcpServers": {
"ui-verify": {
"url": "https://uiverify.ai/mcp"
}
}
}{
"servers": {
"ui-verify": {
"type": "http",
"url": "https://uiverify.ai/mcp"
}
}
}{
"context_servers": {
"ui-verify": {
"url": "https://uiverify.ai/mcp"
}
}
}{
"mcpServers": {
"ui-verify": {
"serverUrl": "https://uiverify.ai/mcp"
}
}
}{
"mcpServers": {
"ui-verify": {
"url": "https://uiverify.ai/mcp"
}
}
}name: UI Verify
version: 0.0.1
schema: v1
mcpServers:
- name: UI Verify
type: streamable-http
url: https://uiverify.ai/mcp{
"mcpServers": {
"ui-verify": {
"httpUrl": "https://uiverify.ai/mcp"
}
}
}{
"mcpServers": {
"ui-verify": {
"type": "http",
"url": "https://uiverify.ai/mcp"
}
}
}{
"mcpServers": {
"ui-verify": {
"url": "https://uiverify.ai/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fuiverify.ai%2Fmcp&type=streamable_http&id=ui-verify&name=UI%20Verify
It answered our last check on 22 October 2026 in 287 ms. Over 6 checks since 11 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.
9, as returned by the server's own tools/list on 14 September 2026: accept_build, get_build, get_diff, get_pr_changeset, list_build_stories, list_builds, list_pr_stories, render_diff_image, and 1 more.
It answered our last check on 22 October 2026 in 287 ms. Over 6 checks since 11 September 2026 it answered 6.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://uiverify.ai/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: io.github.igrlk. Endpoint host: uiverify.ai. ARD identifier: urn:air:io.github.igrlk:mcp:uiverify.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.