Skip to main content
Glama

Server Details

Visual testing for coding agents: your agent sees every UI change it makes and triages each diff.

Ownership verified

The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.

If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.

Status
Unhealthy
Uptime
78.3% over 61 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP
URL
Repository
uiverify/uiverify
GitHub Stars
18
ChatGPT
–
Claude
–

TDQS

A4.4/5.0

Scored across 15 tools

Disambiguation5/5

Each tool has a distinct role: build triage vs. PR-wide changeset, URL-based diff detail vs. inline image rendering, single-diff review vs. bulk build acceptance, and comment CRUD/resolution are clearly separated. Overlaps like get_build/list_build_stories are explicitly framed as summary vs. paging, so an agent can select tools confidently.

Naming Consistency5/5

All tools use snake_case with a leading verb and noun object (get_build, list_comments, post_comment, review_diff, resolve_comment, etc.). There is no mixing of camelCase or vague standalone verbs; render_diff_image is slightly longer but follows the same verb-first pattern.

Tool Count5/5

15 tools is well-scoped for a visual verification/review server, covering builds, diffs, images, PR changesets, projects, and comments without obvious redundancy. Each tool appears to earn its place, with bulk and single-item operations justified separately.

Completeness4/5

The core review lifecycle is covered: list projects/builds, triage builds, inspect diffs and images, browse PR changesets, manage comments, and accept/deny/ignore reviews. Minor gaps remain around triggering/creating builds or project configuration, but those may be outside this server's reviewer-focused scope.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updates
    • Changedaccept_build4 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"
    • Changedget_build4 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"
    • Changedget_pr_changeset5 fields changed
      • removedOutput schema / properties / changed / items / $ref
        Removed value: -"#/properties/new/items"
      • addedOutput schema / properties / changed / items / additionalProperties
        Added value: +false
      • addedOutput schema / properties / changed / items / properties
        Added value: +{
        +  "aiConfidence": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  },
        +  "aiVerdict": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  },
        +  "browsers": {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  "kind": {
        +    "enum": [
        +      "new",
        +      "changed"
        +    ],
        +    "type": "string"
        +  },
        +  "name": {
        +    "type": "string"
        +  },
        +  "status": {
        +    "enum": [
        +      "accepted",
        +      "denied",
        +      "ignored",
        +      "pending"
        +    ],
        +    "type": "string"
        +  },
        +  "storyId": {
        +    "type": "string"
        +  },
        +  "title": {
        +    "type": "string"
        +  },
        +  "unstable": {
        +    "type": "boolean"
        +  },
        +  "viewports": {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  }
        +}
      • addedOutput schema / properties / changed / items / required
        Added value: +[
        +  "storyId",
        +  "title",
        +  "name",
        +  "kind",
        +  "status",
        +  "browsers",
        +  "viewports",
        +  "aiVerdict",
        +  "aiConfidence",
        +  "unstable"
        +]
      • addedOutput schema / properties / changed / items / type
        Added value: +"object"
    • Changedlist_comments1 field changed
      • changedOutput schema / properties / comments / items / properties / anchor / anyOf
        Previous value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "additionalProperties": false,
        -        "properties": {
        -          "type": {
        -            "const": "point",
        -            "type": "string"
        -          },
        -          "x": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "number"
        -          },
        -          "y": {
        -            "$ref": "#/properties/comments/items/properties/anchor/anyOf/0/anyOf/0/properties/x"
        -          }
        -        },
        -        "required": [
        -          "type",
        -          "x",
        -          "y"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "additionalProperties": false,
        -        "properties": {
        -          "h": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 1,
        -            "type": "number"
        -          },
        -          "type": {
        -            "const": "rect",
        -            "type": "string"
        -          },
        -          "w": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 1,
        -            "type": "number"
        -          },
        -          "x": {
        -            "$ref": "#/properties/comments/items/properties/anchor/anyOf/0/anyOf/0/properties/x"
        -          },
        -          "y": {
        -            "$ref": "#/properties/comments/items/properties/anchor/anyOf/0/anyOf/0/properties/x"
        -          }
        -        },
        -        "required": [
        -          "type",
        -          "x",
        -          "y",
        -          "w",
        -          "h"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "additionalProperties": false,
        -        "properties": {
        -          "closed": {
        -            "type": "boolean"
        -          },
        -          "points": {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "x": {
        -                  "$ref": "#/properties/comments/items/properties/anchor/anyOf/0/anyOf/0/properties/x"
        -                },
        -                "y": {
        -                  "$ref": "#/properties/comments/items/properties/anchor/anyOf/0/anyOf/0/properties/x"
        -                }
        -              },
        -              "required": [
        -                "x",
        -                "y"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 512,
        -            "minItems": 2,
        -            "type": "array"
        -          },
        -          "type": {
        -            "const": "path",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "type",
        -          "points",
        -          "closed"
        -        ],
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "type": {
        +            "const": "point",
        +            "type": "string"
        +          },
        +          "x": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "y": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "type",
        +          "x",
        +          "y"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "h": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 1,
        +            "type": "number"
        +          },
        +          "type": {
        +            "const": "rect",
        +            "type": "string"
        +          },
        +          "w": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 1,
        +            "type": "number"
        +          },
        +          "x": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "y": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "type",
        +          "x",
        +          "y",
        +          "w",
        +          "h"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "closed": {
        +            "type": "boolean"
        +          },
        +          "points": {
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "x": {
        +                  "maximum": 1,
        +                  "minimum": 0,
        +                  "type": "number"
        +                },
        +                "y": {
        +                  "maximum": 1,
        +                  "minimum": 0,
        +                  "type": "number"
        +                }
        +              },
        +              "required": [
        +                "x",
        +                "y"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 512,
        +            "minItems": 2,
        +            "type": "array"
        +          },
        +          "type": {
        +            "const": "path",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type",
        +          "points",
        +          "closed"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedpost_comment1 field changed
      • changedInput schema / properties / anchor / anyOf
        Previous value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "additionalProperties": false,
        -        "properties": {
        -          "type": {
        -            "const": "point",
        -            "type": "string"
        -          },
        -          "x": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "number"
        -          },
        -          "y": {
        -            "$ref": "#/properties/anchor/anyOf/0/anyOf/0/properties/x"
        -          }
        -        },
        -        "required": [
        -          "type",
        -          "x",
        -          "y"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "additionalProperties": false,
        -        "properties": {
        -          "h": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 1,
        -            "type": "number"
        -          },
        -          "type": {
        -            "const": "rect",
        -            "type": "string"
        -          },
        -          "w": {
        -            "exclusiveMinimum": 0,
        -            "maximum": 1,
        -            "type": "number"
        -          },
        -          "x": {
        -            "$ref": "#/properties/anchor/anyOf/0/anyOf/0/properties/x"
        -          },
        -          "y": {
        -            "$ref": "#/properties/anchor/anyOf/0/anyOf/0/properties/x"
        -          }
        -        },
        -        "required": [
        -          "type",
        -          "x",
        -          "y",
        -          "w",
        -          "h"
        -        ],
        -        "type": "object"
        -      },
        -      {
        -        "additionalProperties": false,
        -        "properties": {
        -          "closed": {
        -            "type": "boolean"
        -          },
        -          "points": {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "x": {
        -                  "$ref": "#/properties/anchor/anyOf/0/anyOf/0/properties/x"
        -                },
        -                "y": {
        -                  "$ref": "#/properties/anchor/anyOf/0/anyOf/0/properties/x"
        -                }
        -              },
        -              "required": [
        -                "x",
        -                "y"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 512,
        -            "minItems": 2,
        -            "type": "array"
        -          },
        -          "type": {
        -            "const": "path",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "type",
        -          "points",
        -          "closed"
        -        ],
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "type": {
        +            "const": "point",
        +            "type": "string"
        +          },
        +          "x": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "y": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "type",
        +          "x",
        +          "y"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "h": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 1,
        +            "type": "number"
        +          },
        +          "type": {
        +            "const": "rect",
        +            "type": "string"
        +          },
        +          "w": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 1,
        +            "type": "number"
        +          },
        +          "x": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "y": {
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "type",
        +          "x",
        +          "y",
        +          "w",
        +          "h"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "closed": {
        +            "type": "boolean"
        +          },
        +          "points": {
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "x": {
        +                  "maximum": 1,
        +                  "minimum": 0,
        +                  "type": "number"
        +                },
        +                "y": {
        +                  "maximum": 1,
        +                  "minimum": 0,
        +                  "type": "number"
        +                }
        +              },
        +              "required": [
        +                "x",
        +                "y"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 512,
        +            "minItems": 2,
        +            "type": "array"
        +          },
        +          "type": {
        +            "const": "path",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type",
        +          "points",
        +          "closed"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  2. 11 tool updates
    • Changedaccept_build1 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"
        +}
    • Changedget_build1 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"
        +}
    • Changedget_diff1 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"
        +}
    • Changedget_pr_changeset1 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"
        +}
    • Changedlist_build_stories1 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"
        +}
    • Changedlist_builds1 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"
        +}
    • Changedlist_comments1 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"
        +}
    • Changedlist_pr_stories1 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"
        +}
    • Addedlist_projects
    • Changedpost_comment1 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"
        +}
    • Changedrender_diff_image1 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"
        +}
  3. 3 tool updates
    • Changedaccept_build2 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"
        +]
    • Changedget_build2 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"
        +]
    • Changedlist_build_stories1 field changed
      • changedOutput schema / properties / stories / items / anyOf
        Previous value: -[
        -  {
        -    "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"
        -  },
        -  {
        -    "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"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "browser": {
        -        "type": "string"
        -      },
        -      "storyId": {
        -        "type": "string"
        -      },
        -      "viewport": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "storyId",
        -      "viewport",
        -      "browser"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "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"
        +        ]
        +      },
        +      "comments": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "total": {
        +            "type": "number"
        +          },
        +          "unresolved": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "total",
        +          "unresolved"
        +        ],
        +        "type": "object"
        +      },
        +      "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",
        +      "comments"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "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"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "browser": {
        +        "type": "string"
        +      },
        +      "storyId": {
        +        "type": "string"
        +      },
        +      "viewport": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "storyId",
        +      "viewport",
        +      "browser"
        +    ],
        +    "type": "object"
        +  }
        +]
  4. 1 tool update
    • Changedrender_diff_image1 field changed
      • addedInput schema / properties / pxPagination
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Paginate a TALL image slice by slice instead of one unreadable image: return the `height` device px starting at y=`offset`, so a 5000px page is reviewed in readable slices. Omit for the whole image. Ignored for the before_after form (already cropped to the change).",
        +  "properties": {
        +    "height": {
        +      "default": 500,
        +      "description": "Slice height in device px (default 500).",
        +      "exclusiveMinimum": 0,
        +      "type": "integer"
        +    },
        +    "offset": {
        +      "description": "Top y (device px) of the slice to return.",
        +      "minimum": 0,
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "offset"
        +  ],
        +  "type": "object"
        +}
  5. 3 tool updates
    • Changedaccept_build2 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"
        +]
    • Changedget_build2 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"
        +]
    • Changedget_diff2 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"
        +]
  6. 4 tool updates
    • Addeddelete_comment
    • Addedpost_comment
    • Addedresolve_comment
    • Addedupdate_comment
  7. 1 tool update
    • Addedlist_comments
  8. 1 tool update
    • Removedget_change_attribution
  9. 1 tool update
    • Changedget_change_attribution3 fields changed
      • addedOutput schema / properties / stories / items / properties / approxReason
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "no-graph",
        +        "global-change",
        +        "too-large",
        +        "github-error",
        +        "unexplained"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedOutput schema / properties / stories / items / properties / narrowed
        Added value: +{
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / stories / items / required
        Previous value: -[
        -  "storyId",
        -  "base",
        -  "truncated",
        -  "partial",
        -  "refs"
        -]New value: +[
        +  "storyId",
        +  "base",
        +  "truncated",
        +  "partial",
        +  "narrowed",
        +  "approxReason",
        +  "refs"
        +]
  10. 1 tool update
    • Addedget_change_attribution
  11. 9 tool updates
    • First observedaccept_build
    • First observedget_build
    • First observedget_diff
    • First observedget_pr_changeset
    • First observedlist_build_stories
    • First observedlist_builds
    • First observedlist_pr_stories
    • First observedrender_diff_image
    • First observedreview_diff

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Intent-aware visual verification for coding agents: the agent declares what a UI change should affect, and SnapDiff diffs the page against a baseline and flags anything that changed outside that intent for review or rollback — local screenshot capture via Playwright.
    6
    90 npm
    5
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Deterministic screenshot diffing for AI coding agents. Extract design tokens, diff implementations vs reference, get CSS fix suggestions.
    63 npm
    6
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.