Skip to main content
Glama

Get what changed in a UI Verify build

get_build
Read-onlyIdempotent

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 decision, the AI verdict aiVerdict=intended|regression + aiConfidence, and for a regression the judge's one-line aiFlagReason=what-looks-unintended, when AI review is on, and the story's own review-comment tally comments {total, unresolved}) and the first page of failed stories (failedStories[].kind is render when the story produced no frame, or interaction when it rendered and its play() assertion threw; failedStories[].error is the message's first line, errorTruncated marks the ones that carried more). When AI review ran, aiReview tallies how many changes look like regressions vs intended, and the changed list is ordered likely-regressions-first. changedNextCursor / failedNextCursor are non-null when there are more than 25: page the rest with list_build_stories. counts.unchanged is how many stories did NOT change and have a baseline - this triage call does NOT list them (keeps the response lean); call list_build_stories status=unchanged to browse them (e.g. to confirm a passed build's stories are 'identical to baseline'). comments is the build-wide review-comment tally {total, unresolved}: unresolved>0 means a designer/QA (or another agent) left an open note on a story - read it with list_comments BEFORE you accept. No image URLs here - call get_diff or render_diff_image for pixels. A blocked build carries blocked: relay its message (or, on the demo project, its headline and nextSteps) to your user; do not retry the build.

Input Schema

