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.

Synthetic example · JSON
{
  "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.

Synthetic example · JSON
{
  "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.