Skip to main content
Glama

Get per-story diff detail with image URLs

get_diff
Read-onlyIdempotent

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 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, the baseline URL as both baselineUrl and candidateUrl) - the story rendered identical to baseline. Use render_diff_image instead when you want the actual pixels inline for a vision model, not a URL. When AI review is on, each diff carries the judge's call: aiVerdict (intended|regression), aiConfidence, aiSummary (what changed), aiReasoning, and aiFlagReason; all null when AI review didn't run for it. Each diff also carries comments {total, unresolved} for THAT story - unresolved>0 means an open review note; read the thread with list_comments before accepting.

Input Schema

NameRequiredDescriptionDefault
buildIdNoResolve this exact build id.
storyIdNoLimit to one story id.
prNumberNoResolve the latest build for this PR number.
commitShaNoResolve the build for this git commit SHA.
projectIdNoThe project to look in (a projectId from list_projects). Needed only when you can access several projects; a buildId already names its project.

Output Schema

NameRequiredDescriptionDefault
noteNoPresent when this is UI Verify's demo project rather than one of yours; says how to set up your own.
diffsYes
openReviewCommentsNoPresent when open review comments are waiting on some branch of this project; read yours with list_comments.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / openReviewComments
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Present when open review comments are waiting on some branch of this project; read yours with list_comments.",
      +  "properties": {
      +    "branches": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "branch": {
      +            "type": "string"
      +          },
      +          "lastActivityAt": {
      +            "type": "string"
      +          },
      +          "open": {
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "branch",
      +          "open",
      +          "lastActivityAt"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "branchesTotal": {
      +      "type": "number"
      +    },
      +    "hint": {
      +      "type": "string"
      +    },
      +    "projectId": {
      +      "type": "string"
      +    },
      +    "total": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "total",
      +    "branches",
      +    "branchesTotal",
      +    "projectId",
      +    "hint"
      +  ],
      +  "type": "object"
      +}
  2. Changed3 schema fields changed
    • addedOutput schema / properties / diffs / items / properties / comments / description
      Added value: +"Absent on UI Verify's demo project, whose review comments only its team sees."
    • changedOutput schema / properties / diffs / items / required
      Previous value: -[
      -  "diffResultId",
      -  "storyId",
      -  "viewport",
      -  "browser",
      -  "changed",
      -  "decision",
      -  "metrics",
      -  "baselineUrl",
      -  "candidateUrl",
      -  "diffUrl",
      -  "aiSummary",
      -  "aiVerdict",
      -  "aiConfidence",
      -  "aiReasoning",
      -  "aiFlagReason",
      -  "comments"
      -]New value: +[
      +  "diffResultId",
      +  "storyId",
      +  "viewport",
      +  "browser",
      +  "changed",
      +  "decision",
      +  "metrics",
      +  "baselineUrl",
      +  "candidateUrl",
      +  "diffUrl",
      +  "aiSummary",
      +  "aiVerdict",
      +  "aiConfidence",
      +  "aiReasoning",
      +  "aiFlagReason"
      +]
    • addedOutput schema / properties / note
      Added value: +{
      +  "description": "Present when this is UI Verify's demo project rather than one of yours; says how to set up your own.",
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / projectId
      Added value: +{
      +  "description": "The project to look in (a projectId from list_projects). Needed only when you can access several projects; a buildId already names its project.",
      +  "format": "uuid",
      +  "type": "string"
      +}
  4. Changed2 schema fields changed
    • addedOutput schema / properties / diffs / items / properties / comments
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "total": {
      +      "type": "number"
      +    },
      +    "unresolved": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "total",
      +    "unresolved"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / diffs / items / required
      Previous value: -[
      -  "diffResultId",
      -  "storyId",
      -  "viewport",
      -  "browser",
      -  "changed",
      -  "decision",
      -  "metrics",
      -  "baselineUrl",
      -  "candidateUrl",
      -  "diffUrl",
      -  "aiSummary",
      -  "aiVerdict",
      -  "aiConfidence",
      -  "aiReasoning",
      -  "aiFlagReason"
      -]New value: +[
      +  "diffResultId",
      +  "storyId",
      +  "viewport",
      +  "browser",
      +  "changed",
      +  "decision",
      +  "metrics",
      +  "baselineUrl",
      +  "candidateUrl",
      +  "diffUrl",
      +  "aiSummary",
      +  "aiVerdict",
      +  "aiConfidence",
      +  "aiReasoning",
      +  "aiFlagReason",
      +  "comments"
      +]
  5. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "diffs": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "aiConfidence": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "aiFlagReason": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "aiReasoning": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "aiSummary": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "aiVerdict": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "baselineUrl": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "browser": {
      +            "type": "string"
      +          },
      +          "candidateUrl": {
      +            "type": "string"
      +          },
      +          "changed": {
      +            "type": "boolean"
      +          },
      +          "decision": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "diffResultId": {
      +            "anyOf": [
      +              {
      +                "format": "uuid",
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "diffUrl": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "metrics": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "bbox": {
      +                "anyOf": [
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "height": {
      +                        "type": "number"
      +                      },
      +                      "width": {
      +                        "type": "number"
      +                      },
      +                      "x": {
      +                        "type": "number"
      +                      },
      +                      "y": {
      +                        "type": "number"
      +                      }
      +                    },
      +                    "required": [
      +                      "x",
      +                      "y",
      +                      "width",
      +                      "height"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "changedPct": {
      +                "type": "number"
      +              },
      +              "changedPx": {
      +                "type": "number"
      +              },
      +              "changedPxAdjusted": {
      +                "type": "number"
      +              },
      +              "flakinessPx": {
      +                "type": "number"
      +              },
      +              "flakinessScore": {
      +                "type": "number"
      +              },
      +              "hadBaseline": {
      +                "type": "boolean"
      +              },
      +              "height": {
      +                "type": "number"
      +              },
      +              "sizeChanged": {
      +                "type": "boolean"
      +              },
      +              "threshold": {
      +                "type": "number"
      +              },
      +              "width": {
      +                "type": "number"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "storyId": {
      +            "type": "string"
      +          },
      +          "viewport": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "diffResultId",
      +          "storyId",
      +          "viewport",
      +          "browser",
      +          "changed",
      +          "decision",
      +          "metrics",
      +          "baselineUrl",
      +          "candidateUrl",
      +          "diffUrl",
      +          "aiSummary",
      +          "aiVerdict",
      +          "aiConfidence",
      +          "aiReasoning",
      +          "aiFlagReason"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "diffs"
      +  ],
      +  "type": "object"
      +}
  6. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources