MCP 2025-06-18
design.registerRevision
Register an immutable revision with verified screenshot evidence.
Scopes
Also needs claim:design_requests, and a live claim, when changeRequestId is given.
- read:design
- register:design_revisions
Input schema
This schema is shared with tools/list, including the required fields and additionalProperties rules.
{
"type": "object",
"properties": {
"idempotencyKey": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"componentId": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"parentRevisionId": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"changeRequestId": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"claimGeneration": {
"type": "integer",
"minimum": 1
},
"registrationKey": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"manifest": {
"type": "object",
"properties": {
"brief": {
"type": "string",
"minLength": 1,
"maxLength": 8000
},
"promptVersion": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"bundleVersion": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"bundleHash": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"model": {
"type": "object",
"properties": {
"provider": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"version": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"settingsHash": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"provider",
"name",
"version",
"settingsHash"
],
"additionalProperties": false
},
"repoRef": {
"type": "object",
"properties": {
"repository": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"ref": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"sourcePath": {
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"repository",
"ref"
],
"additionalProperties": false
},
"commit": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"previews": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"viewport": {
"type": "object",
"properties": {
"width": {
"type": "integer",
"minimum": 1
},
"height": {
"type": "integer",
"minimum": 1
},
"deviceScaleFactor": {
"type": "number",
"minimum": 0.1,
"maximum": 8
}
},
"required": [
"width",
"height",
"deviceScaleFactor"
],
"additionalProperties": false
},
"state": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"theme": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"fileId": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"width": {
"type": "integer",
"minimum": 1
},
"height": {
"type": "integer",
"minimum": 1
},
"alt": {
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"key",
"viewport",
"state",
"theme",
"fileId",
"sha256",
"width",
"height",
"alt"
],
"additionalProperties": false
},
"maxItems": 24
},
"inspectionLayers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"previewKey": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"kind": {
"type": "string",
"enum": [
"original",
"pixelGrid",
"paddingAreas",
"structure",
"fonts"
]
},
"fileId": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"previewKey",
"kind",
"fileId",
"sha256"
],
"additionalProperties": false
},
"maxItems": 120
}
},
"required": [
"brief",
"promptVersion",
"bundleVersion",
"bundleHash",
"model",
"repoRef",
"commit",
"previews",
"inspectionLayers"
],
"additionalProperties": false
}
},
"required": [
"idempotencyKey",
"componentId",
"registrationKey",
"manifest"
],
"additionalProperties": false
}Call this tool
Send it as POST https://www.specifywork.com/api/mcp. Authorization: Bearer <agent key>, a key that starts with sw_agent. Replace the example values with records your key can reach.
{
"jsonrpc": "2.0",
"id": "example_design_registerRevision",
"method": "tools/call",
"params": {
"name": "design.registerRevision",
"arguments": {
"idempotencyKey": "retry-1",
"componentId": "<componentId>",
"registrationKey": "<registrationKey>",
"manifest": {
"brief": "<brief>",
"promptVersion": "<promptVersion>",
"bundleVersion": "<bundleVersion>",
"bundleHash": "<bundleHash>",
"model": {
"provider": "<provider>",
"name": "<name>",
"version": "<version>",
"settingsHash": "<settingsHash>"
},
"repoRef": {
"repository": "<repository>",
"ref": "<ref>"
},
"commit": "<commit>",
"previews": [
{
"key": "<key>",
"viewport": {
"width": 1,
"height": 1,
"deviceScaleFactor": 0.1
},
"state": "<state>",
"theme": "<theme>",
"fileId": "<fileId>",
"sha256": "<sha256>",
"width": 1,
"height": 1,
"alt": "<alt>"
}
],
"inspectionLayers": [
{
"previewKey": "<previewKey>",
"kind": "original",
"fileId": "<fileId>",
"sha256": "<sha256>"
}
]
}
}
}
}Read the result before continuing
The Design operation's result.
A call returns content[0].text with the JSON result and structuredContent.result with the same value. A refused call returns isError: true and the error code in content[0].text.
A request being accepted is not proof of an external action completing. Keep correlation IDs and mutation idempotency keys unchanged across safe retries.