此 MCP 可以做什么
Supports visual regression testing by inspecting UI build diffs, rendering comparison images, reviewing or accepting changes, and managing comments on visual test results.
工具
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'buildId': {'type': 'string', 'format': 'uuid', 'description': 'Resolve this exact build id.'}, 'prNumber': {'type': 'integer', 'description': 'Resolve the latest build for this PR number.', 'exclusiveMinimum': 0}, 'commitSha': {'type': 'string', 'minLength': 1, 'description': 'Resolve the build for this git commit SHA.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['buildId', 'commitSha', 'branch', 'prNumber', 'status', 'gateStatus', 'autoAcceptChanges', 'createdAt', 'counts', 'comments', 'aiReview', 'changedStories', 'changedNextCursor', 'failedStories', 'failedNextCursor'], 'properties': {'branch': {'type': 'string'}, 'counts': {'type': 'object', 'required': ['total', 'changed', 'failed', 'unchanged'], 'properties': {'total': {'type': 'number'}, 'failed': {'type': 'number'}, 'changed': {'type': 'number'}, 'unchanged': {'type': 'number'}}, 'additionalProperties': False}, 'status': {'type': 'string'}, 'buildId': {'type': 'string', 'format': 'uuid'}, 'aiReview': {'anyOf': [{'type': 'object', 'required': ['regressions', 'intended', 'reviewed'], 'properties': {'intended': {'type': 'number'}, 'reviewed': {'type': 'number'}, 'regressions': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'comments': {'type': 'object', 'required': ['total', 'unresolved'], 'properties': {'total': {'type': 'number'}, 'unresolved': {'type': 'number'}}, 'additionalProperties': False}, 'prNumber': {'type': ['number', 'null']}, 'commitSha': {'type': 'string'}, 'createdAt': {'type': 'string'}, 'gateStatus': {'type': 'string'}, 'failedStories': {'type': 'array', 'items': {'type': 'object', 'required': ['storyId', 'title', 'name', 'viewport', 'browser', 'error', 'errorTruncated', 'kind'], 'properties': {'kind': {'enum': ['render', 'interaction'], 'type': 'string'}, 'name': {'type': 'string'}, 'error': {'type': 'string'}, 'title': {'type': 'string'}, 'browser': {'type': 'string'}, 'storyId': {'type': 'string'}, 'viewport': {'type': 'string'}, 'errorTruncated': {'type': 'boolean'}}, 'additionalProperties': False}}, 'changedStories': {'type': 'array', 'items': {'type': 'object', 'required': ['diffResultId', 'storyId', 'title', 'name', 'viewport', 'browser', 'changedPct', 'decision', 'isNew', 'unstable', 'aiVerdict', 'aiClassification', 'aiIntroducedBy', 'aiConfidence', 'aiSummary', 'aiFlagReason', 'comments'], 'properties': {'name': {'type': 'string'}, 'isNew': {'type': 'boolean'}, 'title': {'type': 'string'}, 'browser': {'type': 'string'}, 'storyId': {'type': 'string'}, 'comments': {'type': 'object', 'required': ['total', 'unresolved'], 'properties': {'total': {'$ref': '#/properties/comments/properties/total'}, 'unresolved': {'$ref': '#/properties/comments/properties/unresolved'}}, 'additionalProperties': False}, 'decision': {'type': ['string', 'null']}, 'unstable': {'type': 'boolean'}, 'viewport': {'type': 'string'}, 'aiSummary': {'type': ['string', 'null']}, 'aiVerdict': {'type': ['string', 'null']}, 'changedPct': {'type': ['number', 'null']}, 'aiConfidence': {'type': ['string', 'null']}, 'aiFlagReason': {'type': ['string', 'null']}, 'diffResultId': {'type': 'string', 'format': 'uuid'}, 'aiIntroducedBy': {'type': ['string', 'null']}, 'aiClassification': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'failedNextCursor': {'type': ['string', 'null']}, 'autoAcceptChanges': {'type': 'boolean'}, 'changedNextCursor': {'type': ['string', 'null']}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['commentId'], 'properties': {'commentId': {'type': 'string', 'description': 'The comment id to delete (from list_comments).'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'deleted'], 'properties': {'id': {'type': 'string'}, 'deleted': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'buildId': {'type': 'string', 'format': 'uuid', 'description': 'Resolve this exact build id.'}, 'prNumber': {'type': 'integer', 'description': 'Resolve the latest build for this PR number.', 'exclusiveMinimum': 0}, 'commitSha': {'type': 'string', 'minLength': 1, 'description': 'Resolve the build for this git commit SHA.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['buildId', 'commitSha', 'branch', 'prNumber', 'status', 'gateStatus', 'autoAcceptChanges', 'createdAt', 'counts', 'comments', 'aiReview', 'changedStories', 'changedNextCursor', 'failedStories', 'failedNextCursor'], 'properties': {'branch': {'type': 'string'}, 'counts': {'type': 'object', 'required': ['total', 'changed', 'failed', 'unchanged'], 'properties': {'total': {'type': 'number'}, 'failed': {'type': 'number'}, 'changed': {'type': 'number'}, 'unchanged': {'type': 'number'}}, 'additionalProperties': False}, 'status': {'type': 'string'}, 'buildId': {'type': 'string', 'format': 'uuid'}, 'aiReview': {'anyOf': [{'type': 'object', 'required': ['regressions', 'intended', 'reviewed'], 'properties': {'intended': {'type': 'number'}, 'reviewed': {'type': 'number'}, 'regressions': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'comments': {'type': 'object', 'required': ['total', 'unresolved'], 'properties': {'total': {'type': 'number'}, 'unresolved': {'type': 'number'}}, 'additionalProperties': False}, 'prNumber': {'type': ['number', 'null']}, 'commitSha': {'type': 'string'}, 'createdAt': {'type': 'string'}, 'gateStatus': {'type': 'string'}, 'failedStories': {'type': 'array', 'items': {'type': 'object', 'required': ['storyId', 'title', 'name', 'viewport', 'browser', 'error', 'errorTruncated', 'kind'], 'properties': {'kind': {'enum': ['render', 'interaction'], 'type': 'string'}, 'name': {'type': 'string'}, 'error': {'type': 'string'}, 'title': {'type': 'string'}, 'browser': {'type': 'string'}, 'storyId': {'type': 'string'}, 'viewport': {'type': 'string'}, 'errorTruncated': {'type': 'boolean'}}, 'additionalProperties': False}}, 'changedStories': {'type': 'array', 'items': {'type': 'object', 'required': ['diffResultId', 'storyId', 'title', 'name', 'viewport', 'browser', 'changedPct', 'decision', 'isNew', 'unstable', 'aiVerdict', 'aiClassification', 'aiIntroducedBy', 'aiConfidence', 'aiSummary', 'aiFlagReason', 'comments'], 'properties': {'name': {'type': 'string'}, 'isNew': {'type': 'boolean'}, 'title': {'type': 'string'}, 'browser': {'type': 'string'}, 'storyId': {'type': 'string'}, 'comments': {'type': 'object', 'required': ['total', 'unresolved'], 'properties': {'total': {'$ref': '#/properties/comments/properties/total'}, 'unresolved': {'$ref': '#/properties/comments/properties/unresolved'}}, 'additionalProperties': False}, 'decision': {'type': ['string', 'null']}, 'unstable': {'type': 'boolean'}, 'viewport': {'type': 'string'}, 'aiSummary': {'type': ['string', 'null']}, 'aiVerdict': {'type': ['string', 'null']}, 'changedPct': {'type': ['number', 'null']}, 'aiConfidence': {'type': ['string', 'null']}, 'aiFlagReason': {'type': ['string', 'null']}, 'diffResultId': {'type': 'string', 'format': 'uuid'}, 'aiIntroducedBy': {'type': ['string', 'null']}, 'aiClassification': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'failedNextCursor': {'type': ['string', 'null']}, 'autoAcceptChanges': {'type': 'boolean'}, 'changedNextCursor': {'type': ['string', 'null']}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'buildId': {'type': 'string', 'format': 'uuid', 'description': 'Resolve this exact build id.'}, 'storyId': {'type': 'string', 'description': 'Limit to one story id.'}, 'prNumber': {'type': 'integer', 'description': 'Resolve the latest build for this PR number.', 'exclusiveMinimum': 0}, 'commitSha': {'type': 'string', 'minLength': 1, 'description': 'Resolve the build for this git commit SHA.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['diffs'], 'properties': {'diffs': {'type': 'array', 'items': {'type': 'object', 'required': ['diffResultId', 'storyId', 'viewport', 'browser', 'changed', 'decision', 'metrics', 'baselineUrl', 'candidateUrl', 'diffUrl', 'aiSummary', 'aiVerdict', 'aiConfidence', 'aiReasoning', 'aiFlagReason', 'comments'], 'properties': {'browser': {'type': 'string'}, 'changed': {'type': 'boolean'}, 'diffUrl': {'type': ['string', 'null']}, 'metrics': {'type': 'object', 'properties': {'bbox': {'anyOf': [{'type': 'object', 'required': ['x', 'y', 'width', 'height'], 'properties': {'x': {'type': 'number'}, 'y': {'type': 'number'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'changedPx': {'type': 'number'}, 'threshold': {'type': 'number'}, 'changedPct': {'type': 'number'}, 'flakinessPx': {'type': 'number'}, 'hadBaseline': {'type': 'boolean'}, 'sizeChanged': {'type': 'boolean'}, 'flakinessScore': {'type': 'number'}, 'changedPxAdjusted': {'type': 'number'}}, 'additionalProperties': False}, 'storyId': {'type': 'string'}, 'comments': {'type': 'object', 'required': ['total', 'unresolved'], 'properties': {'total': {'type': 'number'}, 'unresolved': {'type': 'number'}}, 'additionalProperties': False}, 'decision': {'type': ['string', 'null']}, 'viewport': {'type': 'string'}, 'aiSummary': {'type': ['string', 'null']}, 'aiVerdict': {'type': ['string', 'null']}, 'aiReasoning': {'type': ['string', 'null']}, 'baselineUrl': {'type': ['string', 'null']}, 'aiConfidence': {'type': ['string', 'null']}, 'aiFlagReason': {'type': ['string', 'null']}, 'candidateUrl': {'type': 'string'}, 'diffResultId': {'anyOf': [{'type': 'string', 'format': 'uuid'}, {'type': 'null'}]}}, 'additionalProperties': False}}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'buildId': {'type': 'string', 'format': 'uuid', 'description': 'Resolve this exact build id.'}, 'prNumber': {'type': 'integer', 'description': 'Resolve the latest build for this PR number.', 'exclusiveMinimum': 0}, 'commitSha': {'type': 'string', 'minLength': 1, 'description': 'Resolve the build for this git commit SHA.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['base', 'counts', 'new', 'newNextCursor', 'changed', 'changedNextCursor', 'removed', 'removedNextCursor'], 'properties': {'new': {'type': 'array', 'items': {'type': 'object', 'required': ['storyId', 'title', 'name', 'kind', 'status', 'browsers', 'viewports', 'aiVerdict', 'aiConfidence', 'unstable'], 'properties': {'kind': {'enum': ['new', 'changed'], 'type': 'string'}, 'name': {'type': 'string'}, 'title': {'type': 'string'}, 'status': {'enum': ['accepted', 'denied', 'ignored', 'pending'], 'type': 'string'}, 'storyId': {'type': 'string'}, 'browsers': {'type': 'array', 'items': {'type': 'string'}}, 'unstable': {'type': 'boolean'}, 'aiVerdict': {'type': ['string', 'null']}, 'viewports': {'type': 'array', 'items': {'type': 'string'}}, 'aiConfidence': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'base': {'type': 'string'}, 'counts': {'type': 'object', 'required': ['new', 'changed', 'removed', 'unchanged'], 'properties': {'new': {'type': 'number'}, 'changed': {'type': 'number'}, 'removed': {'type': 'number'}, 'unchanged': {'type': 'number'}}, 'additionalProperties': False}, 'changed': {'type': 'array', 'items': {'$ref': '#/properties/new/items'}}, 'removed': {'type': 'array', 'items': {'type': 'object', 'required': ['storyId', 'title', 'name', 'lastBuildId', 'browsers', 'viewports'], 'properties': {'name': {'type': 'string'}, 'title': {'type': 'string'}, 'storyId': {'type': 'string'}, 'browsers': {'type': 'array', 'items': {'type': 'string'}}, 'viewports': {'type': 'array', 'items': {'type': 'string'}}, 'lastBuildId': {'type': 'string', 'format': 'uuid'}}, 'additionalProperties': False}}, 'newNextCursor': {'type': ['string', 'null']}, 'changedNextCursor': {'type': ['string', 'null']}, 'removedNextCursor': {'type': ['string', 'null']}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Max builds to return (default 20).'}, 'branch': {'type': 'string', 'description': 'Only builds on this git branch.'}, 'status': {'enum': ['pending', 'preflight', 'running', 'passed', 'changed', 'failed', 'blocked'], 'type': 'string', 'description': 'Only builds with this raw status.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['builds'], 'properties': {'builds': {'type': 'array', 'items': {'type': 'object', 'required': ['buildId', 'commitSha', 'branch', 'prNumber', 'status', 'gateStatus', 'autoAcceptChanges', 'createdAt'], 'properties': {'branch': {'type': 'string'}, 'status': {'type': 'string'}, 'buildId': {'type': 'string', 'format': 'uuid'}, 'prNumber': {'type': ['number', 'null']}, 'commitSha': {'type': 'string'}, 'createdAt': {'type': 'string'}, 'gateStatus': {'type': 'string'}, 'autoAcceptChanges': {'type': 'boolean'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status'], 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Page size (default 25, max 100).'}, 'cursor': {'type': 'string', 'description': 'The nextCursor from a prior page; omit for the first page.'}, 'status': {'enum': ['changed', 'unchanged', 'failed'], 'type': 'string', 'description': "Which stories to page: changed, failed, or unchanged (baselined, didn't change this build)."}, 'buildId': {'type': 'string', 'format': 'uuid', 'description': 'Resolve this exact build id.'}, 'prNumber': {'type': 'integer', 'description': 'Resolve the latest build for this PR number.', 'exclusiveMinimum': 0}, 'commitSha': {'type': 'string', 'minLength': 1, 'description': 'Resolve the build for this git commit SHA.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['stories', 'nextCursor'], 'properties': {'stories': {'type': 'array', 'items': {'anyOf': [{'type': 'object', 'required': ['diffResultId', 'storyId', 'title', 'name', 'viewport', 'browser', 'changedPct', 'decision', 'isNew', 'unstable', 'aiVerdict', 'aiClassification', 'aiIntroducedBy', 'aiConfidence', 'aiSummary', 'aiFlagReason', 'comments'], 'properties': {'name': {'type': 'string'}, 'isNew': {'type': 'boolean'}, 'title': {'type': 'string'}, 'browser': {'type': 'string'}, 'storyId': {'type': 'string'}, 'comments': {'type': 'object', 'required': ['total', 'unresolved'], 'properties': {'total': {'type': 'number'}, 'unresolved': {'type': 'number'}}, 'additionalProperties': False}, 'decision': {'type': ['string', 'null']}, 'unstable': {'type': 'boolean'}, 'viewport': {'type': 'string'}, 'aiSummary': {'type': ['string', 'null']}, 'aiVerdict': {'type': ['string', 'null']}, 'changedPct': {'type': ['number', 'null']}, 'aiConfidence': {'type': ['string', 'null']}, 'aiFlagReason': {'type': ['string', 'null']}, 'diffResultId': {'type': 'string', 'format': 'uuid'}, 'aiIntroducedBy': {'type': ['string', 'null']}, 'aiClassification': {'type': ['string', 'null']}}, 'additionalProperties': False}, {'type': 'object', 'required': ['storyId', 'title', 'name', 'viewport', 'browser', 'error', 'errorTruncated', 'kind'], 'properties': {'kind': {'enum': ['render', 'interaction'], 'type': 'string'}, 'name': {'type': 'string'}, 'error': {'type': 'string'}, 'title': {'type': 'string'}, 'browser': {'type': 'string'}, 'storyId': {'type': 'string'}, 'viewport': {'type': 'string'}, 'errorTruncated': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['storyId', 'viewport', 'browser'], 'properties': {'browser': {'type': 'string'}, 'storyId': {'type': 'string'}, 'viewport': {'type': 'string'}}, 'additionalProperties': False}]}}, 'nextCursor': {'type': ['string', 'null']}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'buildId': {'type': 'string', 'format': 'uuid', 'description': 'Resolve this exact build id.'}, 'prNumber': {'type': 'integer', 'description': 'Resolve the latest build for this PR number.', 'exclusiveMinimum': 0}, 'commitSha': {'type': 'string', 'minLength': 1, 'description': 'Resolve the build for this git commit SHA.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['comments'], 'properties': {'comments': {'type': 'array', 'items': {'type': 'object', 'required': ['diffResultId', 'id', 'authorType', 'authorName', 'side', 'parentId', 'anchor', 'body', 'createdAt', 'resolved'], 'properties': {'id': {'type': 'string'}, 'body': {'type': 'string'}, 'side': {'enum': ['before', 'after'], 'type': 'string'}, 'anchor': {'anyOf': [{'anyOf': [{'type': 'object', 'required': ['type', 'x', 'y'], 'properties': {'x': {'type': 'number', 'maximum': 1, 'minimum': 0}, 'y': {'$ref': '#/properties/comments/items/properties/anchor/anyOf/0/anyOf/0/properties/x'}, 'type': {'type': 'string', 'const': 'point'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'x', 'y', 'w', 'h'], 'properties': {'h': {'type': 'number', 'maximum': 1, 'exclusiveMinimum': 0}, 'w': {'type': 'number', 'maximum': 1, 'exclusiveMinimum': 0}, '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'}, 'type': {'type': 'string', 'const': 'rect'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'points', 'closed'], 'properties': {'type': {'type': 'string', 'const': 'path'}, 'closed': {'type': 'boolean'}, 'points': {'type': 'array', 'items': {'type': 'object', 'required': ['x', 'y'], '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'}}, 'additionalProperties': False}, 'maxItems': 512, 'minItems': 2}}, 'additionalProperties': False}]}, {'type': 'null'}]}, 'parentId': {'type': ['string', 'null']}, 'resolved': {'type': 'boolean'}, 'createdAt': {'type': 'string'}, 'authorName': {'type': ['string', 'null']}, 'authorType': {'enum': ['human', 'agent'], 'type': 'string'}, 'diffResultId': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['kind'], 'properties': {'kind': {'enum': ['new', 'changed', 'removed'], 'type': 'string', 'description': 'Which changeset stories to page: new (added), changed (vs base), or removed (deleted).'}, 'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Page size (default 25, max 100).'}, 'cursor': {'type': 'string', 'description': 'The nextCursor from a prior page; omit for the first page.'}, 'buildId': {'type': 'string', 'format': 'uuid', 'description': 'Resolve this exact build id.'}, 'prNumber': {'type': 'integer', 'description': 'Resolve the latest build for this PR number.', 'exclusiveMinimum': 0}, 'commitSha': {'type': 'string', 'minLength': 1, 'description': 'Resolve the build for this git commit SHA.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['stories', 'nextCursor'], 'properties': {'stories': {'type': 'array', 'items': {'anyOf': [{'type': 'object', 'required': ['storyId', 'title', 'name', 'kind', 'status', 'browsers', 'viewports', 'aiVerdict', 'aiConfidence', 'unstable'], 'properties': {'kind': {'enum': ['new', 'changed'], 'type': 'string'}, 'name': {'type': 'string'}, 'title': {'type': 'string'}, 'status': {'enum': ['accepted', 'denied', 'ignored', 'pending'], 'type': 'string'}, 'storyId': {'type': 'string'}, 'browsers': {'type': 'array', 'items': {'type': 'string'}}, 'unstable': {'type': 'boolean'}, 'aiVerdict': {'type': ['string', 'null']}, 'viewports': {'type': 'array', 'items': {'type': 'string'}}, 'aiConfidence': {'type': ['string', 'null']}}, 'additionalProperties': False}, {'type': 'object', 'required': ['storyId', 'title', 'name', 'lastBuildId', 'browsers', 'viewports'], 'properties': {'name': {'type': 'string'}, 'title': {'type': 'string'}, 'storyId': {'type': 'string'}, 'browsers': {'type': 'array', 'items': {'type': 'string'}}, 'viewports': {'type': 'array', 'items': {'type': 'string'}}, 'lastBuildId': {'type': 'string', 'format': 'uuid'}}, 'additionalProperties': False}]}}, 'nextCursor': {'type': ['string', 'null']}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['diffResultId', 'body'], 'properties': {'body': {'type': 'string', 'maxLength': 4000, 'minLength': 1, 'description': 'The comment text.'}, 'side': {'enum': ['before', 'after'], 'type': 'string', 'description': "Which pane: 'after' (candidate, default) or 'before' (baseline). Ignored on a reply."}, 'anchor': {'anyOf': [{'anyOf': [{'type': 'object', 'required': ['type', 'x', 'y'], 'properties': {'x': {'type': 'number', 'maximum': 1, 'minimum': 0}, 'y': {'$ref': '#/properties/anchor/anyOf/0/anyOf/0/properties/x'}, 'type': {'type': 'string', 'const': 'point'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'x', 'y', 'w', 'h'], 'properties': {'h': {'type': 'number', 'maximum': 1, 'exclusiveMinimum': 0}, 'w': {'type': 'number', 'maximum': 1, 'exclusiveMinimum': 0}, 'x': {'$ref': '#/properties/anchor/anyOf/0/anyOf/0/properties/x'}, 'y': {'$ref': '#/properties/anchor/anyOf/0/anyOf/0/properties/x'}, 'type': {'type': 'string', 'const': 'rect'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'points', 'closed'], 'properties': {'type': {'type': 'string', 'const': 'path'}, 'closed': {'type': 'boolean'}, 'points': {'type': 'array', 'items': {'type': 'object', 'required': ['x', 'y'], 'properties': {'x': {'$ref': '#/properties/anchor/anyOf/0/anyOf/0/properties/x'}, 'y': {'$ref': '#/properties/anchor/anyOf/0/anyOf/0/properties/x'}}, 'additionalProperties': False}, 'maxItems': 512, 'minItems': 2}}, 'additionalProperties': False}]}, {'type': 'null'}], 'description': "Where on the candidate image to pin it (0..1 normalized): omit/null = whole diff; {type:'point',x,y}; {type:'rect',x,y,w,h}; {type:'path',points,closed}. Ignored on a reply."}, 'buildId': {'type': 'string', 'format': 'uuid', 'description': 'Resolve this exact build id.'}, 'parentId': {'type': 'string', 'format': 'uuid', 'description': "Reply to this thread ROOT comment's id (from list_comments) instead of starting a new thread."}, 'prNumber': {'type': 'integer', 'description': 'Resolve the latest build for this PR number.', 'exclusiveMinimum': 0}, 'commitSha': {'type': 'string', 'minLength': 1, 'description': 'Resolve the build for this git commit SHA.'}, 'diffResultId': {'type': 'string', 'format': 'uuid', 'description': 'The diff result to comment on (from get_build/get_diff).'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'which': {'enum': ['baseline', 'candidate', 'diff', 'before_after'], 'type': 'string', 'description': 'For the diffResultId form: baseline|candidate|diff (one triptych image, default candidate), or before_after (baseline+candidate side by side, cropped to the change - one crop per changed region, stacked, when the change spans several places). Ignored for the storyId form.'}, 'buildId': {'type': 'string', 'format': 'uuid', 'description': 'Resolve this exact build id.'}, 'storyId': {'type': 'string', 'description': "With a build selector: fetch THIS story's current image (works for unchanged stories)."}, 'prNumber': {'type': 'integer', 'description': 'Resolve the latest build for this PR number.', 'exclusiveMinimum': 0}, 'commitSha': {'type': 'string', 'minLength': 1, 'description': 'Resolve the build for this git commit SHA.'}, 'diffResultId': {'type': 'string', 'format': 'uuid', 'description': "A CHANGED story's diff result id (from get_build/get_diff); pair with `which`."}, 'pxPagination': {'type': 'object', 'required': ['offset'], 'properties': {'height': {'type': 'integer', 'default': 500, 'description': 'Slice height in device px (default 500).', 'exclusiveMinimum': 0}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Top y (device px) of the slice to return.'}}, '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).', 'additionalProperties': False}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['commentId', 'resolved'], 'properties': {'resolved': {'type': 'boolean', 'description': 'true to resolve the thread, false to reopen it.'}, 'commentId': {'type': 'string', 'description': 'The thread root comment id (from list_comments).'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'resolved'], 'properties': {'id': {'type': 'string'}, 'resolved': {'type': 'boolean'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['diffResultId', 'decision'], 'properties': {'decision': {'enum': ['accept', 'deny', 'ignore'], 'type': 'string', 'description': "'accept' advances the baseline; 'deny' records a rejection; 'ignore' excludes the story from the gate."}, 'diffResultId': {'type': 'string', 'format': 'uuid', 'description': 'The diff result id from get_build or get_diff.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['diffResultId', 'decision'], 'properties': {'decision': {'enum': ['accepted', 'denied', 'ignored'], 'type': 'string'}, 'diffResultId': {'type': 'string', 'format': 'uuid'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['commentId', 'body'], 'properties': {'body': {'type': 'string', 'maxLength': 4000, 'minLength': 1, 'description': 'The new comment text.'}, 'commentId': {'type': 'string', 'description': 'The comment id to edit (from list_comments).'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string'}}, 'additionalProperties': False}
近期工具变更
类似的 MCP 服务器
GripForge
Generates, rigs, animates, analyzes, and packages game characters, weapons, armor, effects, environments, and engine-ready assets.
spriteship
Generates and manages 2D game characters, assets, animations, tilesets, UI packs, maps, and engine-ready exports for multiple gam…
Blixtworks
Offers pay-per-call utilities for text, image processing and analysis, data conversion, validation, web inspection, cryptography,…
Compose Preview Catalogs
Browses, renders, compares, audits, and edits Jetpack Compose preview catalogs and associated UI designs.
arch-tools-mcp
Provides general-purpose agent APIs for browser automation, web and PDF extraction, data conversion, email operations, fact check…
kernelcad
Authors, evaluates, reviews, simulates, edits, and exports parametric CAD assemblies and geometry from editable TypeScript-based …
floot
Creates, edits, previews, databases, and publishes full-stack web and mobile applications with hosted resources and deployment wo…
Raven
Supports coding agents with design audits, design-system guidance, and a configurable visual preference profile.