NameRequiredDescriptionDefault
buildIdNoResolve this exact build 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.
branchYes
countsYes
statusYes
blockedYesWhy a blocked build was paused and what to do next; null for any other build.
buildIdYes
aiReviewYes
commentsNoAbsent on UI Verify's demo project, whose review comments only its team sees.
prNumberYes
commitShaYes
createdAtYes
gateStatusYes
failedStoriesYes
changedStoriesYes
failedNextCursorYes
autoAcceptChangesYes
changedNextCursorYes
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. Changed2 schema fields changed
    • addedOutput schema / properties / blocked
      Added value: +{
      +  "anyOf": [
      +    {
      +      "anyOf": [
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "headline": {
      +              "type": "string"
      +            },
      +            "hints": {
      +              "items": {
      +                "anyOf": [
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "branch": {
      +                        "type": "string"
      +                      },
      +                      "kind": {
      +                        "const": "no-default-branch-baseline",
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "kind",
      +                      "branch"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "kind": {
      +                        "const": "build-exceeds-allowance",
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "kind"
      +                    ],
      +                    "type": "object"
      +                  }
      +                ]
      +              },
      +              "type": "array"
      +            },
      +            "limit": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "message": {
      +              "type": "string"
      +            },
      +            "nextSteps": {
      +              "items": {
      +                "anyOf": [
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "branch": {
      +                        "type": "string"
      +                      },
      +                      "kind": {
      +                        "const": "run-default-branch",
      +                        "type": "string"
      +                      },
      +                      "text": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "kind",
      +                      "branch",
      +                      "text"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "callUrl": {
      +                        "type": "string"
      +                      },
      +                      "email": {
      +                        "type": "string"
      +                      },
      +                      "kind": {
      +                        "const": "contact",
      +                        "type": "string"
      +                      },
      +                      "text": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "kind",
      +                      "text",
      +                      "email",
      +                      "callUrl"
      +                    ],
      +                    "type": "object"
      +                  }
      +                ]
      +              },
      +              "type": "array"
      +            },
      +            "reason": {
      +              "enum": [
      +                "allowance",
      +                "billing",
      +                "unknown"
      +              ],
      +              "type": "string"
      +            },
      +            "requested": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "resetsAt": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "resetsOn": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "statusLine": {
      +              "type": "string"
      +            },
      +            "used": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "reason",
      +            "headline",
      +            "hints",
      +            "nextSteps",
      +            "statusLine",
      +            "used",
      +            "limit",
      +            "requested",
      +            "resetsAt",
      +            "resetsOn",
      +            "message"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "headline": {
      +              "type": "string"
      +            },
      +            "hints": {
      +              "items": {
      +                "anyOf": [
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "branch": {
      +                        "type": "string"
      +                      },
      +                      "kind": {
      +                        "const": "no-default-branch-baseline",
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "kind",
      +                      "branch"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "kind": {
      +                        "const": "build-exceeds-allowance",
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "kind"
      +                    ],
      +                    "type": "object"
      +                  }
      +                ]
      +              },
      +              "type": "array"
      +            },
      +            "nextSteps": {
      +              "items": {
      +                "anyOf": [
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "branch": {
      +                        "type": "string"
      +                      },
      +                      "kind": {
      +                        "const": "run-default-branch",
      +                        "type": "string"
      +                      },
      +                      "text": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "kind",
      +                      "branch",
      +                      "text"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "callUrl": {
      +                        "type": "string"
      +                      },
      +                      "email": {
      +                        "type": "string"
      +                      },
      +                      "kind": {
      +                        "const": "contact",
      +                        "type": "string"
      +                      },
      +                      "text": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "kind",
      +                      "text",
      +                      "email",
      +                      "callUrl"
      +                    ],
      +                    "type": "object"
      +                  }
      +                ]
      +              },
      +              "type": "array"
      +            },
      +            "reason": {
      +              "enum": [
      +                "allowance",
      +                "billing",
      +                "unknown"
      +              ],
      +              "type": "string"
      +            },
      +            "statusLine": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "reason",
      +            "headline",
      +            "hints",
      +            "nextSteps",
      +            "statusLine"
      +          ],
      +          "type": "object"
      +        }
      +      ]
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Why a blocked build was paused and what to do next; null for any other build."
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "buildId",
      -  "commitSha",
      -  "branch",
      -  "prNumber",
      -  "status",
      -  "gateStatus",
      -  "autoAcceptChanges",
      -  "createdAt",
      -  "counts",
      -  "aiReview",
      -  "changedStories",
      -  "changedNextCursor",
      -  "failedStories",
      -  "failedNextCursor"
      -]New value: +[
      +  "buildId",
      +  "commitSha",
      +  "branch",
      +  "prNumber",
      +  "status",
      +  "gateStatus",
      +  "autoAcceptChanges",
      +  "createdAt",
      +  "blocked",
      +  "counts",
      +  "aiReview",
      +  "changedStories",
      +  "changedNextCursor",
      +  "failedStories",
      +  "failedNextCursor"
      +]
  3. Changed5 schema fields changed
    • addedOutput schema / properties / changedStories / items / properties / comments / description
      Added value: +"Absent on UI Verify's demo project, whose review comments only its team sees."
    • changedOutput schema / properties / changedStories / items / required
      Previous value: -[
      -  "diffResultId",
      -  "storyId",
      -  "title",
      -  "name",
      -  "viewport",
      -  "browser",
      -  "changedPct",
      -  "decision",
      -  "isNew",
      -  "unstable",
      -  "aiVerdict",
      -  "aiClassification",
      -  "aiIntroducedBy",
      -  "aiConfidence",
      -  "aiSummary",
      -  "aiFlagReason",
      -  "comments"
      -]New value: +[
      +  "diffResultId",
      +  "storyId",
      +  "title",
      +  "name",
      +  "viewport",
      +  "browser",
      +  "changedPct",
      +  "decision",
      +  "isNew",
      +  "unstable",
      +  "aiVerdict",
      +  "aiClassification",
      +  "aiIntroducedBy",
      +  "aiConfidence",
      +  "aiSummary",
      +  "aiFlagReason"
      +]
    • addedOutput schema / properties / comments / description
      Added value: +"Absent on UI Verify's demo project, whose review comments only its team sees."
    • 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"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "buildId",
      -  "commitSha",
      -  "branch",
      -  "prNumber",
      -  "status",
      -  "gateStatus",
      -  "autoAcceptChanges",
      -  "createdAt",
      -  "counts",
      -  "comments",
      -  "aiReview",
      -  "changedStories",
      -  "changedNextCursor",
      -  "failedStories",
      -  "failedNextCursor"
      -]New value: +[
      +  "buildId",
      +  "commitSha",
      +  "branch",
      +  "prNumber",
      +  "status",
      +  "gateStatus",
      +  "autoAcceptChanges",
      +  "createdAt",
      +  "counts",
      +  "aiReview",
      +  "changedStories",
      +  "changedNextCursor",
      +  "failedStories",
      +  "failedNextCursor"
      +]
  4. Changed4 schema fields changed
    • removedOutput schema / properties / changedStories / items / properties / comments / properties / total / $ref
      Removed value: -"#/properties/comments/properties/total"
    • addedOutput schema / properties / changedStories / items / properties / comments / properties / total / type
      Added value: +"number"
    • removedOutput schema / properties / changedStories / items / properties / comments / properties / unresolved / $ref
      Removed value: -"#/properties/comments/properties/unresolved"
    • addedOutput schema / properties / changedStories / items / properties / comments / properties / unresolved / type
      Added value: +"number"
  5. 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"
      +}
  6. Changed2 schema fields changed
    • addedOutput schema / properties / changedStories / items / properties / comments
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "total": {
      +      "$ref": "#/properties/comments/properties/total"
      +    },
      +    "unresolved": {
      +      "$ref": "#/properties/comments/properties/unresolved"
      +    }
      +  },
      +  "required": [
      +    "total",
      +    "unresolved"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / changedStories / items / required
      Previous value: -[
      -  "diffResultId",
      -  "storyId",
      -  "title",
      -  "name",
      -  "viewport",
      -  "browser",
      -  "changedPct",
      -  "decision",
      -  "isNew",
      -  "unstable",
      -  "aiVerdict",
      -  "aiClassification",
      -  "aiIntroducedBy",
      -  "aiConfidence",
      -  "aiSummary",
      -  "aiFlagReason"
      -]New value: +[
      +  "diffResultId",
      +  "storyId",
      +  "title",
      +  "name",
      +  "viewport",
      +  "browser",
      +  "changedPct",
      +  "decision",
      +  "isNew",
      +  "unstable",
      +  "aiVerdict",
      +  "aiClassification",
      +  "aiIntroducedBy",
      +  "aiConfidence",
      +  "aiSummary",
      +  "aiFlagReason",
      +  "comments"
      +]
  7. Changed2 schema fields changed
    • addedOutput schema / properties / comments
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "total": {
      +      "type": "number"
      +    },
      +    "unresolved": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "total",
      +    "unresolved"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "buildId",
      -  "commitSha",
      -  "branch",
      -  "prNumber",
      -  "status",
      -  "gateStatus",
      -  "autoAcceptChanges",
      -  "createdAt",
      -  "counts",
      -  "aiReview",
      -  "changedStories",
      -  "changedNextCursor",
      -  "failedStories",
      -  "failedNextCursor"
      -]New value: +[
      +  "buildId",
      +  "commitSha",
      +  "branch",
      +  "prNumber",
      +  "status",
      +  "gateStatus",
      +  "autoAcceptChanges",
      +  "createdAt",
      +  "counts",
      +  "comments",
      +  "aiReview",
      +  "changedStories",
      +  "changedNextCursor",
      +  "failedStories",
      +  "failedNextCursor"
      +]
  8. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "aiReview": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "intended": {
      +              "type": "number"
      +            },
      +            "regressions": {
      +              "type": "number"
      +            },
      +            "reviewed": {
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "regressions",
      +            "intended",
      +            "reviewed"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "autoAcceptChanges": {
      +      "type": "boolean"
      +    },
      +    "branch": {
      +      "type": "string"
      +    },
      +    "buildId": {
      +      "format": "uuid",
      +      "type": "string"
      +    },
      +    "changedNextCursor": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "changedStories": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "aiClassification": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "aiConfidence": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "aiFlagReason": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "aiIntroducedBy": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "aiSummary": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "aiVerdict": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "browser": {
      +            "type": "string"
      +          },
      +          "changedPct": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "decision": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "diffResultId": {
      +            "format": "uuid",
      +            "type": "string"
      +          },
      +          "isNew": {
      +            "type": "boolean"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "storyId": {
      +            "type": "string"
      +          },
      +          "title": {
      +            "type": "string"
      +          },
      +          "unstable": {
      +            "type": "boolean"
      +          },
      +          "viewport": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "diffResultId",
      +          "storyId",
      +          "title",
      +          "name",
      +          "viewport",
      +          "browser",
      +          "changedPct",
      +          "decision",
      +          "isNew",
      +          "unstable",
      +          "aiVerdict",
      +          "aiClassification",
      +          "aiIntroducedBy",
      +          "aiConfidence",
      +          "aiSummary",
      +          "aiFlagReason"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "commitSha": {
      +      "type": "string"
      +    },
      +    "counts": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "changed": {
      +          "type": "number"
      +        },
      +        "failed": {
      +          "type": "number"
      +        },
      +        "total": {
      +          "type": "number"
      +        },
      +        "unchanged": {
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "total",
      +        "changed",
      +        "failed",
      +        "unchanged"
      +      ],
      +      "type": "object"
      +    },
      +    "createdAt": {
      +      "type": "string"
      +    },
      +    "failedNextCursor": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "failedStories": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "browser": {
      +            "type": "string"
      +          },
      +          "error": {
      +            "type": "string"
      +          },
      +          "errorTruncated": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "enum": [
      +              "render",
      +              "interaction"
      +            ],
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "storyId": {
      +            "type": "string"
      +          },
      +          "title": {
      +            "type": "string"
      +          },
      +          "viewport": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "storyId",
      +          "title",
      +          "name",
      +          "viewport",
      +          "browser",
      +          "error",
      +          "errorTruncated",
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "gateStatus": {
      +      "type": "string"
      +    },
      +    "prNumber": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "status": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "buildId",
      +    "commitSha",
      +    "branch",
      +    "prNumber",
      +    "status",
      +    "gateStatus",
      +    "autoAcceptChanges",
      +    "createdAt",
      +    "counts",
      +    "aiReview",
      +    "changedStories",
      +    "changedNextCursor",
      +    "failedStories",
      +    "failedNextCursor"
      +  ],
      +  "type": "object"
      +}
  9. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources