MCP 2025-06-18

design.submitSynthesis

Submit a fenced proposal, contradiction or failure. Never activates rules.

Scopes

The agent key needs these scopes. The server also checks access to each record before returning data or changing it.

  • read:design

Input schema

This schema is shared with tools/list, including the required fields and additionalProperties rules.

Synthetic example · JSON
{
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "runId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128
        },
        "generation": {
          "type": "integer",
          "minimum": 0
        },
        "evidenceDigest": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128
        },
        "kind": {
          "const": "proposal"
        },
        "ruleKey": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128
        },
        "class": {
          "enum": [
            "functional",
            "accessibility",
            "principle",
            "taste"
          ]
        },
        "text": {
          "type": "string",
          "minLength": 1,
          "maxLength": 8000
        },
        "diff": {
          "type": "string",
          "minLength": 1,
          "maxLength": 8000
        },
        "examples": {
          "type": "array",
          "maxItems": 100,
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2000
          }
        },
        "antiExamples": {
          "type": "array",
          "maxItems": 100,
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2000
          }
        }
      },
      "required": [
        "runId",
        "generation",
        "evidenceDigest",
        "kind",
        "ruleKey",
        "class",
        "text",
        "diff",
        "examples",
        "antiExamples"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "runId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128
        },
        "generation": {
          "type": "integer",
          "minimum": 0
        },
        "evidenceDigest": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128
        },
        "kind": {
          "const": "contradiction"
        },
        "requestedPreference": {
          "type": "string",
          "minLength": 1,
          "maxLength": 2000
        },
        "currentTask": {
          "type": "string",
          "minLength": 1,
          "maxLength": 2000
        },
        "concreteRisk": {
          "type": "string",
          "minLength": 1,
          "maxLength": 2000
        },
        "guidance": {
          "type": "object",
          "properties": {
            "ruleId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "version": {
              "type": "integer",
              "minimum": 1
            },
            "digest": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            }
          },
          "required": [
            "ruleId",
            "version",
            "digest"
          ],
          "additionalProperties": false
        },
        "alternatives": {
          "type": "array",
          "minItems": 1,
          "maxItems": 2,
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2000
          }
        },
        "question": {
          "type": "string",
          "minLength": 1,
          "maxLength": 2000
        }
      },
      "required": [
        "runId",
        "generation",
        "evidenceDigest",
        "kind",
        "requestedPreference",
        "currentTask",
        "concreteRisk",
        "guidance",
        "alternatives",
        "question"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "runId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128
        },
        "generation": {
          "type": "integer",
          "minimum": 0
        },
        "evidenceDigest": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128
        },
        "kind": {
          "const": "failure"
        },
        "code": {
          "enum": [
            "INSUFFICIENT_EVIDENCE",
            "PROVIDER_UNAVAILABLE",
            "INVALID_DRAFT"
          ]
        },
        "recovery": {
          "type": "string",
          "minLength": 1,
          "maxLength": 2000
        }
      },
      "required": [
        "runId",
        "generation",
        "evidenceDigest",
        "kind",
        "code",
        "recovery"
      ],
      "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_submitSynthesis",
  "method": "tools/call",
  "params": {
    "name": "design.submitSynthesis",
    "arguments": {
      "runId": "<runId>",
      "generation": 0,
      "evidenceDigest": "<evidenceDigest>",
      "kind": "proposal",
      "ruleKey": "<ruleKey>",
      "class": "functional",
      "text": "<text>",
      "diff": "<diff>",
      "examples": [
        "<example>"
      ],
      "antiExamples": [
        "<antiExample>"
      ]
    }
  }
}

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.